Shell学习之路-(07-常用命令的使用)

常用命令的使用

常用命令的使用有很多,而且其用法也是琳琅满目,这边只列出自己经常用的一些指令,如果想看跟详细的使用方法可在网络上进行查看。

grep

grep允许对文本文件进行模式查找

1.在编程过程中,最常用的就是grep –rn “***”./,该搜索为递归搜索,会将该目录和下层的目录下的内容进行全部查找,把文件名、行号等都显示出来。
grep –rn “***” ./ > ../aaa将搜索到的结果存放在../aaa文件下面
例:

linye@ly:~/test_source/socket/tcp$ grep -rn "sockfd" ./
./client_tcp.c:15:      int sockfd;
./client_tcp.c:25:              if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
./client_tcp.c:30:              if(connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0){
./client_tcp.c:37:        if(send(sockfd, sendbuf, strlen(sendbuf), 0) < 0){
./client_tcp.c:41:              close(sockfd);

2.与ls、ps等指令结合使用
例1:

root@RBR50:/# ps |grep ping-web
 3497 root        420 S   /bin/sh /sbin/ping-web 
 9574 root         96 S   grep ping-web
root@RBR50:/# ps |grep ping-web | grep -v grep (排除有包含grep的行)
 3497 root        420 S   /bin/sh /sbin/ping-web

例2:

root@RBR50:/# ls -l | grep fir
-rw-r--r--    1 root     root         11 Jun 20  2016 firmware_language_version
-rw-r--r--    1 root     root          1 Jun 20  2016 firmware_region
-rw-r--r--    1 root     root         29 Jun 20  2016 firmware_time
-rw-r--r--    1 root     root         11 Jun 20  2016 firmware_version

更多例子可以查看Linux命令大全-grep

find

find指令用来查找文件所在位置,需要对文件的全名进行搜索,将匹配到名称一样的文件的路径列出来。
例:

linye@ly:~/test_source$ find ./ -name client_tcp.c
./socket/tcp/client_tcp.c
./socket/pthread/client_tcp.c

更多例子可以查看Linux命令大全-find

awk

awk在一个文本文件中抽取自己需要的数据包,一般是跟grep和sed配合使用。

1.使用空格分隔的文本数据
例:我们需要获取ping-web这个字符串,需要经过两次awk,第一次通过空格分隔来获取到/sbin/ping-web,空格的第六个字符串

root@RBR50:/# ps | grep ping-web | grep -v grep
 3605  root       420  S   /bin/sh  /sbin/ping-web
root@RBR50:/# ps | grep ping-web | grep -v grep | awk '{print$6}'
/sbin/ping-web

2.使用特殊符号来分隔数据,使用-F
通过符号“/”当做分隔符,取/sbin/ping-web的第三个

root@RBR50:/# ps | grep ping-web | grep -v grep | awk '{print$6}' | awk -F "/" '{print$3}'
ping-web

更多例子可以查看Linux命令大全-awk

3.加条件操作

例:当 6=/sbin/pingweb 6 = / s b i n / p i n g − w e b 时 , 打 印 出 该 行 的 5

root@RBR50:/# ps | grep ping-web 
3605 root        420 S   /bin/sh /sbin/ping-web 
4724 root         96 S   grep ping-web 
root@RBR50:/# ps | grep ping-web | awk ' $6 == "/sbin/ping-web" {print$5}'
/bin/sh
wc
参数含义
-c/-m显示Bytes数
-w显示字数
-l显示列数
-L最长一行的字符数

例:

linye@ly:~/test_scripts$ wc -l test_2.sh
7 test_2.sh
linye@ly:~/test_scripts$ wc -c test_2.sh
69 test_2.sh
linye@ly:~/test_scripts$ wc -m test_2.sh
69 test_2.sh
linye@ly:~/test_scripts$ wc -w test_2.sh
17 test_2.sh
linye@ly:~/test_scripts$ wc -L test_2.sh
25 test_2.sh
shift

shift即完成参数的左移,如shift 2,即左移两位, 3 3 变 成 1;不加参数shift及左移1位。

sed

-i :直接修改读取的文件内容,而不是输出到终端。

sed -i '1d' a.txt删首行
sed -i '$d' b.txt删尾行
sed -i 's/[ ]*//g' c.txt删空格
sed -i '/^$/d' d.txt删空行
sed -i 's/^.\{19\}//g' .txt删每行的前面19个字符
sed -i '/^[0-9]*$/d' a.txt删包含数字的行
sed -i '1,2d'a.txt删2行
sed -i '/love/d' a.txt删包含string的行
文件内:%s/\n/ /g   将\n换成空格,实现多行合并
sed ':a;N;$!ba;s/\n/ /g'
tr "\n" " "

常用命令的使用的分析就到这边,有感悟时会持续会更新。

注:以上内容来自C语言中文网及本人在使用过程的一些理解整理。如有侵权,请及时通知我,我将马上删除,如有错误之处也请指出,进行探讨学习。文章只是起一个引导作用,详细的数据解析内容还请查看Shell相关教程,感谢您的查阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值