bash的I/O重定向及管道

程序:指令+数据

                   读入数据:Input

                   输出数据:Output

         打开的文件都有一个fd:filedescripter(文件描述符)

         标准输入:keyboard,0

         标准输出:monitor,1

         标准错误输出:monitor,2

         I/O重定向:改变标准位置

         输出重定向:command>new_pos,command >>new_pos

                   >:覆盖重定向,目标文件中的原有内容会被清除。

                   >>:         增加重定向,新内容会追加至新目录文件尾部。

                   ls  /etc > /tmp/etc.out会新建/tmp/etc.out文件并保存ls /etc的结果

#set –C:禁止将内容覆盖输出至已有文件中,在使用>会报错。

强制覆盖:>

ls  /etc > /tmp/etc.out

-bash: /tmp/etc.out: cannot overwrite existing file

使用>>即可,追加。

#set +C:

2>:覆盖重定向错误输出数据流。

2>>:追加重定向错误输出数据流。

标准输出和错误输出各自定向至不同位置:

         command>/path/to/file.out2> /path/to/err.r.out

                   失败了报错至/path/to/err.r.out

         cat /etc/ssss  2> /tmp/issue.txt

/etc/ssss是不存在的目录,执行cat /etc/ssss会报错,是错误输出流,加上2就可以把错误输出流重定向到/tmp/issue.txt。

合并标准输出和错误输出为同一个数据流进行重定向:

&>:覆盖重定向

&>>:追加重定向

         command >  /pth/to/file.txt 2> &1

         command >>  /pth/to/file.txt 2>> &1

输入重定向:<

tr命令:转换或删除字符串

         tr [OPTION] … SET1[SET2]

         tr abc ABC </etc/fstab会把/etc/fstab打印并把abc转成ABC

HERE Documentation:<<

     #cat <<  EOF

     #cat >/path/to/somefile << EOF

  管道:

         command1|command2 |command3 |…

         最后一个命令会在当前shell进程的子shell进程中进行。

echo"$PATH" | tr 'a-z' 'A-Z'

echo"$PATH"查看环境变量。

echo"$PATH" |tee /tmp/path.out | tr 'a-z' 'A-Z'

         将环境变保存至/tmp/path.out,并将a-z转换成A-Z显示。

注意/tmp/path.out中还是a-z

练习:1.将/etc/passwd文件中的前五行转换为大写保存至/tmp/passsws.out文件中。

                   head-n 5 /etc/passwd | tr 'a-z' 'A-Z' > /tmp/passwd.out

2.将登陆至当前系统上的用户的前三位的信息转换为大写后保存至/tmp/who.out文件中。

     who | tail -n 3 |tr 'a-z' 'A-Z' > /tmp/who.out

文本操作工具:wc,cut,sort,uniq

         wc命令:wc - printnewline, word, and byte counts for each file

                   wc/etc/passwd

                   -l:lines

                   -w:words

                   -c:characters

         cut命令:

                   cut[OPTION]…[FILE]…

                   -d:delimiter:指明分隔符

                   -f:fileds:

                            #:第#个字段

                            #,#[,#]:离散的多个字段,例如1,3,6

                            #-#:连续的多个字段,例如1-6

                            混合使用:1-3,7

                   --output-delimiter=string

         sort命令:

                   sort[OPTION] …FILE…

                  -f:忽略字符大小写

                   -r:逆序

                   -t:字段分隔符

                   -k:以指定字段为标准排序

                   -n:以数值大小进行排序

                   -u:uniq,排序后去重

         unique命令:

                   unique[OPTION]…[FILE]…

                            -c:显示每行重读出现的次数

-d:仅显示重复过的行

-u:仅显示不曾重复的行

                   连续且完全相同为重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值