本文共 2213 字,大约阅读时间需要 7 分钟。
标准输入:用0表示(键盘)
标准输出:用1表示(监视器) 标准错误输出:用2表示(监视器)
>:覆盖重定向,目标文件原有的内容会被清除(set -C:禁止对已有文件进行覆盖重定 向) (>|:强制进行覆盖重定向)>>:追加重定向,目标文件原有的内容会被保留,新内容追加至结尾
2>:标准错误输出覆盖重定向2>>:标准错误输出追加重定向
命令 > 位置1 2> 位置2 (两个文件都会被创建)
命令 &> 文件或目录 或 命令 > 目录或文件 2>&1
tr命令: tr [OPTION]... SET1 [SET2]
不加选项表示将字符1中的字符替换到位置与之对应的字符2中的数据 tr "a-z" "A-Z" 把小写字母转换为大写字母 加特定选项-d,将数据中的和字符1中的数据匹配到的删除 -c或——complerment:取代所有不属于第一字符集的字符 -s或--squeeze-repeats:把连续重复的字符以单独一个字符表示; -t例如:--all例如:--all或--truncate-set1:先删除第一字符集较第二字符集多出的字符。tr [OPTION]... SET1 [SET2] < 文件 表示从给定的文件中读取内容
<< 结束符:将结束符之前的内容合并输出 用处: cat >>/tmp/tese <<EOF 可以向指定文件中写多行内容[root@weiying ~]# cat <<EOFmy name is rootmy version is `lsb_release -d`EOFmy name is rootmy version is Description: CentOS Linux release 7.4.1708 (Core)
把前一个命令的输出当做后一个命令的输入(最后一个命令会在当前shell进程的子进程中执行),标准错误输出默认不能通过管道转发,可利用2>&1 或 |& 实现
-a:追加
例:将/etc/passwd文件前五行,转换为大写后,保存至/tmp/passwd中
head -n 5 | tr "a-z" "A-Z" | tee /tmp/passwd
练习:
[root@weiying ~]# tr [:lowwer:] [:upper:] < /etc/issue > /tmp/issue.out
[root@weiying ~]# who | tr 'a-z' 'A-Z' > /tmp/who.out
[root@weiying ~]# mail -s "HELP" root <Hello:> I am `whoami`> zhe system version is `lsb_release -d`> plesas help me to check it > thanks> `cat /etc/redhat-release`> EOF
[root@weiying ~]# ls /root | tr '\n' ' '
[root@weiying ~]# echo {1..100}| tr ' ' '+'|bc
[root@weiying ~]# tr -d '\t' < win.txt
[root@weiying ~]# echo "xt.,l 1 jr#hexdumpmn 2 c*/fe 3 uz 4" | tr -d -c '0-9 " "'
[root@weiying ~]# echo $PATH | tr ":" "\n"
[root@weiying ~]# tr '0-9' 'a-j' < test
[root@weiying ~]# cat /etc/centos-release | tr -sc '[:alpha:]' '\n'
转载于:https://blog.51cto.com/13408885/2392203