linux命令大全
文件常见处理工具 文件内容查看命令 cat
格式:cat [option ]...file ...
1 2 3 4 5 6 常见选项-E:显示行结束符$ -A:显示所有控制符 -n:对一行进行编号 -b:非空行编号 -s:压缩联系的空行成一行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 [22:56:46 root@localhost ~] $ $ $echo 第一个参数 $1 $echo 第二个参数 $2 $echo 第三个参数 $3 $echo 第十个参数 ${10} $echo 第所有参数 $* $echo 第所有参数 $@$ Hello vim$ Hello vim2$ [22:57:02 root@localhost ~] $ $ $echo M-gM-,M-,M-dM-8M-^@M-dM-8M-*M-eM-^OM-^BM-fM-^UM-0 $1 $echo M-gM-,M-,M-dM-:M-^LM-dM-8M-*M-eM-^OM-^BM-fM-^UM-0 $2 $echo M-gM-,M-,M-dM-8M-^IM-dM-8M-*M-eM-^OM-^BM-fM-^UM-0 $3 $echo M-gM-,M-,M-eM-^MM-^AM-dM-8M-*M-eM-^OM-^BM-fM-^UM-0 ${10} $echo M-gM-,M-,M-fM-^IM-^@M-fM-^\M-^IM-eM-^OM-^BM-fM-^UM-0 $* $echo M-gM-,M-,M-fM-^IM-^@M-fM-^\M-^IM-eM-^OM-^BM-fM-^UM-0 $@$ ^[[1;32mHello vim^[[0m$ ^[[1;34mHello vim2^[[0m$ [22:57:24 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 echo 第一个参数 $1 15 echo 第二个参数 $2 16 echo 第三个参数 $3 17 echo 第十个参数 ${10} 18 echo 第所有参数 $* 19 echo 第所有参数 $@ 20 Hello vim 21 Hello vim2 [22:58:05 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 echo 第一个参数 $1 12 echo 第二个参数 $2 13 echo 第三个参数 $3 14 echo 第十个参数 ${10} 15 echo 第所有参数 $* 16 echo 第所有参数 $@ 17 Hello vim 18 Hello vim2
nl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [22:59:18 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 echo 第一个参数 $1 12 echo 第二个参数 $2 13 echo 第三个参数 $3 14 echo 第十个参数 ${10} 15 echo 第所有参数 $* 16 echo 第所有参数 $@ 17 Hello vim 18 Hello vim2
tac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [23:00:41 root@localhost ~]#tac zhang2.sh Hello vim2 Hello vim echo 第所有参数 $@ echo 第所有参数 $* echo 第十个参数 ${10} echo 第三个参数 $3 echo 第二个参数 $2 echo 第一个参数 $1 # **** **** **** **** **** **** **** **** **** **** **** **** **** **** ** # # * Description : # * Filename : zhang2.sh # * Create time : 2022-07-20 15:52 # * Email : 1024320609@qq.com # * Author : 张雪龙 # # ** **** **** **** **** **** **** **** **** **** **** **** **** **** **** #!/bin/bash
rev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [23:01:56 root@localhost ~]#rev zhang2.sh hsab/nib/!#**** **** **** **** **** **** **** **** **** **** **** **** **** **** ** # # 龙雪张 : rohtuA * # moc.qq@9060234201 : liamE * #25:51 02-70-2202 : emit etaerC * # hs.2gnahz : emaneliF * # : noitpircseD * # # * ****** **** **** **** **** **** **** **** **** **** **** **** **** *** # 1$ 数参个一第 ohce 2$ 数参个二第 ohce 3$ 数参个三第 ohce }01{$ 数参个十第 ohce * $ 数参有所第 ohce@$ 数参有所第 ohce m0[iv olleHm23;1[ 0[miv olleHm43;1[
hexdump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [23 :04 :16 root@localhost ~]0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000010 003 \0 > \0 001 \0 \0 \0 0 5 \0 \0 \0 \0 \0 \0 0000020 @ \0 \0 \0 \0 \0 \0 \0 200 { \0 \0 \0 \0 \0 \0 0000030 \0 \0 \0 \0 @ \0 8 \0 \n \0 @ \0 037 \0 036 \0 0000040 006 \0 \0 \0 004 \0 \0 \0 @ \0 \0 \0 \0 \0 \0 \0 0000050 @ \0 \0 \0 \0 \0 \0 \0 @ \0 \0 \0 \0 \0 \0 \0 0000060 0 002 \0 \0 \0 \0 \0 \0 0 002 \0 \0 \0 \0 \0 \0 0000070 \b \0 \0 \0 \0 \0 \0 \0 003 \0 \0 \0 004 \0 \0 \0 0000080 p 002 \0 \0 \0 \0 \0 \0 p 002 \0 \0 \0 \0 \0 \0 0000090 p 002 \0 \0 \0 \0 \0 \0 034 \0 \0 \0 \0 \0 \0 \0 00000a 0 034 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 \0 \0 00000b 0 001 \0 \0 \0 005 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 00000c 0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 00000d 0 350 \ \0 \0 \0 \0 \0 \0 350 \ \0 \0 \0 \0 \0 \0 00000e 0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 006 \0 \0 \0 00000f 0 350 j \0 \0 \0 \0 \0 \0 350 j \0 \0 \0 \0 \0 0000100 350 j \0 \0 \0 \0 \0 < 005 \0 \0 \0 \0 \0 \0 0000110 H 006 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000120 002 \0 \0 \0 006 \0 \0 \0 \0 k \0 \0 \0 \0 \0 \0 0000130 \0 k \0 \0 \0 \0 \0 \0 k \0 \0 \0 \0 \0 0000140 200 002 \0 \0 \0 \0 \0 \0 200 002 \0 \0 \0 \0 \0 \0 0000150 \b \0 \0 \0 \0 \0 \0 \0 004 \0 \0 \0 004 \0 \0 \0 0000160 220 002 \0 \0 \0 \0 \0 \0 220 002 \0 \0 \0 \0 \0 \0 0000170 220 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000180 \0 \0 \0 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 \0 \0 0000190 004 \0 \0 \0 004 \0 \0 \0 260 002 \0 \0 \0 \0 \0 \0 00001a 0 260 002 \0 \0 \0 \0 \0 \0 260 002 \0 \0 \0 \0 \0 \0 00001b 0 D \0 \0 \0 \0 \0 \0 \0 D \0 \0 \0 \0 \0 \0 \0 00001c 0 004 \0 \0 \0 \0 \0 \0 \0 P 345 t d 004 \0 \0 \0 00001d 0 < W \0 \0 \0 \0 \0 \0 < W \0 \0 \0 \0 \0 \0 00001e 0 < W \0 \0 \0 \0 \0 \0 244 \0 \0 \0 \0 \0 \0 \0 00001f 0 244 \0 \0 \0 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 \0 \0 0000200
分页查看文件内容 more
1 格式: more [option ...] file ...
less
实现分页查看文件或stdin输出,less命令是man命令使用的分页器
1 2 3 查看less有用的命令 /文本 搜索 文件n /N 跳到下一个或上一个匹配
显示文本前面或后面的行内容 head
1 格式:head [option]... [file]...
1 2 3 4 选项 -c #:指定获取前#个字节 -n #:指定获取前#行,#如果是负数,表示从文件头取到倒数第#前,默认打开前10 行 -#:同上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [23:14:17 root@localhost ~]#head -n -5 zhang2.sh #!/bin/bash # **** **** **** **** **** **** **** **** **** **** **** **** **** **** ** # # * Author : 张雪龙 # * Email : 1024320609@qq.com# * Create time : 2022-07-20 15:52 # * Filename : zhang2.sh# * Description : # # * ****** **** **** **** **** **** **** **** **** **** **** **** **** *** echo 第一个参数 $1 echo 第二个参数 $2 echo 第三个参数 $3 [23:14:17 root@localhost ~]#head -n -5 zhang2.sh #!/bin/bash # * ****** **** **** **** **** **** **** **** **** **** **** **** **** *** # # * Author : 张雪龙# * Email : 1024320609@qq.com # * Create time : 2022-07-20 15:52# * Filename : zhang2.sh # * Description : # # ** **** **** **** **** **** **** **** **** **** **** **** **** **** **** [23:14:17 root@localhost ~]#head -n -5 zhang2.sh #!/bin/bash # **** **** **** **** **** **** **** **** **** **** **** **** **** **** ** # # * Author : 张雪龙 # * Email : 1024320609@qq.com# * Create time : 2022-07-20 15:52 # * Filename : zhang2.sh# * Description : # # * ****** **** **** **** **** **** **** **** **** **** **** **** **** *** [23:14:26 root@localhost ~]#head -n 5 zhang2.sh #!/bin/bash # * ****** **** **** **** **** **** **** **** **** **** **** **** **** *** # # * Author : 张雪龙# * Email : 1024320609@qq.com [23:15:26 root@localhost ~]#head -c 5 zhang2.sh #!/bi[23:17:13 root@localhost ~]#
tail
1 tail [option]...[file]...
1 2 3 4 5 6 7 - c - n - - f:跟踪显示文件fd新追加的内容,常用于日志监控,相当于:--follow=descriptor,当文件删除再新建同名文件,将 无法继续跟踪文件- F:跟踪文件名,相当于:--follow=name --retry,当文件删除在新建同名文件,将可以继续跟踪文件 tailif: 类似 tail -f,当文件不增长是并不访问文件,节约资源,centos8已无此工具
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [23:17:40 root@localhost ~] 1;34mHello vim2 [23:27:25 root@localhost ~]echo 第十个参数 ${10} echo 第所有参数 $* echo 第所有参数 $@ Hello vim Hello vim2 [23:28:56 root@localhost ~]echo 第一个参数 $1 echo 第二个参数 $2 echo 第三个参数 $3 echo 第十个参数 ${10} echo 第所有参数 $* echo 第所有参数 $@ Hello vim Hello vim2 echo tail -f command
cut
1 cut [option]...[file]...
1 2 3 4 5 6 7 8 9 -d delimit:指明分隔符,默认tab -f fileds: #:第#个字段,案例:3 #,#[,#]:离散的多个字段,例如:1 ,3 ,6 #-#:连续的多个字段,例如1 -6 混合使用:1 -3 ,7 -c:按字符切割 --output-delimiter=string指定输出分隔符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 [23:37:14 root@localhost ~] root:0:root bin:1:bin daemon:2:daemon adm:3:adm lp:4:lpsync :5:sync shutdown:6:shutdown halt:7:halt mail:8:mail operator:11:operator games:12:games ftp:14:FTP User nobody:65534:Kernel Overflow User dbus:81:System message bus systemd-coredump:999:systemd Core Dumper systemd-resolve:193:systemd Resolver tss:59:Account used for TPM access polkitd:998:User for polkitd geoclue:997:User for geoclue rtkit:172:RealtimeKit pipewire:996:PipeWire System Daemon pulse:171:PulseAudio System Daemon qemu:107:qemu user usbmuxd:113:usbmuxd user unbound:995:Unbound DNS resolver gluster:994:GlusterFS daemons rpc:32:Rpcbind Daemon avahi:70:Avahi mDNS/DNS-SD Stack chrony:993: saslauth:992:Saslauthd user libstoragemgmt:991:daemon account for libstoragemgmt dnsmasq:983:Dnsmasq DHCP and DNS server radvd:75:radvd user sssd:982:User for sssd cockpit-ws:981:User for cockpit web service cockpit-wsinstance:980:User for cockpit-ws instances colord:979:User for colord rpcuser:29:RPC Service User setroubleshoot:978: flatpak:977:User for flatpak system helper gdm:42: clevis:976:Clevis Decryption Framework unprivileged user gnome-initial-setup:975: tcpdump:72: sshd:74:Privilege-separated SSH zxl:1000:zxl mysql:123: zhangxuelong:1001: zhangsan:1002: test01:1003: test02:1004: apache:48:Apache [23:37:52 root@localhost ~] root:x:0:root bin:x:1:bin daemon:x:2:daemon adm:x:3:adm lp:x:4:lpsync :x:5:sync shutdown:x:6:shutdown halt:x:7:halt mail:x:8:mail operator:x:11:operator games:x:12:games ftp:x:14:FTP User nobody:x:65534:Kernel Overflow User dbus:x:81:System message bus systemd-coredump:x:999:systemd Core Dumper systemd-resolve:x:193:systemd Resolver tss:x:59:Account used for TPM access polkitd:x:998:User for polkitd geoclue:x:997:User for geoclue rtkit:x:172:RealtimeKit pipewire:x:996:PipeWire System Daemon pulse:x:171:PulseAudio System Daemon qemu:x:107:qemu user usbmuxd:x:113:usbmuxd user unbound:x:995:Unbound DNS resolver gluster:x:994:GlusterFS daemons rpc:x:32:Rpcbind Daemon avahi:x:70:Avahi mDNS/DNS-SD Stack chrony:x:993: saslauth:x:992:Saslauthd user libstoragemgmt:x:991:daemon account for libstoragemgmt dnsmasq:x:983:Dnsmasq DHCP and DNS server radvd:x:75:radvd user sssd:x:982:User for sssd cockpit-ws:x:981:User for cockpit web service cockpit-wsinstance:x:980:User for cockpit-ws instances colord:x:979:User for colord rpcuser:x:29:RPC Service User setroubleshoot:x:978: flatpak:x:977:User for flatpak system helper gdm:x:42: clevis:x:976:Clevis Decryption Framework unprivileged user gnome-initial-setup:x:975: tcpdump:x:72: sshd:x:74:Privilege-separated SSH zxl:x:1000:zxl mysql:x:123: zhangxuelong:x:1001: zhangsan:x:1002: test01:x:1003: test02:x:1004: apache:x:48:Apache [23:38:40 root@localhost ~] 文件系统 1K-块 已用 可用 已用% 挂载点 devtmpfs 1871176 0 1871176 0% /dev tmpfs 1899296 0 1899296 0% /dev/shm tmpfs 1899296 9648 1889648 1% /run tmpfs 1899296 0 1899296 0% /sys/fs/cgroup /dev/sda2 104806400 5954468 98851932 6% / /dev/sda5 99564036 727228 98836808 1% /data /dev/sda1 1038336 259948 778388 26% /boot tmpfs 379856 12 379844 1% /run/user/42 tmpfs 379856 0 379856 0% /run/user/0 [23:39:56 root@localhost ~] 0 0 1 0 6 1 26 1 0 [23:40:58 root@localhost ~] 1 2 3 4 5 [23:43:22 root@localhost ~] 1+2+3+4+5 [23:44:06 root@localhost ~] 15
paste
1 paste [option]...[file]...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [23:50:07 root@localhost ~] 1 2 3 4 5 6 7 [23:50:12 root@localhost ~] a b c d e f g [23:50:31 root@localhost ~]paste : p1: 没有那个文件或目录 [23:50:42 root@localhost ~] a 1 b 2 c 3 d 4 e 5 f 6 g 7 [23:51:42 root@localhost ~] a:1 b:2 c:3 d:4 e:5 f:6 g:7 [23:52:17 root@localhost ~] a b c d e f g 1 2 3 4 5 6 7 [23:53:23 root@localhost ~] a_b_c_d_e_f_g 1_2_3_4_5_6_7 [00:02:15 root@localhost ~] zhangsan zxl zhangxuelong [00:02:31 root@localhost ~] 123 321 123 [00:02:36 root@localhost ~] [00:02:42 root@localhost ~]
分析文本的工具 wc
1 2 3 4 -l:只计数行数 -w:只计数单词总数 -c:只计数字节总数 -L:显示文件中最长行的长度
1 2 3 4 5 6 7 8 9 10 11 12 13 [00:05:34 root@localhost ~] 52 111 2830 passwd [00:05:46 root@localhost ~] 52 111 2830 [00:06:07 root@localhost ~] 52 [00:06:26 root@localhost ~] 2830 [00:06:30 root@localhost ~] 2830 [00:06:35 root@localhost ~] 94
sort
1 2 3 4 5 6 7 8 - r:执行反方向(由下至上)整理- R:随机排序- n:执行按数字大小整理- h:人类可读排序,如:2K 1G- f:选项忽略(fold)字符串的字符大小写- u:选项(独特,unique),合并重复项,即去重- t:c选项使用c做为字段界定符- k
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [00:06:48 root@localhost ~] nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin test02:x:1004:1004::/home/test02:/bin/bash test01:x:1003:1003::/home/test01:/bin/bash [00:19:31 root@localhost ~] 192.168.100.1 - - [21/Jul/2022:11:07:35 +0800] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:07:36 +0800] "GET / HTTP/1.1" 403 199691 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:07:36 +0800] "GET /poweredby.png HTTP/1.1" 200 5714 "http://192.168.100.30/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:07:36 +0800] "GET /icons/poweredby.png HTTP/1.1" 200 643 "http://192.168.100.30/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:09:35 +0800] "GET / HTTP/1.1" 200 49 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:09:35 +0800] "GET /favicon.ico HTTP/1.1" 404 196 "http://192.168.100.30/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:10:27 +0800] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:10:27 +0800] "-" 408 - "-" "-" 192.168.100.1 - - [21/Jul/2022:11:10:27 +0800] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 192.168.100.1 - - [21/Jul/2022:11:10:28 +0800] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" [00:19:43 root@localhost ~] ^C [00:21:08 root@localhost ~] 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 192.168.100.1 [00:21:27 root@localhost ~] 192.168.100.1 192.168.100.30 [00:22:32 root@localhost ~] 文件系统 1K-块 已用 可用 已用% 挂载点 devtmpfs 1871176 0 1871176 0% /dev tmpfs 1899296 0 1899296 0% /dev/shm tmpfs 1899296 9648 1889648 1% /run tmpfs 1899296 0 1899296 0% /sys/fs/cgroup /dev/sda2 104806400 5981732 98824668 6% / /dev/sda5 99564036 727228 98836808 1% /data /dev/sda1 1038336 259948 778388 26% /boot tmpfs 379856 12 379844 1% /run/user/42 tmpfs 379856 0 379856 0% /run/user/0 [00:33:17 root@localhost ~] 26
面试题:两个文件a.txt ,b.txt 合并两个文件,并输出时确保每个数字也唯一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [00:38:13 root@localhost ~] 100 200 300 400 500 800 100 500 300 400 600 800 100 200 600 [00:38:32 root@localhost ~] 100 200 300 400 500 600 800
uniq
去重命令,uniq命令从输入中删除前后相接的重复的行
格式
1 uniq [option] ...[file]...
1 2 3 -c:显示每行重复出现的次数 -d:仅显示重复过的行 -u:仅显示不曾重复的行
1 2 3 4 5 6 7 8 9 10 [00:39:15 root@localhost ~] 16 192.168.100.1 14 192.168.100.1 5 192.168.100.30 3 192.168.100.1 1 192.168.100.30 1 192.168.100.30 1 192.168.100.1
diff
1 -u:选项来输出统一的(unified)different格式文件,最适用于补丁文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [01:34:42 root@localhost ~] 1,2d0 < 100 < 200 5c3 < 500 --- > 600 8c6,7 < 500 --- > 200 > 600 [01:34:58 root@localhost ~] --- a.txt 2022-07-23 00:37:40.166152947 +0800 +++ b.txt 2022-07-23 00:38:13.457150762 +0800 @@ -1,8 +1,7 @@ -100 -200 300 400 -500 +600 800 100 -500 +200 +600 [01:35:12 root@localhost ~] [01:36:28 root@localhost ~] [01:36:40 root@localhost ~] patching file a.txt [01:37:41 root@localhost ~] 300 400 600 800 100 200 600 100 200 300 400 500 800 100 500
patch
1 2 3 4 5 6 [01:38:06 root@localhost ~] #which vimdiff /usr/bin/vimdiff[01:41:15 root@localhost ~] #ll /usr/bin/vimdiff lrwxrwxrwx. 1 root root 3 9 月 22 2021 /usr/bin/vimdiff -> vim[01:41:32 root@localhost ~] #vimdiff a .txt a .txt .orig 还有 2 个文件等待编辑
cmp
1 2 3 4 5 6 7 8 9 10 11 [01:43:03 root@localhost ~] /bin/ls /bin/dir 不同:第 793 字节,第 1 行 [01:51:39 root@localhost ~] 0000316 U \0 274 313 L 027 Q l j 232 325 234 > 301 233 4 0000326 | 203 0000334 [01:53:09 root@localhost ~] 0000316 U \0 J 257 260 035 q B 266 347 340 376 . 345 } 372 0000326 347 Z < 365 206 216 \0 \0 \0 \0 003 \0 \0 \0 0000334
正则表达式
基本正则表达式元字符 字符匹配 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .:匹配任意单个字符(\n)外,可以是一个汉字或其他国家的文字 []:匹配指定范围的任意单个字符,示例:[zhang]、[0-9]、[a-z]、[a-zA-Z] [^ ]:匹配指定范围外的人员单个字符,示例[^zhang] [:alnum: ]:字母和数字 [:alpha: ]:表示因为大小写字符,可以是a-z,A-Z [:lower: ]:表示小写字母,等价于[a-z] [:upper: ]:表示大小字母,等价于[A-Z] [:blank: ]:表示空白字符 [:space: ]:包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广 [:cntrl: ]:不可打印的控制字符 [:digit:]:十进制数字 --------------------------------------------------------------------------- \s:匹配任何空白字符,包括空格、制表符(水平和垂直)、换行符、换页符等等,等价于[\f\r\t\v],主要Unicode正则 表达式会匹配全角空格符 \S:匹配任何非空白字符,等价于[^\f\r\t\v] \w:匹配任意一个字母,数字,下划线,汉字,其他国家文字的字符,等价于[_[:alnum:]字] \W:匹配任意非一个字母,数字,下划线,汉字,其他国家文字的字符,等价于[^_ [:alnum:]字]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [02:12:38 root@localhost ~] rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.d rc.local [02:13:00 root@localhost ~] rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
匹配次数
用在要指定次数的字符后面,用于指定前面电子阀要出现的次数
1 2 3 4 5 6 7 8 9 *:匹配前面字符的任意次数,包括0 次,贪婪模式:尽可能长的匹配 .*:任意长度的任意字符 \?: 匹配其前面的字符出现0 次或1 次,即可有可无 \+: 匹配其前面的字符出现最少1 次,即:肯定大于等于1 次 \{n \}: 匹配前面的字符N 次 \{m,n \}: 匹配前面的字符至少m次,最多n 次 \{,\n}:匹配前面的字符最多n 次,<=n \{n ,\}:匹配前面的字符不少于n 次
案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 [14:03:27 root@localhost data] aaa.txt aa.txt abc.txt acb.txt ada.txt ad.txt aed.txt afc.txt agb.txt ddda.log aab.txt aba.txt abd.txt acc.txt adb.txt aea.txt ae.txt afd.txt agc.txt aac.txt abb.txt ab.txt acd.txt adc.txt aeb.txt afa.txt af.txt agd.txt aad.txt '[abc][ab][abc].log' aca.txt ac.txt add.txt aec.txt afb.txt aga.txt ag.txt [14:03:30 root@localhost data] aaa.txt aab.txt aac.txt aad.txt aa.txt aba.txt abb.txt abc.txt abd.txt ab.txt aca.txt acb.txt acc.txt acd.txt ac.txt ada.txt adb.txt adc.txt add.txt ad.txt aea.txt aeb.txt aec.txt aed.txt ae.txt afa.txt afb.txt afc.txt afd.txt af.txt aga.txt agb.txt agc.txt agd.txt ag.txt [14:03:55 root@localhost data] aaa.txt aa.txt aba.txt aca.txt ada.txt aea.txt afa.txt aga.txt [14:06:10 root@localhost data] aaa.txt aa.txt [14:07:03 root@localhost data] aaa.txt aab.txt aac.txt aad.txt aa.txt aba.txt abb.txt abc.txt abd.txt ab.txt aca.txt acb.txt acc.txt acd.txt ac.txt ada.txt adb.txt adc.txt add.txt ad.txt aea.txt aeb.txt aec.txt aed.txt ae.txt afa.txt afb.txt afc.txt afd.txt af.txt aga.txt agb.txt agc.txt agd.txt ag.txt [14:07:16 root@localhost data] aaa.txt aa.txt aba.txt aca.txt ada.txt aea.txt afa.txt aga.txt [14:07:44 root@localhost data] aaa.txt aab.txt aac.txt aad.txt aa.txt aba.txt abb.txt abc.txt abd.txt ab.txt aca.txt acb.txt acc.txt acd.txt ac.txt ada.txt adb.txt adc.txt add.txt ad.txt aea.txt aeb.txt aec.txt aed.txt ae.txt afa.txt afb.txt afc.txt afd.txt af.txt aga.txt agb.txt agc.txt agd.txt ag.txt [14:08:13 root@localhost data] aaa.txt aa.txt
位置锚定
1 2 3 4 5 6 7 8 ^:行首锚定,用于模式的最左侧$: 行尾锚定,用于模式的最右侧 ^<PATTERN >$: 用于模式匹配最右侧 ^$: 空行 ^[[:space : ]]*$: 空白行 \< 或 \b:词首锚定,用于单词模式的左侧 \> 或 \b:词尾锚定,用于单词模式的右侧 \<PATTERN >:匹配整个单词
1 2 3 4 5 6 [14:31:34 root@localhost data] UUID=23a498b0-3783-46e4-b55f-fdb1e1c699bb / xfs defaults 0 0 UUID=39c438a4-ad8d-4c9c-a001-7794dc13131a /boot xfs defaults 0 0 UUID=6c74e5a8-ebc9-4329-8454-b838f5833073 /data xfs defaults 0 0 UUID=b65aa78c-be4d-4c68-a276-c31aee04579a none swap defaults 0 0
shell编程 if 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 [01:19:16 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 12 read -p "请输入你的成绩: " score 13 [[ $score =~ ^(100|[0-9]{1,2})$ ]] || { echo "请输入合法的分数!" ; exit ; } 14 if [ $score -lt 60 ] ;then 15 echo "及格!" 16 elif [ $score -lt 80 ] ;then 17 echo "良好!" 18 elif [ $score -lt 100 ] ;then 19 echo "优秀!" 20 else 21 echo "不及格!" 22 fi [02:11:55 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 12 read -p "请输入你的身高(m): " HIGH 13 if [[ ! "$HIGH " =~ ^[0-2]([.][0-9]{2})?$ ]] ;then 14 echo "请输入身高有误!" 15 exit 1 16 fi 17 read -p "请输入你的体重(kg): " WEIGHT 18 if [[ ! "$WEIGHT " =~ ^[0-9]{0,3}$ ]] ;then 19 echo "请输入体重有误!" 20 exit 2 21 fi 22 23 BMI=` echo $WEIGHT /$HIGH ^2|bc ` 24 25 if [ $BMI -le 18 ] ;then 26 echo "你太瘦了!" 27 elif [ $BMI -le 28 ] ;then 28 echo "你身材很棒!!" 29 else 30 echo "你太胖了!" 31 fi
case 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [04:19:17 root@localhost ~] 11 12 echo -en "\E[$[RANDOM%7+31];1m" 13 14 cat <<EOF 15 请选择! 16 1)备份数据库 17 2)清理日志 18 3)软件升级 19 4)删库跑路 20 EOF 21 22 23 read -p "请输入上面数字1-5: " MENU 24 [[ $MENU =~ ^[1-5]$ ]] || { echo "请输入正确的数字!" ; exit ; } 25 26 case $MENU in 27 1) 28 echo "备份数据库" 29 exit 30 ;; 31 2) 32 echo "清理日志" 33 exit 34 ;; 35 3) echo "软件升级" 36 exit 37 ;; 38 4) 39 echo "删库跑路" 40 exit 41 ;; 42 *) 43 echo "输入错误!" 44 esac 45 echo -en "\E[0m"
for 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [04:42:39 root@localhost ~] 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 [04:42:41 root@localhost ~] 1 2 3 4 5 6 7 8 9 10 11 12 13 for i in {1..9} ;do 14 for j in `seq $i ` ;do 15 echo -e "$i *$j =$[i*j]\t\c" 16 done 17 echo "" 18 done 19 exit
修改提示符格式范例
1 2 PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
提示符格式说明:
1 2 3 4 5 6 7 8 9 \e 控制符\033 \u 当前用户 \h 主机名简称 \H 主机名 \w 当前工作目录 \W 当前工作目录基名 \t 24小时时间格式 \T 12小时时间格式 ! 命令历史数
开机后命令历史数