1 输入输出重定向
表3-2 输出重定向中用到的符号及其作用 符号 作用 命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据) 命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据) 命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面) 命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面) 命令 >> 文件 2>&1 或 命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) 输入重定向的作用是把文件直接导入到命令中。接下来使用输入重定向把readme.txt文件导入给wc -l命令,统计一下文件中的内容行数: [root@linuxprobe ~]# wc -l < readme.txt 2 注意: file命令不区分标注和错误输出 可以使用&>将全部输出写入文件 wc -l init.txt //49 init.txt ,init.txt是对象 wc -l < init.txt //49 ,此时init.txt不是对象,只是进行导入操作 << EOF end of file
2.管道命令符
管道命令符的作用也可以用一句话概括为“把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入” 如果需要将管道符处理后的结果既输出到屏幕,又同时写入到文件中,则可以与tee命令结合使用。 [root@linuxprobe ~]# ps aux | grep bash | tee result.txt root 1070 0.0 0.1 25384 2324 ? S Sep21 0:00 /bin/bash /usr/sbin/ksmtuned root 3899 0.0 0.2 26540 5136 pts/0 Ss 00:27 0:00 bash root 4320 0.0 0.0 12112 1112 pts/0 S+ 00:51 0:00 grep --color=auto bash [root@linuxprobe ~]# cat result.txt root 1070 0.0 0.1 25384 2324 ? S Sep21 0:00 /bin/bash /usr/sbin/ksmtuned root 3899 0.0 0.2 26540 5136 pts/0 Ss 00:27 0:00 bash root 4320 0.0 0.0 12112 1112 pts/0 S+ 00:51 0:00 grep --color=auto bash 统计文件夹中文件 ls > abc cat abc | wc -l ls | wc -l 管道符可以嵌套使用 命令A | 命令B | 命令C | 命令D 查看httpd服务 systemctl status httpd pidof httpd ps aux | grep ssh |
echo 1 2 3 4 5 6 //作为一个整体对象输出 echo “1 2 3 4 5 6” // 参数或变量中有空格,加" "
3.3 命令行的通配符
通配符 含义
- 任意字符
? 单个任意字符 [a-z] 单个小写字母 [A-Z] 单个大写字母 [a-Z] 单个字母 [0-9] 单个数字 [[:alpha:]] 任意字母 [[:upper:]] 任意大写字母 [[:lower:]] 任意小写字母 [[:digit:]] 所有数字 [[:alnum:]] 任意字母加数字 [[:punct:]] 标点符号 {} 没有匹配上会报错 []没有被匹配上不会报错
4 常用的转义字符
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符。 单引号(’ '):转义其中所有的变量为单纯的字符串。 双引号(" "):保留其中的变量属性,不进行转义处理。 反引号( ):把其中的命令执行后返回结果。 [root@linuxprobe ~]# echo AA BB CC AA BB CC [root@linuxprobe ~]# echo “AA BB CC” AA BB CC 两者的区别在于用户无法得知第一种执行方式中到底有几个参数。 如果参数中出现了空格,就加双引号;如果参数中没有空格,那就不用加双引号。 $$ bash PID
5 重要的环境变量
命令在Linux中的执行分为4个步骤。 第1步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是绝对路径则直接执行,否则进入第2步继续判断。 第2步:Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。 alisa haha=“nmcli connection up enp1s0” 查看环境变量 alias set env
第3步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4继续处理。可以使用“type命令名称”来判断用户输入的命令是内部命令还是外部命令: type echo builtin type uptime 第4步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置,然后Bash解释器就会乖乖地在这些位置中逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。 [root@linuxprobe ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 31: …t@linuxprobe ~]#? su - linuxprob… echo $HOME /home/linuxprobe
[root@linuxprobe ~]# mkdir /home/workdir [root@linuxprobe ~]# WORKDIR=/home/workdir [root@linuxprobe ~]# cd $WORKDIR [root@linuxprobe workdir]# pwd /home/workdir
[root@linuxprobe ~]# export WORKDIR [root@linuxprobe ~]# su linuxprobe [linuxprobe@linuxprobe ~]$ cd
W
O
R
K
D
I
R
[
l
i
n
u
x
p
r
o
b
e
@
l
i
n
u
x
p
r
o
b
e
w
o
r
k
d
i
r
]
WORKDIR [linuxprobe@linuxprobe workdir]
WORKDIR[linuxprobe@linuxprobeworkdir] pwd /home/workdir 直接在终端设置的变量能够立即生效,但在重启服务器后就会失效,因此我们需要将变量和变量值写入到.bashrc或者.bash_profile文件中,以确保永久能使用它们。
|