Linux操作命令(中)

Linux操作命令(四)
1)which命令
在PATH变量指定的路径中搜索可执行文件的所在位置。一般来确认系统中是否安装了指定的软件。

1.1. 命令格式
which 可执行文件名称

1.2. 常用范例
$which gcc #确认是否安装gcc(显示gcc安装路径)

什么是命令?
命令可以是下面4种形式之一:
1. 是一个可执行程序
2. 是一个内建于shell自身的命令
3. 是一个shell函数
4. 是一个命令别名

2)whereis命令
用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。whereis命令还具有搜索源代码、指定备用搜索路径、搜索不寻常项的能力

2.1. 命令格式
whereis [选项] 文件

2.2. 常用参数
-b 定位可执行文件
-m 定位帮助文件
-s 定位源代码
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其他文件
-B 指定搜索可执行文件的路径
-M 指定搜索帮助文件的路径
-S 指定搜索源代码文件的路径

2.3. 常用范例
$whereis -b gcc #搜索gcc可执行文件的路径
$whereis -m gcc #搜索gcc帮助文件的路径

3)locate命令
locate命令和whereis命令相似,如果获得更全面的搜索结果,可以使用locate命令。

3.1. 命令格式
locate [选项] [搜索字符串]

3.2. 常用参数
-q 安静模式,不会显示任何错误信息
-n 至多显示n个输出
-r 使用正则表达式做寻找的条件
-v 显示版本信息

