常用命令总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用命令总结相关的知识,希望对你有一定的参考价值。

常用命令总结:

sed

用途:处理文本
用法:sed [option]... ‘script‘ inputfile...
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑
-f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本
-r 支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
地址定界:
(1) 不给地址:对全文进行处理
(2) 单地址:
#:指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
(3) 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~:步进
1~2 奇数行
2~2 偶数行
编辑命令:
d 删除模式空间匹配的行,并立即启用下一轮循环
p 打印当前模式空间内容,追加到默认输出之后
a []text 在指定行后面追加文本,支持使用
实现多行追加
i []text 在行前面插入文本
c []text 替换行为单行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
例子:
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
[root@centos7 ~]#sed -r ‘s/^ (.*)/1/g‘ /etc/grub2.cfg
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#
和空白字符
[root@centos7 ~]# sed -r ‘s/^# +(.*)/1/g‘ /etc/fstab
3、在centos6系统/root/install.log每一行行首增加#号
[root@centos6 ~]# sed -r ‘s/(.*)/#1/g‘ /root/install.log
4、在/etc/fstab文件中不以#开头的行的行首增加#号
[root@centos7 ~]# sed -r ‘s/^[^#](.*)/#1/g;s/(^$)/#1/g‘ /etc/fstab
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
[root@centos7 ~]# echo /etc/fstab |sed -nr ‘s@(/.*)/(.*)@1@p‘
/etc
[root@centos7 ~]# echo /etc/fstab |sed -nr ‘s@(/.*)/(.*)@2@p‘
fstab
[root@centos7 ~]#
6、利用sed 取出ifconfig命令中本机的IPv4地址
[root@centos7 ~]# ifconfig ens160 |sed -nr ‘2s/^[^0-9]+([0-9.]+) .*$/1/p‘
7、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和
sed两种方法分别实现)
思路:除了字母的(不止一个)的字符替换成换行符,进行排序并且寻找出现次数
cat /etc/init.d/functions | sed -r ‘s@[^[:alpha:]]+@
@g‘ | sort | uniq -c | sort -n
grep  -Eo "[[:alpha:]]+" /etc/init.d/functions | sort | uniq -c  | sort -n
8、将文本文件的n和n+1行合并为一行,n为奇数行
seq 1 10 | sed ‘N;s/
/ /‘

grep

用途:文本过滤--color=auto: 对匹配到的文本着色显示
用法:grep [OPTIONS] PATTERN [FILE...]
-m # 匹配#次后停止
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行 
-B # before, 前#行 
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w 匹配整个单词
-E 使用正则表达式
-f file 根据模式文件处理
例子:
[root@c2 ~]# grep -w root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@c2 ~]# grep -w root -A 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@c2 ~]# grep -w root -A 3 -c /etc/passwd
2
[root@c2 ~]# grep -w root -A 3 -n /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13-nobody:x:99:99:Nobody:/:/sbin/nologin
[root@c2 ~]# grep -E "root|ftp" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

find

用途:搜索文件
1、查找/var目录下属主为root,且属组为mail的所有文件
[root@centos7 ~]# find /var/ -user root -group mail       
/var/spool/mail
[root@centos7 ~]#
2、查找/var目录下不属于root、 lp、 gdm的所有文件
[root@centos7 ~]# find /var/ -not ( -user root -o -user lp -o -user gdm )
3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix
的文件
[root@centos7 ~]#find /var/ -mtime -7 -not ( -user root -o -user postfix )
4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
[root@centos7 ~]#find / -nouser -o -nogroup -atime -7
5、查找/etc目录下大于1M且类型为普通文件的所有文件
[root@centos7 ~]#find /etc/ -type f -size +1M
6、查找/etc目录下所有用户都没有写权限的文件
[root@centos7 ~]#find /etc/ -perm 000
7、查找/etc目录下至少有一类用户没有执行权限的文件
[root@centos7 ~]#find /etc ! -perm /222
8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件
[root@centos7 ~]#find /etc/init.d/ -perm -113

cut

用途:按照分隔符截取字段
用法: cut OPTION [FILE]
-d  定义分隔符;默认以空格作分隔
-f  需要打印的字段
例子:
[root@c2 ~]# cut -d : -f 1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games

sort

用途:排序
用法:sort [OPTION] [FILE]
-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思

uniq

用途:去重
用法:uniq [OPTION] [INPUT [OUTPUT]]
-c 统计重复次数
-d 只打印重复的行
-D 打印所有重复的行
-i 忽略大小写
-u 只打印不重复的行
例子:  需要与sort命令结合使用
[root@c5 ~]# sort test.txt |uniq -u 
a
b
c
[root@c5 ~]# sort test.txt |uniq -c
      2 a
      2 b
      2 c
[root@c5 ~]# sort test.txt |uniq -d
a
b
c
[root@c5 ~]# sort test.txt |uniq -D
a
a
b
b
c
c

tr

