首页 > 代码库 > Linux学习之|、>、||符号

Linux学习之|、>、||符号


连续组合命令:

1.连续执行命令,命令之间不存在判断的符号;

例如:sync;sync;shutdown -h now -----连续同步磁盘后再关机,这里不管前面命令是否执行成功

2.连续执行相关性命令,前面的命令执行成功后才会继续执行下一条连接符&&

例如:ls /tmp/abc && touch /tmp/abc/test.txt  ---如果不存在该目录那么后面也不会创建文件

3.连续命令前面命令执行失败继续往下执行连接符||

例如:ls /tmp/abc || mkdir /tmp/abc

以上的命令可以组合使用:ls /tmp/test && echo "exist" || echo "no exist" 

例如:ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/test.txt

命令的自由组合实现不同的功能


数据流重定向:

1.将输出正确和错误的信息分别保存到不同的文件中。

find /home/ -name .bashrc >/tmp/abc/list_right 2>/tmp/abc/list_error

技术分享


2.将产生的错误信息忽略不显示也不存储,可以将输出重定向到/dev/null这个黑洞设备。

find /home -name .bashrc 2>/dev/null

其实大多用在一些量大但没有什么有用信息的输出上。在日常工作中可以将一些操作成功的信息从输出信息中过滤出来重定向到指定的文件中方便查询排错,或者下一步操作


3.将输出的正确或者错误信息都写到一个文件中,以下的两句的执行结果一样。

find /home -name .bashrc >/tmp/abc/list 2>&1

find /home -name .bashrc &>/tmp/abc/list

技术分享


4.将指定文本中的内容重定向到新建的文件中

cat >list_error <test.txt  也就是将test.txt中的内容复制到了list_error中<会覆盖原本内容


管道命令的应用结合:

1.按照顺序处理标准正确输出less

ls -al /etc/ | less  输出面屏连续显示


2.显示出按照:分割开的第2足字符cut

echo $PATH | cut -d ‘:‘ -f 2 等同于 echo $PATH | awk -F: ‘{print $2}‘

技术分享


3.剪切出export的12列字符后的所有字符

export | cut -c 12-

技术分享

export | cut -c 12-16 只显示12-16列的内容,即每行5个字符。

技术分享

对比输出内容就知道怎么回事是吧?


4.显示之前登录过的所有用户cut、grep

last | cut -d ‘ ‘ -f1  这里-d是自定义分割符,-f1显示第一列


5.显示出非root的登录用户

last | grep -v ‘root‘

技术分享


6.将man.config中的MANPATH取出来加以颜色grep

grep --color=auto ‘MANPATH‘ /etc/man.config

技术分享


7.将系统下的用户账号排序sort

cat /etc/passwd | sort -------默认按首字母

cat /etc/passwd | sort -t ‘:‘ -k 3 ---------------以:符号分开的第三列排序

cat /etc/passwd | sort -t ‘:‘ -k 3 -n ------------以:符号分开的第三列的数字来排序

cat /etc/passwd | sort -t ‘:‘ -k 3 -n | cut -d ‘:‘ -f3 显示第三列

技术分享


8.列出登录过此系统的所有用户名

last | cut -d ‘ ‘ -f1 | sort 

last | cut -d ‘ ‘ -f1 | sort | uniq   ----------不重复的列出uniq

last | cut -d ‘ ‘ -f1 | sort | uniq -c  --------不重复的列出并统计次数

技术分享

last | cut -d ‘ ‘ -f1 | sort | uniq -c | sed ‘s/^/&统计:/g‘  -----这样更直观嘛

技术分享

注意:这里的‘‘符号中间是空格符,否则会报错


9.统计出文档中的行、字数、字符数wc

cat /etc/man.config | wc

技术分享

last | grep [a-zA-Z] | grep -v ‘wtmp‘ | wc -l 统计出登录系统的总人次取出非空白行和排除wtmp后统计的行数


10.将输出保存到last.list中去tee

last | tee last.list | cut -d ‘ ‘ -f1 -----先将输出保存到文档中后,输出分割后的第一列


11.保存一份到文件中并显示在屏幕上

ls -l /home/ | tee /tmp/homefile | more

ls -l /etc/ | tee -a /tmp/etcfile | more  -a参数可以使输出追加到文件中而不是覆盖文件内容


12.将输出中的小写字母全部替换成大写tr

last | tr ‘[a-z]‘ ‘[A-Z]‘  ---可用于解决文档内容规范化问题,利于后期处理

cat /etc/passwd | tr -d ‘:‘  -----------删除文档中的:号

技术分享

cat -A  /etc/passwd

技术分享

cp /etc/passwd /root/passwd && unix2dos /root/passwd  ---将文本复制并以dos断行保存

技术分享

cat /root/passwd | tr -d ‘\r‘ >/root/passwd.linux  ---去掉转换后的文本中的断行符并保存


file /etc/passwd /root/passwd 比较两个文档格式


13.显示出文档中的特殊按键

cat -A /etc/man.config  ---显示出文档中的特殊的字符$^等

技术分享

cat /etc/man.config | col -x | cat -A | more ----------将原来的[tab]键替换成空格

技术分享

tail -n 20 /etc/man.config | col -x | cat -A | tr -d ‘$‘ --还可以去掉尾部的$符号


14.将有相同部分的文件整合join

join -t ‘:‘ /etc/passwd /etc/shadow -----将第一字段相同的两文档连接在一起

技术分享

join -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/group ---将第一个文档第4字段和第二文档的第3字段连接


15.将文件中对应的两行连接在一起paste

paste /etc/passwd /etc/shadow  --组合在一起显示出来

技术分享

cat /etc/group | paste /etc/passwd /etc/shadow -| head -n 3 ----只取输出的前3行


16.文档中的[tab]按键,用cat -A显示成^I

grep ‘^MANPATH‘ /etc/man.config | head -n 3 | cat -A

技术分享

grep ‘^MANPATH‘ /etc/man.config | head -n 3 | expand -t 6 - | cat -A 将以上的^I换成6个空格

技术分享


17.进入到/tmp/文件下,将文件切割成30K一份,名字termcap自动添加split

cd /tmp/;split -b 30k btts_14_to.zip btts_14_to.zip 

技术分享

cat termcap* >>termcapback  ------------------------将多个文档组合成一个文件



本文出自 “linux命令之sed” 博客,请务必保留此出处http://beforce.blog.51cto.com/3335637/1917016

Linux学习之|、>、||符号