3.3. 常用范例
$locate /etc/sh* #搜索etc目录下所有以sh开头的文件
$locate /etc/*lou* #搜索包含lou的文件(etc目录下)

Linux操作命令(五)
1)find命令(一)
find命令主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

1.1. 命令格式
find [选项] [搜索文件] [表达式]
默认路径是当前目录,默认表达式为-print
表达式可能由下列成份组成:操作符、选项、测试表达式以及动作

1.2. 常用参数
-print find命令将匹配的文件输出到标准
-exec find命令对匹配的文件执行该参数所给出shell命令
-name 按照文件名查找
-type 查找某一类型的文件
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命 令忽略
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n +n 按照文件的更改时间来查找文件

1.3. 常用范例
$find . -print #打印当前目录下的文件目录表
$find . -name "*.txt" -print #打印当前目录下所有以.txt结尾的文件名。注:-iname作用与-name不一样,不同在于
-iname会忽略字母大小写

2)find命令(二)
根据文件类型来查找文件,使用-type选项,常见find文件类型如下:
b 块设备文件 d 目录 | 符号连接
c      字符设备文件 f 普通文件

根据文件权限查找文件,使用-perm选项,所有者使用-user选项
find命令可以通过逻辑操作符来创建更复杂的逻辑关系
-and 匹配操作符两边的测试条件都是真
-or 匹配操作符两边的任一个测试条件为真
-not 匹配若操作符后面的测试条件是假

2.1. 常用范例
$find . -type | -name "*.txt" -print #打印当前目录下所有以.txt结尾的符号连接
$find . -type f -name "*.txt" -perm 777 #打印当前目录下所有权限为777的php文件
$find . -type f -user root #打印当前目录下root用户拥有的所有文件
$find . -type f \(! -perm 777 -and ! -perm 644 \) #打印当前目录下权限不是777和664的所有文件

3)find命令(三)
介绍如何使用find命令的-exec选项来实现对查找到的文件执行指定的动作命令

3.1. 常用范例
$find . -name "*.php" -exec ls -l {} \; #找到当前目录下所有php文件,并显示其详细信息

{}其实是一个占位符,在find命令的执行过程中会不断地替换成当前找到的文件,相当于“ls -l 找到的文件”
\;是-exec的命令结束标记,因为规定-exec后面的命令必须以;结束,但;在shell中有特殊含义,必须要转义,所以写成\;

$find . -name '*.c' -exec cat {} \; > all.c #查找到所有的c语言代码文件,然后将这些文件内容写入到一个文件中

$find . -name '*.c' -exec ./command.sh {} \; #将多个命令写入command.sh后,在-exec中使用这个脚本,执行多条命令

4)xargs命令
xargs命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表

4.1. 命令格式
command | xargs [选项] [command]

xargs命令应紧跟在管道操作符之后,因为它以标准输入作为主要的源数据流

4.2. 常用参数
-n 指定每行最大的参数数量
-d 指定分隔符

4.3. 常用范例
$cat a.txt | xargs #将多行输入转换为单行输出
$echo '1 2 3 4 5 6 7' | xargs -n 3 #将单行输入转换为多行输出
$cat b.txt | xargs -d i -n 3 #指定分隔符为i

Linux操作命令(六)
1)wc命令
wc命令是一个统计的工具,主要用来显示文件所包含的行、字和字节数

1.1. 命令格式
wc [选项] [文件]

1.2. 常用参数
-c 统计字节数
-l 统计行数
-m 统计字符数,这个标志不能与-c标志一起使用
-w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 打印最长行的长度

1.3. 常用范例
$wc -c c.txt #统计文件的字节数
$wc -l c.txt #统计文件的行数
$wc -m c.txt #统计文件的字符数
$cat c.txt | wc -c
$cat c.txt | wc -l
$cat c.txt | wc -m
$ls /bin | wc -l #统计/bin目录下命令个数

2)grep命令
用来找到文件中的匹配文本,并且能够接受正则表达式和通配符,同时可以用多个grep命令选项来生成各种格式的输出
grep工作方式为,在一个或多个文件中搜索字符串模板,如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2

2.1. 命令格式
grep [选项] pattern [file]

2.2. 常用参数
-c 计算找到‘搜索字符串’(即pattern)的次数
-i 忽略大小写
-n 输出行号
-v 反向选择,打印不匹配的行
-r 递归搜索
-- color=auto 将找到的关键词部分加上颜色显示

2.3. 常用范例
#就/etc/passwd文件中出现root的行取出来,关键词部分加上颜色
$grep "root" /etc/passwd --color=auto
$cat /etc/passwd | grep "root" --color=auto

$grep -v "root" /etc/passwd | grep -v "nologin" #将/etc/passwd文件中没有出现root和noligin的行取出来
$grep -r "main()" . #在当前目录下递归搜索文件中包含main()的文件,经常用于查找某些函数位于哪些源代码文件中

3)正则表达式与grep命令
正则表达式 描述 示例
  ^ 行起始标记 ^shiyan匹配以shiyan起始的行
  $ 行尾标记 $shiyan匹配以shiyan结尾的行
  . 匹配任意一个字符 a.c匹配aac、abc,但不匹配abbc
  [] 匹配包含在[字符]之中 ab[cd]匹配abc或abd
的任意一个字符
  [-] 匹配[]指定范围内 [1-5]匹配1-5的任意一个字符
的任意一个字符
  [^] 匹配除[^字符]之外 1[^01]匹配12、13,但不匹配10,11
的任意一个字符
  {n} 匹配之前的项n次 [0-9]{2}匹配任意一个两位数,相当于[0-9][0-9]
  {n, } 之前的项至少需要 [0-9]{2, }匹配任意一个两位数或更多位的数字
匹配n次
  {n,m} 指定之前的项需要匹配 [0-9]{2,5}匹配从两位数到五位数之间的任意以一个数字
的最小和最大次数
  ? 匹配之前的项1次或0次 shiy?an匹配shiyan或shian
  * 匹配之前的项0次或多次 shiy*an匹配shian、shiyan、shiyyan
  + 匹配之前的项1次或多次 shiy+an匹配shiyan、shiyyan
  () 创建一个用于匹配的子串 ma(in)?匹配ma或main
  | 匹配|两边的任意一项 Dec(1st|2nd)匹配Dec1st或Dec2nd
  \ 将上面的特殊字符进行转义 a\+b匹配a+b

3.1. 常用范例
$grep '^..j.r$' linux.words #利用linux自带词典查找一个五个字母的单词,第三个字母为j,最好一个字母为r

#固定电话格式基本是带有0的区号+连接符“-”+电话号码,另外还可以有分机号,区号有3位、4位,电话号码有7位和8位
$grep '^0[0-9]{2,3}-[0-9]{7,8}(-[0-9]{3,4})?$' telphone.txt
区号:前面一个0,后面跟2-3位数字,即0[0-9]{2,3}
电话号码:7-8位数字,即[0-9]{7,8}
分机号:3-4位数字,即[0-9]{3,4}

Linux操作命令(七)
1)cut命令
cut命令是一个将文本按列进行切分的小工具,它可以指定分隔每列的定界符。如果一行数据包含多个字段(多列),通过cut命令提前其中的一列或多列。

1.1. 命令格式
cut [选项] [文件名]

1.2. 常用参数
-b 以字节为单位进行分割
-c 以字符为单位进行分割
-d 自定义分隔符,默认为制表符
-f 自定义字段
--completent 抽取整个文本,除了那些由-c或-f指定的文本

1.3. 常用范例
$cut -f 1,3 -d ' ' student.txt #取出 student.txt文件中的第一列和第三列
$cut -f 1 -d ' ' student.txt #取出第一列
$cut -f 1-3 -d ' ' student.txt #取出前3列
$cut -f 1 -d ' ' student.txt --complement #取出除了第一列的其他所有列

2)paste命令
paste命令与cut相反,他会添加一个或多个文本列到文件中。它通过读取多个文件,然后把每个文件中的字段整合成单个文本流,输入到标准输出。

2.1. 命令格式
paste [选项] [文件名]

2.2. 常用参数
-s 就每个文件合并成行而不是按行黏贴
-d 自定义分隔符,默认为制表符

2.3. 常用范例
$paste student.txt telphone.txt #将两个文件中的内容按列拼接
$paste student.txt telphone.txt -d ':' #就两个文件中的内容按列拼接,指定分隔符为':'
$paste -s student.txt telphone.txt #将两个文件中的内容各自接成一行

3)tr命令
tr命令用来更改字符,把它看作是一种基于字符的查找和替换操作。换字是一种把字符从一个字母转换为另一个字母的过程。
tr从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出
tr只能通过stdin(标准输入),而无法通过命令行参数来接受输入
tr是translate(转换)的缩写

3.1. 命令格式
tr [选项] SET1 STE2
将来自stdin的输入字符从SET1映射到SET2,并将其输出写入stdout(标准输出)。SET1和SET2是字符类或字符集。如果两个字符集的长度不相等,那么SET2会不断重复其最后以一个字符,直到长度与SET1相同。如果SET2的长度大于SET1,那么在SET2中超出SET1的那部分字符则全部被忽略。

3.2. 常用参数
-d 删除匹配SET1的内容,并不做替换

3.3. 常用范例
$echo 'THIS IS SHIYANLOU' | tr 'A-Z''a-z' #将输入的字符大写转换为小写
$echo 'THIS 12S IS SHIY5ANLOU' | tr -d '0-9' #将输入的字符中的数字删除

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/80633738