Linux shell与常用命令(4)

152 阅读3分钟

这是我参与更文挑战的第29天 ,活动详情查看更文挑战

wc

默认统计文件内的行/字和字节数

wc [-l](lines)[-w](words)[-m](chars)[-c](bytes) 文件路径

可以与管道结合使用

sort

排序

sort [-r](reverse)[-u](unique)[-f](nocase) 文件路径

可以与管道结合使用

tr

文件处理工具

tr [选项] [字符串1] [字符串2]

常用选项/参数含义如下。 -d:删除字符串1中所有输入字符。

cat /etc/passwd | tr ‘a-z’ ‘A-Z’ #替换
tr -d ‘a-b’ < test.txt  #删除
tr ‘a-z’ ‘A-Z’ < /etc/passwd #重定向

tar

tar [选项] 压缩文件名 文件或目录

tar后缀:cvf xvf (c:create v:view f:file)

tar.gz后缀:zcvf zxvf z:gzip

tar cvf/zcvf a.tar /tmp/a
tar xvf/zxvf a.tar -C /tmp/b (指定目录解压,默认解压路径为当前目录)

gzip

打包文件(文件夹不行)[gz后缀] [-d](解压)[-r] (递归)[-v] (view)[-t] (test)

gzip -rv /tmp/a

unzip

zip后缀 [-x](解压)[-v][-t][-d](指定目录)

unzip -x /tmp/a.zip -d /tmp/bb

cal

可以用户显示公历(阳历)日历如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份:

常用参数:

-3 显示前一月,当前月,后一月三个月的日历
-m 显示星期一为第一列
-j 显示在当前年第几天
-y [year]显示当前年[year]份的日历

date

显示或设定系统的日期与时间。 date +%Y-%m-%d

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。

which #查看命令路径

which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

whereis #查看命令路径

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。

- b   定位可执行文件。
- m   定位帮助文件。
- s   定位源代码文件。
- u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

grep

强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。

grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

命令格式:

grep [option] pattern file|dir 常用参数:

-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹

awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

awk [选项] '脚本命令' 文件名

cat filename | awk  -F: ‘{print $n}’
cat /etc/passwd | awk -F: ‘{pirnt $1}’
awk -F: ‘{print $n}’ /etc/passwd