Linux 符号
普通符号
参数:
符号 | 含义 |
---|---|
; | 多个命令的分隔符 |
/ | 根或者路径的分隔符 |
.. | 上一级目录 |
. | 当前目录 |
~ | 用户的家目录 |
| | 管道,通过管道把前一个命令的输出交给后一个命令继续处理 |
{} | 可以配合echo打印序列 echo {1…6},用途比较广泛 |
示例:
[root@localhost ~]# cat anaconda-ks.cfg | grep Root
# Root password
[root@localhost ~]# echo {1..6}
1 2 3 4 5 6
# ; 会将两个命令都执行一遍,即打印两次内容
[root@localhost ~]# ll; cat anaconda-ks.cfg
重定向符号
输入重定向
功能:标准输入/输入重定向:输入重定向用于改变命令的输出,指定输出内容,后跟文件名.
参数:
符号 | 含义 |
---|---|
命令 < 文件 | 将制定文件作为命令的输入设备 |
命令 << 分解符 | 表示从标准输入设备中读入,直到遇到分解符才停止(读入的数据不包括分解符) ,这里的分解符其实就是自定义的字符串 |
命令 < 文件1 > 文件2 | 将文件1作为命令的输入设备,该命令的执行结果输出到文件2中 |
示例:
以/etc/passwd 文件为例,执行如下命令:
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
# 加入 <
[root@localhost ~]# cat < /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
# 输出结果同上面命令相同
/*注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码 是以/etc/passwd 文件作为输出设备*/
示例2:<< 分解符
[root@localhost ~]# cat << EOF
> 1
> 2
> 3
> 4
> EOF
/ 当指定了EOF为分解符后,只要不输入EOF分解符,就一直可以输出数据/
示例3:<>
[root@localhost test]# touch a.txt
[root@localhost test]# cat </etc/passwd> a.txt
[root@localhost test]# cat a.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/ 通过重定向 /etc/passwd 作为输入设备,并将/etc/passwd 文件中的内容 输出重定向到a.txt中,最终实现了将 /etc/passwd 文件中的内容复制到了 a.txt文件中/
输出重定向
备注:相较于输入重定向,使用输出重定向的频率更高,并且和输入重定向不同的是,输出重定向还可以细分为标准输出重定向和错误输出重定向两种。
参数:
符号 | 含义 |
---|---|
命令 > 文件 | 将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,则会清空原有数据,再写入新数据 |
命令 >> 文件 | 将命令执行的标准输出结果重定向输出追加到指定的文件中,如果该文件已包含数据,则在文件的最后面写入新数据 |
命令 n >& m | 将输出文件n和m合并 |
示例:
[root@localhost test]# echo "Thisi is new file" > b.txt
[root@localhost test]# cat b.txt
Thisi is new file
# >> 追加
[root@localhost test]# echo "Add a content" >> b.txt
[root@localhost test]# cat b.txt
Thisi is new file
Add a content
# 输入并输出重定向
[root@localhost test]# cat b.txt
root:x:0:0:root:/root:/bin/bash
[root@localhost test]# cat < b.txt > c.txt
[root@localhost test]# cat c.txt
root:x:0:0:root:/root:/bin/bash
深入了解重定向
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
- 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
- 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
- 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
参数:
符号 | 含义 |
---|---|
命令 2> 文件 | 将命令执行的标准错误输出结果重定向输出到指定的文件中,如果该文件已包含数据,则会清空原有数据,再写入新数据 |
命令 2>> 文件 | 将命令执行的标准错误输出结果重定向输出追加到指定的文件中,如果该文件已包含数据,则在文件的最后面写入新数据 |
命令 >> 文件 2>&1 | 将标准输出或错误输出写入到指定文件,如果该文件中已包含数据,新数据将写入到原有内容的后面,注意,第一种格式中,最后的2>&1是一体的,可以认为是固定写法 |
/dev/null | 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null |
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
示例:
[root@localhost test]# cat b.txt >> c.txt 2>&1
# /dev/null
[root@localhost test]# cat b.txt >> c.txt 2>&1 /dev/null