绝对定向 c++_【007】Linux重定向、管道符及环境变量(看这一文就够了)
总第83篇
通过前面的几篇文章,我们已经掌握了数十个常用的Linux
命令,若不能将这些命令进行组合使用,则无法提升工作效率。本文就梳理相关的方法,将各个命令组合起来使用,从而大大提升工作效率,方便我们的工作与运维。
1.输入输出重定向
输入重定向是指把文件导入到命令中;输出重定向指将原本要输出到屏幕的数据信息写入到指定文件中。在日常学习和工作中,我们使用输出重定向的频率更高,因此又将其分为标准输出重定向和错误输出重定向,以及清空写入和追加写入两种模式。
- 标准输入重定向
(STDIN,文件描述符为0)
:默认为键盘输入,也可从其他文件或命令输入; - 标准输出重定向
(STDOUT,文件描述符为1)
:默认输入到屏幕; - 错误输出重定向
(STDERR,文件描述符为2)
:默认输出到屏幕;
对于输入重定向,用到的符号及作用如下表所示:
符号 | 作用 |
---|---|
命令<文件 | 将文件作为命令的标准输入 |
命令<<分界符 | 从标准输入中读取,直到遇见分界符才停止 |
命令<文件1>文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
对于输出重定向,用到的符号及作用如下表所示:
符号 | 作用 |
---|---|
命令>文件 | 将标准输出重定向到一个文件中(清空模式) |
命令 2>文件 | 将错误输出重定向到一个文件中(清空模式) |
命令>>文件 | 将标准输出重定向到一个文件中(追加模式) |
命令 2>>文件 | 将错误输出重定向到一个文件中(追加模式) |
命令>>文件 2>&1 或 命令 &>>文件 | 将标准输出和错误输出共同写入到文件中(追加模式) |
注意:对于标准输出重定向,可以省略文件描述符1
不写,而错误输出重定向的文件描述符2
是必须要写的。
下面是一些常用的输出操作:
## 将man touch 输出到hello.txt文件
# man touch > hello.txt
## 将信息覆盖写入到文件
# echo "hello world 2020" > hello.txt
## 将信息追加写入到文件
# echo "this is RedHat Linux 8" >>hello.txt
##将命令的错误信息写入到文件
# ls -l xxxxxxx 2> ./strerr.txt
对于输入重定向,用到的相对比较少,这里举一个例子:
## 把hello.txt文件导入给命令,统计一下文件的行数
# wc -l < hello.txt
其实,上面这个例子等同于cat hello.txt | wc -l
,这是管道符的命令组合。
2. 管道命令符
管道命令符是将前一个命令原本要输出到屏幕上的标准数据当作是后一个命令的标准输入,其格式为命令A | 命令B |...
。
管道命令符的用法非常多,这里举几个例子:
## 统计当前系统中被限制登录用户的个数
# grep "/sbin/nologin" /etc/passwd | wc -l
## 用翻页的形式查看帮助文档
# man grep | more
如上图所示,以翻页的形式打开帮助文档,此时可以按空格
或回车
来进行翻页浏览,非常方便。
对于在编写自动化脚本时,有时候遇到密码验证过程,此时可以使用管道命令符
来解决。
3. 命令行的通配符
通配符就是通用的匹配信息符号,和我们使用过的正则表达式类似,比如*
号代表匹配零个或多个字符,?
号代表匹配单个字符,[0-9]
匹配0~9之间的单个数字,[acd]
代表匹配a、c、d三个字符中的任意一个字符。
这些命令通配符可以在输入命令时灵活使用,以提升工作效率。
4. 常用的转义字符
为了能够更好地理解用户的表达,Shell
解释器还提供了特别丰富的转义字符来处理输入的特殊数据,其中工作中最常用的有四个。
- :使反斜杠后面的字符变为单纯的字符串;
''
:单引号转义其中所有的变量为单纯的字符串;""
:双引号保留其中的变量属性,不进行转义处理;- `:反引号将其中的命令执行后返回结果;
下面我们定义一个变量PRICE
并赋值为99
,然后用双引号括起来,输出到屏幕上,如下图所示。注意,定义变量并赋值,中间不能不空格。
若要在输出信息中也显示出$
符号的话,就要用到转义,因为$$
会直接显示当前程序的进程ID
码,如下图所示。
当需要某个命令的输出值时,可以用反引号将此命令包起来,执行即可。下面示例了返回本机Linux
版本信息。
5.Linux
系统中重要的环境变量
在Linux
系统中,变量的名称一般都是大写的,这是一种约定俗成的规范,我们可以直接通过变量名提取到变量的值。在Linux
系统中,一切都是文件,命令也不例外,那么在用户执行了一条命令后,系统发生了什么呢?简单来说,命令在Linux
系统中执行分为四个步骤:
- 第一步:判断用户是否以绝对或相对路径的方式输入命令,若是则直接执行;
- 第二步: 系统检查用户输入的命令是否是“别名命令”。可以用
alias
命令创建一个属于自己的命令别名,其格式为alias 别名=命令
;也可以用unalias
命令取消一个命令别名,其格式为unalias 别名
。 - 第三步:解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行,而用户绝大部分输入的外部命令,这些命令交由第四步处理;
- 第四步:系统在
PATH
指定的多个路径下查找用户输入的命令文件。PATH
是由多个路径值组成的变量,每个路径值之间用:
冒号隔开。
Linux
系统中,可以使用env
命令查看系统中所有的环境变量,其中最重要的10
个环境变量如下表所示:
环境变量名称 | 说明 |
---|---|
HOME | 用户的主目录 |
SHELL | 用户在使用的shell解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言名称 |
RANDOM | 生成一个随机数 |
PS1 | Bash解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
对于Linux
系统是多用户多任务操作系统,因此一个相同的变量对于不同的用户会有不同的值。我们也可以自己创建一个变量,来满足自己的工作需要,只是这个变量是只属于自己的,若想提升为全局变量
,可以使用export 变量名
命令,这样其它用户也可以使用了。
本文到此结束!下篇继续!
如果对你有帮助,请随手 点赞 或 赞赏!关注本专栏,更多干货与你分享。
=======================================================
欢迎【关注、私信 @武三郎】。我们一起交流一起进步。
绝对定向 c++_【007】Linux重定向、管道符及环境变量(看这一文就够了)相关推荐
- linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量
原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...
- Linux 执行文件 path,linux可执行文件添加到PATH环境变量的方法
linux命令行下面执行某个命令的时候,首先保证该命令是否存在,若存在,但输入命令的时候若仍提示:command not found 这个时候就的查看PATH环境变量的设置了,当前命令是否存在于PAT ...
- linux e盘路径,Linux添加路径到PATH环境变量
Linux添加路径到PATH环境变量 一.PATH环境变量 PATH变量是Linux系统存储可执行文件搜索路径的地方,等价于Windows系统的Path变量,由于其他操作系统我没用过,不清楚详细情况 ...
- linux下设置java,Linux下设置java的环境变量
Linux上设置java的环境变量 首先安装JDK,网上有很多教程,这里就不再赘述,有一点,安装的时候要注意下载和自己的操作系统位数相一致的JDK文件. 1.uname -a 查看自己系统是x64的还 ...
- Linux内部字段分离符环境变量IFS
Linux内部字段分离符环境变量IFS:用于bash shell,默认bash shell 会将空格.制表符/t.换行符/n 当成字段分隔符 arr=(/pubsentiment?action=che ...
- Linux——MySQL安装及配置环境变量
Linux--MySQL安装及配置环境变量 1.安装包准备: 2.在虚拟机查询主机IP: 3.运行Xftp,新建一个会话,命名为MySQL安装: 4.新建一个会话,命名为MySQL安装: 5.把安装包 ...
- linux如何用命令寻找环境变量?
linux如何用命令寻找环境变量? 要在Linux中查找环境变量,您可以使用以下命令: printenv:此命令将列出所有已设置的环境变量. env:此命令也将列出所有已设置的环境变量. echo $ ...
- linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法
[感谢:http://www.codesec.net/view/459539.html] 如果在安装Anaconda的过程中没有将安装路径添加到系统环境变量中,需要在安装后手工添加: 1.在终端输入$ ...
- linux配置定时任务的用户环境变量
linux配置定时任务的用户环境变量 在Linux系统中,执行定时任务时,默认加载的是用户环境变量 ~/.bashrc ,不会加载系统变量,而要使用系统变量,可以用如下方式: # Example ...
最新文章
- tf.placeholder类似函数中的形参
- Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建
- python如何实现办公自动化培训_基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)...
- kotlin 第一个程序_Kotlin程序添加两个矩阵
- wpf控件样式管理示意图
- 电脑各类快捷键及运行命令大全
- Android 倒计时器工具类
- 留言板显示服务器错误,动易Cms:解读SiteFactory 留言板出现:服务器无响应,错误代码:500-动易Cms教程...
- openwrt路由器打印机服务器设置_OPENWRT网络打印机TCP/IP共享设置教程 以703N为例...
- 恐龙涂色游戏 - 恐龙画画世界填色游戏
- 二、从零开始学逆向之XCTF-logmein
- 输入两个实数,用一个函数求出它们之和
- TMC5160步进电机驱动芯片开发手记
- linux pv修改大小,Linux下扩容系统容量和删除unknown PV
- ADT:Queues
- windows提权常用系统漏洞与对应的补丁编号
- FSM(Finite State Machine,有限状态机)设计
- 2018.11.14 Chopin’s
- resize用法matlab,opencv的resize和matlab的imresize函数的计算
- java编程题库公众号,已获万赞
热门文章
- Python 导入requests报错No module named requests
- 【工具】CodeSmith Generator 7.0.2激活步骤
- Redis源代码分析(十)--- testhelp.h小测试框架和redis-check-aof.c 日志检测
- 常用nginx rewrite重定向-跳转实例
- centos7 mysql5.6.34_CentOS7.0环境下MySQL5.6.34安装教程
- 【论文写作】在线考试系统的设计原理如何写
- 专用efi文件包_优质设备项目来啦!山钢焦炉、济南鲍德炉料公司所属资产包转让...
- 明知道计算机是吃青春饭,为什么还有那么多人前仆后继
- python des加密文件_python DES3 加密解密
- java反射class文件_Java反射(一)Class