1. sort
sort
-nr
-k3
2. 查看系统信息
hostname
hostnamectl set-hostname 主机名
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 [ 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. 元字符集
^
$
.
*
[ ]
[ ^]
\ ( .. \ )
&
\ <
\ >
x\ { m\ }
x\ { m,\ }
x\ { m,n\ }
2. 使用参数
[ root@www ~]
选项与参数:
-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 ~]
1.2 .
[ root@dazhu200 ~]
2 . find 类型查找 -type
小选项:f文件 d目录 l连接 b块设备 c字节设备 s网络套接字 p管道文件
格式:find 大概路径 -type 小选项
例:
[ root@dazhu200 ~]
3 . find 大小查找 -size
小选项:+量 -量 量
-size +量 -and -size -量 (取间隔)
-and(并且,并集关系,默认为-a)
[ root@dazhu200 ~]
[ root@dazhu200 ~]
4 . find 时间查找
以天为单位
-mtime(修改时间) -ctime( 属性改变时间) -atime( 查看时间)
以分钟为单位
-mmin (修改时间)-cmin( 属性改变时间) -amin( 查看时间)
小选项:
-number n天之内
+number n天之前
number 第几天n天之前不包括第n天 第n天不包括今天n天之内包括今天
格式:find 大概路径 -mtime 小选项
[ root@dazhu200 ~]
[ root@dazhu200 ~]
[ root@dazhu200 ~]
5 . find 用户查找 -user
小选项:用户名
格式:find 大概路径 -user name
[ root@dazhu200 ~]
6 . find 属组查找 -group
小选项:属组
格式:find 大概路径 -group 属组
[ root@dazhu200 ~]
7 . 按深度等级查找
-maxdepth n
[ root@dazhu200 ~]
8 . 按inode查找,删除特殊符号名文件
-inum
小选项:inode号
33617260 -rw-r--r-- 2 root root 8332 Aug 4 21 :52 大柱英语
[ root@dazhu200 ~]
[ root@dazhu200 ~]
等特殊符号无法被删除时,使用find inum查找然后rm -rf ` find.. .` 删除。
9 . 组合
且:-a(默认为-a,and) 或:-o(or) 无“选项”:-no”选项”
9.1 . 查找属主是dazhu且属组是root的文件:
[ root@dazhu200 ~]
9.2 . 查找属主是大柱或属组是root的文件:
[ root@dazhu200 ~]
9.3 . 查找两天内且文件名为“*n*”的文件:
[ root@dazhu200 ~]
10 . 查找没有属组且没有属主的文件
[ root@dazhu200 ~]
11 . find查找后的动作
11.1 . -exec
格式:find .. . -exec 命令 { } ;
命令:几乎所有命令都可执行但是find不支持别名
[ root@dazhu200 ~]
[ root@dazhu200 ~]
11.2 . | xargs
.. .| xargs 后继命令(find不支持别名,所以rm慎用!)
选项: -i { } 将上一条命令执行结果插入{ }
.. .| xargs -i 后继命令 { } .. . (将上调命令执行结果插入{}使用)
[ root@dazhu200 ~]
[ root@dazhu200 ~]
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 ~]
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 ~]
[ root@dazhu200 ~]
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 ~]
nu5:-rw-r--r-- 1 root root 57 Aug 3 10 :40 nu1
find ./ -type f | xargs -i cp { } { } .test
[ root@dazhu200 ~]
[ root@dazhu200 ~]
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 ~]
[ root@dazhu200 ~]
total 0
drwx------. 2 root root 6 Jul 27 08:29 vmware-root
[ root@dazhu200 ~]
11.4 . ;
; 在命令行中有特殊含义。并列执行多条命令,不管其他命令是否可以成功执行,可以执行的都会执行。
[ root@dazhu200 ~]
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 ~]
total 0
-rw-r--r-- 1 root root 0 Aug 3 21 :28 nu6
11.5 . &&
&& 串联多个命令,前边的无法成功执行后边的也就无法执行。
[ root@dazhu200 ~]
mkdir: cannot create directory ‘dazhu’: File exists
[ root@dazhu200 ~]
[ root@dazhu200 ~]
11.6 . ||
|| 前边的命令执行失败,后面的命令才会执行
[ root@dazhu200 ~]
[ root@dazhu200 ~]
-bash: cd: xiaozhu: No such file or directory
[ root@dazhu200 ~]
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 ~]
[ root@dazhu200 xiaozhu]
/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 的逻辑运算符 -a 与 and( 且) -o 或 or ( 和) ! 非 -not
!取反
**实操**
find /usr/bin -size +30k -size -50k -perm /4000 -exec cp { } /root/newfiles \ ;
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. 实操
cut -d ':' -f1 /etc/passwd
grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
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
二、变量
$ 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命令里面的逗号,表示输出的时候,两个部分之间使用空格分隔。
$ 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
Useradd student
Su -student
Vim .bashrc
添加 alias centos = ’echo this is a test’
Source .bashrc
11. date
date "+%F"
date "+%Y-%m-%d"
date "+%Y-%m-%d %H:%M:%S"
date "+%F %H:%M:%S"
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@servera ~]
[ root@servera ~]
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少了个空格,日期与命令就连在一起了
默认情况下命令历史存储在 ~/.bash_history 文件中。 添加下列内容到 .bash_profile 文件并重新登录bash shell, 将使用 /var/history/$USER -$UID .log 来存储命令历史 :
HISTFILE = /var/history/$USER -$UID .log
14. 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
➜ 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
➜ 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