- 标准输入(stdin): 代码0,使用<和<<表示。
- 标准输出(stdout): 代码1,使用>和>>表示。
- 标准错误输出(stderr):代码为2,使用2>和2>>表示。
- 当文件不存在时,系统会自动创建,并将数据流输出到指定文件内。
- 当文件存在时,使用>,系统会将文件先清空,然后再将数据写入。
- 当文件存在时,使用>>,系统不清空文件数据,直接累加写入。
- 1> :以覆盖的方法将“正确的数据”输出到指定的文件或设备上
- 1>>:以累加的方法将“正确的数据”输出到指定的文件或设备上
- 2> :以覆盖的方法将“错误的数据”输出到指定的文件或设备上
- 2>>:以累加的方法将“错误的数据”输出到指定的文件或设备上
- 如果仅存在>,默认表示的是代码1
# 将标准输出与错误输出分别存到不同的文件
cmd 1> right_output.txt 2> err_output.txt
# 将标准输出与错误输出存到同一个文件
cmd > output.txt 2>&1
# /dev/null: 相当于垃圾桶,如果错误信息不显示或存储,可以使用这个直接丢弃。
cmd 2> /dev/null
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat > catfile
1112^H
222
333
^C
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat catfile
1112
222
333
cat > catfile < host.txt
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat > catfile << "end"
> 111
> 222
> 333
> 444
> end
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat catfile
111
222
333
444
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# ls; grep "apple" host.txt
bin caterror catfile cheng_blog end history.txt host.txt install_python regular_express.txt rootfile.txt test vitest
apple is my favorite food.
- cmd1 && cmd2: 若cmd1执行完毕且正确执行则开始执行cmd2, 若cmd1执行完毕且为错误则cmd2不执行。
- cmd1 || cmd2: 若cmd1执行完毕且正确执行则cmd2不执行,若cmd1执行完毕且为错误则开始执行cmd2。
将前一个命令的标准输出作为下一个命令的标准输入进行处理。
以行为单位,将字符串进行切割,提取
- -d: 后面接分隔字符
- -f: 依据-d切分后,取出第几段
- -c: 以字符的单位取出固定字符区间
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo $PATH | cut -d ':' -f 1
/usr/local/sbin
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo $PATH | cut -d ':' -f 2
/usr/local/bin
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo $PATH | cut -c 17-
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt
192.168.1.1 host1.class.net host1
192.168.1.2 host2.class.net host2
192.168.1.3 host3.class.net host3
192.168.1.4 host4.class.net host4
192.168.1.8 host8.class.net host8
192.168.1.5 host5.class.net host5
192.168.1.6 host6.class.net host6
192.168.1.7 host7.class.net host7
192.168.1.8 host8.class.net host8
192.168.1.8 host8.class.net host8
192.168.1.8 host8.class.net host8
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | cut -c -11
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.8
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.8
192.168.1.8
cut是将行数据中需要的数据提取出来,grep是将我们指定条件的行数据过滤出来。
- -i:忽略大小写
- -A:后面接数字,after,除了命中的那行,后面几行也显示出来
- -B:后面接数字,before,除了命中的那行,前面面几行也显示出来
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | grep host3
192.168.1.3 host3.class.net host3
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | grep -i HOST3
192.168.1.3 host3.class.net host3
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | sort
192.168.1.1 host1.class.net host1
192.168.1.2 host2.class.net host2
192.168.1.3 host3.class.net host3
192.168.1.4 host4.class.net host4
192.168.1.5 host5.class.net host5
192.168.1.5 host5.class.net host5
192.168.1.5 host5.class.net host5
192.168.1.5 host5.class.net host5
192.168.1.5 host5.class.net host5
192.168.1.6 host6.class.net host6
192.168.1.7 host7.class.net host7
192.168.1.8 host8.class.net host8
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | sort | uniq
192.168.1.1 host1.class.net host1
192.168.1.2 host2.class.net host2
192.168.1.3 host3.class.net host3
192.168.1.4 host4.class.net host4
192.168.1.5 host5.class.net host5
192.168.1.6 host6.class.net host6
192.168.1.7 host7.class.net host7
192.168.1.8 host8.class.net host8
- -l: 统计行数
- -w: 统计英文单字
- -m: 统计多少字符
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat host.txt | wc -l
12
- 按照大小切分文件 :split -b 100m 文件名
- 按照行数切分文件 :split -l 10000 文件名