用途:删除或替换字符
用法:tr [OPTION] SET1 [SET2]
-d  删除字符
-c  用字符串1中字符集的补集替换此字符集
-s  压缩字符或空格,只保留一个
-dc 只留下set1
例子:
[root@c5 ~]# echo abc |tr -d ‘a‘
bc
[root@c5 ~]# echo abc |tr ‘a‘ ‘c‘
cbc
[root@c5 ~]# echo aaa |tr -s ‘a‘
a
[root@c5 ~]# echo abc |tr -c ‘abc‘ ‘b‘
abcb[root@c5 ~]#
[root@c5 ~]# echo 123abc |tr -dc ‘[0-9]‘
123[root@c5 ~]#

history

history [-c] [-d offset] [n]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
例子:
[root@c5 ~]# history 5
  316  echo abc |tr -c ‘ad‘ ‘b‘
  317  echo abc |tr -d ‘a‘ ‘b‘
  318  echo abc |tr -d ‘a‘
  319  history -5
  320  history 5

echo

选项:
 -E (默认)不支持  解释功能
 -n 不自动换行
 -e 启用  字符的解释功能
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成
一般文字输出
a 发出警告声
 退格键
c 最后不加上换行符号
e escape,相当于33

 换行且光标移至行首

 回车,即光标移至行首,但不换行
	 插入tab
\ 插入字符
nnn 插入nnn(八进制)所代表的ASCII字符
echo -e ‘33[43;31;5mmagedue[0m‘ xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

例子:
[root@c1 ~]# echo "1
2"
1
2
[root@c1 ~]# echo -e "1
2"
1
2
[root@c1 ~]# echo -e "1	2"
1   2
[root@c1 ~]# echo -e "12"
2
[root@c1 ~]# echo -e "1c2"
1[root@c1 ~]# 
[root@c1 ~]# 
[root@c1 ~]# echo -e "1
2"
2

screen

创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
例子:
[root@c2 ~]# screen -S test
[root@c2 ~]# ping c5
PING c5 (10.0.1.246) 56(84) bytes of data.
64 bytes from c5 (10.0.1.246): icmp_seq=1 ttl=64 time=0.289 ms
64 bytes from c5 (10.0.1.246): icmp_seq=2 ttl=64 time=0.250 ms
64 bytes from c5 (10.0.1.246): icmp_seq=3 ttl=64 time=0.251 ms
.....
--然后关掉xshell窗口;再打开另外一个xshell窗口
[root@c2 ~]# screen -ls
There is a screen on:
    31623.test  (Detached)
1 Socket in /var/run/screen/S-root.

[root@c2 ~]# screen -r test   ###恢复test会话

mv

用法:
mv src  dest
例子:
mv test.txt /tmp/   #把test.txt剪切到/tmp/目录下
mv test.txt /tmp/123.txt  #把test.txt剪切到/tmp/目录下,并把名称改为123.txt

cp

常用参数:
-a 把所有参数都复制了,例如文件权限
-i 提示是否覆盖同名称的文件
-r 递归复制目录

用法:
cp [参数]src  dest
例子:
1.保留文件的属性
root@c1 ~]# touch t1
[root@c1 ~]# ll t1
-rw-r--r--  1 root root       0 May 27 16:33 t1
[root@c1 ~]# cp t1 t2
[root@c1 ~]# ll t2 
-rw-r--r-- 1 root root 0 May 27 16:34 t2
[root@c1 ~]# cp -a t1 t3
[root@c1 ~]# ll t3
-rw-r--r-- 1 rick rick 0 May 27 16:33 t3
2.提示是否覆盖同名称的文件
[root@c1 ~]# touch /tmp/t1
[root@c1 ~]# cp -i t1 /tmp/t1
cp: overwrite ‘/tmp/t1’?      #回车 覆盖文件
3.递归复制目录
[root@c1 ~]# mv t2 t3 test/
[root@c1 ~]# cp test/ /tmp/
cp: omitting directory ‘test/’
[root@c1 ~]# ls /tmp/
systemd-private-020effd0ed99410f9efcca3c108062ed-chronyd.service-0bdmcQ  t1  test
[root@c1 ~]# ls /tmp/test 
/tmp/test
[root@c1 ~]# cp -r test/ /tmp/
[root@c1 ~]# ls test/
t2  t3
[root@c1 ~]# rm -rf /tmp/test 
[root@c1 ~]# cp -r test /tmp/
[root@c1 ~]# ls /tmp/test/
t2  t3

date

把时间转换成时间戳(从1970年1月1日开始算,单位是秒)
[root@c1 ~]# date +%s
1590569215
把时间戳转换成易读格式
[root@c1 ~]# date -d @1590569215
Wed May 27 16:46:55 CST 2020
以年月日时分秒显示时间
[root@c1 ~]# date "+%F %T"
2020-05-27 16:49:18
纯数据显示时间(易读),直接显示年月日时分秒
[root@c1 ~]# date +%Y%m%d%H%M%S
20200527165048

shutdown

shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间

以上是关于常用命令总结的主要内容,如果未能解决你的问题,请参考以下文章

MorkDown 常用语法总结

git常用命令总结

git 常用命令总结

git 常用命令总结

linux下svn的常用操作命令总结

vim常用命令总结 (转)