1. sort
sort #排序命令
-nr #默认使用字符串排序n代表使用数值进行排序 默认从小到大排序 r代表反向排序
-k3 #以第3列进行排序
2. 查看系统信息
# 查看主机名
hostname
# 修改主机名
hostnamectl set-hostname 主机名
# 查看CPU
cat /proc/cpuinfo
lscpu
# 查看内存
free
-b 选项 以字节为单位 显示 内存总和; -k 选项 (缺省的) 以 KB 为单位 显示; -m 选项 以 MB 为单位.
-t 选项 显示 一个 总计行.
-o 选项 禁止 "buffer adjusted" 行的显示. 除非 指定 free 从 (相应的) 已用/未用的 内存 减去/加上 缓冲区内存.
-s 使 free 以 delay 秒为间隔, 连续抽样显示. delay 可以设置成浮点数, 它用 usleep(3) 做 微秒级 延迟.
# 查看系统版本
cat /etc/redhat-release
# uname查看系统信息
uname [OPTION]...
描述
显示相应的系统信息. 没有指定选项时,同 -s.
-a, --all
显示所有的信息
-m, --machine
显示机器(硬件)类型
-n, --nodename
显示机器的网络节点主机名
-r, --release
显示操作系统内核版本
-s, --sysname
显示操作系统名
-p, --processor
显示主机处理器(CPU)类型
-v 显示操作系统版本
--help 显示本帮助并退出
--version
显示版本信息并退出
# 查看各分区的使用情况
df -h
# 查看当前文件夹所占空间
du -sh
# 关闭蓝牙
语法格式:hciconfig [参数]
常用参数:
参考实例
使用-a参数显示蓝牙设备信息: hciconfig -a
使用up参数,开启hci0蓝牙设备:hciconfig hci0 up
使用down参数,关闭hci0蓝牙设备:hciconfig hci0 down
使用reset参数,重置hci0蓝牙设备:hciconfig hci0 reset
3. grep
grep [选项]... 模式 [文件]...
选项: -i 忽略大小写
-n 行号
-c 次数
-v 取反
-e 后面跟多个 -e 表示匹配多个字符串,或的关系
-o 只打印出匹配的内容
4. rpm
一、RPM 安装操作
命令:
rpm -i 需要安装的包文件名
举例如下:
rpm -i example.rpm 安装 example.rpm 包;
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;
二、RPM 查询操作
命令:
rpm -q …
附加查询命令:
a 查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
i 显示安装包的信息;
l 显示安装包中的所有文件被安装到哪些目录下;
s 显示安装版中的所有文件状态及被安装到哪些目录下;以下两个附加命令用于指定需要查询的是安装包还是已安装后的文件;
p 查询的是安装包的信息;
f 查询的是已安装的某文件信息;
举例如下:
rpm -qa | grep tomcat4 查看 tomcat4 是否被安装;
rpm -qip example.rpm 查看 example.rpm 安装包的信息;
rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息;
rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;
rpm -ql package1 列出package1的所有文件
rpm -qi package1 列出package1的安装信息
三、RPM 卸载操作
命令:
rpm -e 需要卸载的安装包
在卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称。
举例如下:
rpm -e tomcat4 卸载 tomcat4 软件包
四、RPM 升级操作
命令:
rpm -U 需要升级的包
举例如下:
rpm -Uvh example.rpm 升级 example.rpm 软件包
五、RPM 验证操作
命令:
rpm -V 需要验证的包
举例如下:
rpm -Vf /etc/tomcat4/tomcat4.conf
输出信息类似如下:
S.5....T c /etc/tomcat4/tomcat4.conf
其中,S 表示文件大小修改过,T 表示文件日期修改过。限于篇幅,更多的验证信息请您参考rpm 帮助文件:man rpm
六、RPM 的其他附加命令
--force 强制操作 如强制安装删除等;
--requires 显示该包的依赖关系;
--nodeps 忽略依赖关系并继续操作
6. sed
1. 元字符集
^ # 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ # 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. # 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* # 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] # 匹配一个指定范围内的字符,如/[sS]ed/匹配sed和Sed。
[^] # 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) # 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& # 保存搜索字符用来替换其他字符,如s/love/ **&** /,love这成 **love** 。
\< # 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\> # 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\} # 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\} # 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\} # 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。
2. 使用参数
[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
1,3 打印1到3行
1~3 步长为3进行打印
2!p 排除第二行打印
/ftp/p 打印ftp行
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
命令或动作必须放入单引号中。
= 打印出行号
r 读取文件内容
w 保存(覆盖)
3. 实操
1. 取出passwd文件中包含root的行?
sed -n '/root/p' ./passwd
2. 取出passwd文件中以root开头的行?
sed -n '/^root/p' ./passwd
3. 取出passwd文件中以root或sshd开头的行?
sed -n '/^root\|^sshd/p' ./passwd
4. 取出passwd文件中包含sync和mail的行?
sed -n '/.*sync.*/p' ./passwd
sed -n '/.*mail.*/p' ./passwd
5. 取出passwd文件中前三行?
sed -n '1,3p' ./passwd
6. 取出passwd文件中第一行和第三行?
sed -n '1p;3p' ./passwd
或 sed -n -e '1p' -e '3p' ./passwd
7. 取出passwd文件中第十行?
sed -n '10p' ./passwd
8. 删除passwd包含root字符串的行?
sed -e '/root/d' ./passwd
9. 删除passwd包含root和lp的行?
sed -e '/root/d;/lp/d' ./passwd
10. 删除passwd中adm到ganes的行?
sed -e '/^adm/,/^games/d' ./passwd
7. find
1. find名称关键字查找 -name
小选项:i 忽略大小写
格式:find 大体路径 -name “文件或目录名关键字”
find 大体路径 -iname “文件或目录名关键字”
例如:
1.1.
[root@dazhu200 ~]# find /etc/ -name "rc.*"
1.2.
[root@dazhu200 ~]# find ./ -iname "*u*"
2. find 类型查找 -type
小选项:f文件 d目录 l连接 b块设备 c字节设备 s网络套接字 p管道文件
格式:find 大概路径 -type 小选项
例:
[root@dazhu200 ~]# find /dev -type b
3. find 大小查找 -size
小选项:+量 -量 量
-size +量 -and -size -量 (取间隔)
-and(并且,并集关系,默认为-a)
[root@dazhu200 ~]# find / -type f -size +100M -size -150M
[root@dazhu200 ~]# ll /usr/lib/locale/locale-archive
4. find 时间查找
以天为单位
-mtime(修改时间) -ctime(属性改变时间) -atime(查看时间)
以分钟为单位
-mmin (修改时间)-cmin(属性改变时间) -amin(查看时间)
小选项:
-number n天之内
+number n天之前
number 第几天n天之前不包括第n天 第n天不包括今天n天之内包括今天
格式:find 大概路径 -mtime 小选项
[root@dazhu200 ~]# find ./ -mtime +2(不算当天过去两天之前的文件)
[root@dazhu200 ~]# find ./ -mtime -2(算上当天两天之内的内容)
[root@dazhu200 ~]# find ./ -mtime 2(过去第二天内容)
5. find 用户查找 -user
小选项:用户名
格式:find 大概路径 -user name
[root@dazhu200 ~]# find ./ -user root
6. find 属组查找 -group
小选项:属组
格式:find 大概路径 -group 属组
[root@dazhu200 ~]# find ./ -group root
7. 按深度等级查找
-maxdepth n
[root@dazhu200 ~]# find ./ -maxdepth 1 -type f
8. 按inode查找,删除特殊符号名文件
-inum
小选项:inode号
33617260 -rw-r--r-- 2 root root 8332 Aug 4 21:52 大柱英语
[root@dazhu200 ~]# find ./ -inum 33617252
[root@dazhu200 ~]# find ./ -inum 33617260
等特殊符号无法被删除时,使用find inum查找然后rm -rf `find...`删除。
9. 组合
且:-a(默认为-a,and) 或:-o(or) 无“选项”:-no”选项”
9.1. 查找属主是dazhu且属组是root的文件:
[root@dazhu200 ~]# find ./ -user dazhu -a -group root
9.2. 查找属主是大柱或属组是root的文件:
[root@dazhu200 ~]# find ./ -user 大柱 -o -group root
9.3. 查找两天内且文件名为“*n*”的文件:
[root@dazhu200 ~]# find ./ -name "*n*" -a -mtime 2
10. 查找没有属组且没有属主的文件
[root@dazhu200 ~]# find ./ -nouser -a -nogroup
11. find查找后的动作
11.1. -exec
格式:find ... -exec 命令 {} ;
命令:几乎所有命令都可执行但是find不支持别名
[root@dazhu200 ~]# find ./ -type f -name "nu*" -exec cp {} /tmp \;
[root@dazhu200 ~]# ll /tmp|grep “nu*”
11.2. |xargs
...|xargs 后继命令(find不支持别名,所以rm慎用!)
选项: -i {} 将上一条命令执行结果插入{}
...|xargs -i 后继命令 {} ... (将上调命令执行结果插入{}使用)
[root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs -i mv {} /tmp \;
[root@dazhu200 ~]# ll
total 20
-rw-r--r-- 1 root root 36 Jul 31 20:45 err.txt
-rw-r--r-- 1 root root 0 Jul 31 22:26 nUmber
-rw-r--r-- 1 root root 57 Jul 31 20:53 ok.txt
-rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英语
[root@dazhu200 ~]# ll /tmp
total 16
-rw-r--r-- 1 root root 57 Jul 31 20:43 nu1
-rw-r--r-- 1 root root 21 Jul 31 10:56 nu2
-rw-r--r-- 1 root root 123 Jul 31 11:01 nu3
-rw-r--r-- 1 root root 197 Aug 3 11:03 nu5
drwx------. 2 root root 6 Jul 27 08:29 vmware-root
选项:-t 默认t后直接借助上调命令执行结果
...|xargs cp或mv -t..
[root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs cp -t /tmp \;
[root@dazhu200 ~]# ll /tmp
total 16
-rw-r--r-- 1 root root 57 Aug 3 20:43 nu1
-rw-r--r-- 1 root root 21 Aug 3 20:43 nu2
-rw-r--r-- 1 root root 123 Aug 3 20:43 nu3
-rw-r--r-- 1 root root 197 Aug 3 20:43 nu5
drwx------. 2 root root 6 Jul 27 08:29 vmware-root
[root@dazhu200 ~]#
其他功能:进一步过滤与批量修改文件名
find ./ -type f |xargs grep 文件名
[root@dazhu200 ~]# find ./ -type f | grep nu*(grep默认只过滤当前目录,递归过滤文件内容需要使用-R选项)
nu5:-rw-r--r-- 1 root root 57 Aug 3 10:40 nu1
find ./ -type f |xargs -i cp {} {}.test
[root@dazhu200 ~]# find ./ -type f |xargs -i cp {} {}.test
[root@dazhu200 ~]# ll
total 72
-rw-r--r-- 1 root root 36 Jul 31 20:45 err.txt
-rw-r--r-- 1 root root 36 Aug 3 21:18 err.txt.test
-rw-r--r-- 1 root root 57 Jul 31 20:43 nu1
-rw-r--r-- 1 root root 57 Aug 3 21:18 nu1.test
-rw-r--r-- 1 root root 21 Jul 31 10:56 nu2
-rw-r--r-- 1 root root 21 Aug 3 21:18 nu2.tes
11.3. `可执行命令`
[root@dazhu200 ~]# rm -rf `find /tmp/ -name "nu*"`
[root@dazhu200 ~]# ll /tmp
total 0
drwx------. 2 root root 6 Jul 27 08:29 vmware-root
[root@dazhu200 ~]#
11.4. ;
;在命令行中有特殊含义。并列执行多条命令,不管其他命令是否可以成功执行,可以执行的都会执行。
[root@dazhu200 ~]# ll;mkdir dazhu;touch dazhu/nu6
total 36
-rw-r--r-- 1 root root 36 Jul 31 20:45 err.txt
-rw-r--r-- 1 root root 57 Jul 31 20:43 nu1
-rw-r--r-- 1 root root 21 Jul 31 10:56 nu2
[root@dazhu200 ~]# ll dazhu
total 0
-rw-r--r-- 1 root root 0 Aug 3 21:28 nu6
11.5. &&
&& 串联多个命令,前边的无法成功执行后边的也就无法执行。
[root@dazhu200 ~]# mkdir dazhu&&mkdir xiaozhu
mkdir: cannot create directory ‘dazhu’: File exists
[root@dazhu200 ~]# find ./ -type d -name "xiaozhu"
[root@dazhu200 ~]#
11.6. ||
|| 前边的命令执行失败,后面的命令才会执行
[root@dazhu200 ~]# find ./ -type d -name "xiaozhu"
[root@dazhu200 ~]# cd xiaozhu|| mkdir xiaozhu
-bash: cd: xiaozhu: No such file or directory
[root@dazhu200 ~]# ll
drwxr-xr-x 2 root root 6 Aug 3 21:36 xiaozhu
-rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英语
[root@dazhu200 ~]# cd xiaozhu || mkdir xiaoming
[root@dazhu200 xiaozhu]# which xiaoming
/usr/bin/which: no xiaoming in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
1.1.1. 待续...动作:
u 直接跟命令选项:
l -print (默认为-print)
l -ls 以长格式显示
l -delete 删除文件但是仅能删除空目录
l -ok 实现文件cp但是会提示是否cp
-ok cp
.....待续
12. 待续... !...
#find /etc -type f | xargs grep “dazhu” --color=auto
find 的逻辑运算符 -a 与 and(且) -o 或 or (和) ! 非 -not
!取反
**实操**
# 1.查找/usr/bin下所有大于30K,但小于50K且具有suid权限的文件,将其放入/root/newfiles。
find /usr/bin -size +30k -size -50k -perm /4000 -exec cp {} /root/newfiles \;
# 2.请把系统上拥有者为tammy用户的所有文件,并将其拷贝到/root/findfiles目录中。
find / -user tammy -exec cp -a {} /root/findfiles/ \;
8. cut
1. 基本语法
$ cut OPTION... [FILE]...
-f : 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d : Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。
-b : 提取指定的字节,也可以指定一个范围。
-c : 提取指定的字符,可以是以逗号分隔的数字的列表,也可以是以连字符分隔的数字的范围。
–complement : 补充选中的部分,即反选。
–output-delimiter : 修改输出时使用的分隔符。
--only-delimited : 不输出不包含分隔符的列。
2. 实操
# 打印出 /etc/passwd 文件每一行的第一个字段,用的分隔符是 :
cut -d ':' -f1 /etc/passwd
# 使用冒号(:)分隔符从文件 /etc/passwd 中包含字符串 /bin/bash 的行提取第一和第六个字段。
grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
# 显示字段的某个范围,可以指定开始和结束的字段,中间用连字符(-)连接,如下所示:
grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
# 输出 /etc/passwd 文件中包含 /bin/bash 的行中除了第二个字段以外的所有字段:
grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
# 提取 content.txt 文件每一行的第一,二,三个字节:
cut -b 1,2,3 content.txt
9. awk
一、基本用法
# 格式
$ awk 动作 文件名
# 示例
$ awk '{print $0}' demo.txt
上面示例中,demo.txt是awk所要处理的文本文件。前面单引号内部有一个大括号,里面就是每一行的处理动作print $0。其中,print是打印命令,$0代表当前行,因此上面命令的执行结果,就是把每一行原样打印出来。
下面,我们先用标准输入(stdin)演示上面这个例子。
$ echo 'this is a test' | awk '{print $0}'
上面代码中,print $0就是把标准输入this is a test,重新打印了一遍。
awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等。
$ echo 'this is a test' | awk '{print $3}'
上面代码中,$3代表this is a test的第三个字段a。
passwd文件的字段分隔符是冒号(:),所以要用-F参数指定分隔符为冒号。然后,才能提取到passwd的第一个字段。
$ awk -F ':' '{ print $1 }' demo.txt
root
daemon
bin
sys
sync
二、变量
# 变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。
$ echo 'this is a test' | awk '{print $NF}'
test
$(NF-1)代表倒数第二个字段。
$ awk -F ':' '{print $1, $(NF-1)}' demo.txt
root /root
daemon /usr/sbin
bin /bin
sys /dev
sync /bin
上面代码中,print命令里面的逗号,表示输出的时候,两个部分之间使用空格分隔。
# 变量NR表示当前处理的是第几行。
$ awk -F ':' '{print NR ") " $1}' demo.txt
1) root
2) daemon
3) bin
4) sys
5) sync
上面代码中,print命令里面,如果原样输出字符,要放在双引号里面。
awk的其他内置变量如下。
FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。
三、函数
awk还提供了一些内置函数,方便对原始数据的处理。
函数toupper()用于将字符转为大写。
$ awk -F ':' '{ print toupper($1) }' demo.txt
ROOT
DAEMON
BIN
SYS
SYNC
上面代码中,第一个字段输出时都变成了大写。
其他常用函数如下。
tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。
awk内置函数的完整列表,可以查看手册。
四、条件
awk允许指定输出条件,只输出符合条件的行。
输出条件要写在动作的前面。
$ awk '条件 动作' 文件名
请看下面的例子。
$ awk -F ':' '/usr/ {print $1}' demo.txt
root
daemon
bin
sys
上面代码中,print命令前面是一个正则表达式,只输出包含usr的行。
下面的例子只输出奇数行,以及输出第三行以后的行。
# 输出奇数行
$ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt
root
bin
sync
# 输出第三行以后的行
$ awk -F ':' 'NR >3 {print $1}' demo.txt
sys
sync
下面的例子输出第一个字段等于指定值的行。
$ awk -F ':' '$1 == "root" {print $1}' demo.txt
root
$ awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt
root
bin
五、if 语句
awk提供了if结构,用于编写复杂的条件。
$ awk -F ':' '{if ($1 > "m") print $1}' demo.txt
root
sys
sync
上面代码输出第一个字段的第一个字符大于m的行。
if结构还可以指定else部分。
$ awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt
root
---
---
sys
sync
10. alias
# 创建一个命令,名为centos,当student输入centos时,则会提示字符串:this is a test
Useradd student
Su -student
Vim .bashrc
添加 alias centos=’echo this is a test’
Source .bashrc
11. date
# 查看当前时间
# %F 等同于 +%Y-%m-%d
date "+%F" #2022-07-01
date "+%Y-%m-%d" #2022-07-01
date "+%Y-%m-%d %H:%M:%S" #2022-07-01 00:00:00
date "+%F %H:%M:%S" #2022-07-01 00:00:00
# 查看指定时间 -d
date -d "-1day" +%F #前一天
date -d "-1month" +%F #前一月
date -d "-1year" +%F #前一年
date -d "-1year -1month -1day" +%F #组合
# 设置日期
date -s "2021-12-04 00:00:40"
12. tar
tar命令选项:
选项 说明
-c 创建打包文件
-v 显示打包或者解包的详细信息
-f 指定文件名称, 必须放到所有选项后面
-z 压缩或解压缩(.gz)
-j 压缩或解压缩(.bz2)
-x 解包
-C 解压缩到指定目录
# 创建一个名为/root/backup.tar.bz2的tar归档,其应该包含/usr/local/的内容。此归档文件必须使用bzip2进行压缩。
[root@servera ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
[root@servera ~]# file backup.tar.bz2 # 验证
backup.tar.bz2: bzip2 compressed data, block size = 900k
#输出带时间戳的打包文件
DATE=$(date "+%Y%m%d");tar -cvzf DB_$DATE.tar /var/log/
13. history
# 为所有用户设置历史记录的时间
vim /etc/profile //在文件末尾添加以下内容,然后保存退出重新登陆即可
HISTTIMEFORMAT='%F %T ' //注意有个空格,为了显示时日期与命令之间有空格分割。
HISTSIZE="3000" //默认保留1000条。
# 若想同时显示历史命令的时间、日期以及操作者,则这样添加:
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S:`whoami` " 或
HISTTIMEFORMAT="%F %T:`whoami` "
HISTTIMEFORMAT='%F %T '
如果是
export HISTTIMEFORMAT='%F%T' //%T少了个空格,日期与命令就连在一起了
# 使用 HISTFILE 更改保存历史记录文件
默认情况下命令历史存储在 ~/.bash_history 文件中。 添加下列内容到 .bash_profile 文件并重新登录bash shell, 将使用 /var/history/$USER-$UID.log 来存储命令历史 :
# vi ~/.bash_profile //输入以下内容
HISTFILE=/var/history/$USER-$UID.log
14. wc
# wc的基本统计用法
➜ test cat temp.txt
what's your name?
my name is bcy
➜ test wc temp.txt
2 7 33 temp.txt # 没有选项,依次输出行数、单词数、字节数、文件名
➜ test wc -l temp.txt # 统计行数
2 temp.txt
➜ test wc -w temp.txt # 统计单词数
7 temp.txt
➜ test wc -c temp.txt # 统计字节数
33 temp.txt
➜ test wc -m temp.txt # 统计字符数
33 temp.txt
➜ test wc -L temp.txt # 打印最长行的长度
17 temp.txt
# 使用wc命令只统计数字,不打印文件名
➜ test cat temp.txt|wc # 使用管道符即可实现不打印文件名
2 7 33
➜ test cat temp.txt|wc -l
2
➜ test cat temp.txt|wc -w
7
➜ test cat temp.txt|wc -c
33
# 统计当前目录下的文件数
➜ test ll|wc -l # 当前目录下的文件数为:8-1=7(第一行删掉)
8
➜ test ll
total 28K # 删掉本行
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 139 Sep 20 12:23 data2.txt
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 33 Sep 19 22:34 hello.txt
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 225 Sep 20 17:31 mem.txt
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 109 Sep 20 09:27 osix
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 25 Sep 20 17:46 teefile.txt
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 33 Sep 21 18:08 temp.txt
-rw-r--r-- 1 baichunyu.bcy baichunyu.bcy 38 Sep 20 09:26 test.txt