第一章:常用标点符号
【|】管道
[root@Never-downtime oldboy]# find /qunchao/ -type f -name "*txt" | egrep oldboy
/qunchao/stu3.txt
/qunchao/stu7.txt
/qunchao/stu6.txt
/qunchao/stu2.txt
/qunchao/stu4.txt
/qunchao/stu1.txt
/qunchao/stu8.txt
/qunchao/stu10.txt
/qunchao/stu9.txt
/qunchao/stu5.txt
【|xargs】传送文件
[root@Never-downtime oldboy]# find /qunchao/ -type f -name "*.txt" |xargs rm -f
【.】当前目录,任意一个字符(正则)
[root@mysql-db01 ~]# ll ./
total 8384
-rw-------. 1 root root 1073 Mar 9 18:14 anaconda-ks.cfg
-rw-r--r-- 1 root root 603 May 24 09:55 ansible_61.sh
【..】当前目录的上一级目录
[root@mysql-db01 ~]# cd ..
【*】任意0个或多个字符
[root@mysql-db01 ~]# ll *
【>】输出重定向
[root@mysql-db01 ~]# echo 123 >a.txt
[root@mysql-db01 ~]# cat a.txt
123
【>>】追加输出重定向
[root@mysql-db01 ~]# echo 456 >>a.txt
[root@mysql-db01 ~]# cat a.txt
123
456
【<】输入重定向
[root@mysql-db01 ~]# cat a.txt
123
456
[root@mysql-db01 ~]# vim b.txt
while read line ;do
echo $line
done <a.txt
[root@mysql-db01 ~]# sh b.txt
123
456
【<<】追加输入重定向
[root@mysql-db01 ~]# cat <<END
> 1
> 2
> 3
> 4
> END
1
2
3
4
【#】注释/root超级用户提示符
[root@mysql-db01 ~]#
【$】取变量里的内容
[root@mysql-db01 ~]# a=1
[root@mysql-db01 ~]# echo $a
1
【&&】表示并且 前一个命令成功 你是男生&&你喜欢女生
[root@mysql-db01 ~]# echo 123 >a.txt && cat a.txt
123
【“】反引号
[root@mysql-db01 ~]# find . -type f -name "*.txt"
./b.txt
./a.txt
[root@mysql-db01 ~]# rm -f `find . -type f -name "*.txt"`
【;】分号
[root@mysql-db01 ~]# ls ;ll
anaconda-ks.cfg change_ip_host.sh install.log.syslog PPP
ansible_61.sh install.log percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
total 8388
-rw-------. 1 root root 1073 Mar 9 18:14 anaconda-ks.cfg
-rw-r--r-- 1 root root 603 May 24 09:55 ansible_61.sh
-rw-r--r-- 1 root root 2483 May 24 08:50 change_ip_host.sh
-rw-r--r--. 1 root root 21764 Mar 9 18:14 install.log
-rw-r--r--. 1 root root 5890 Mar 9 18:13 install.log.syslog
-rw-r--r-- 1 root root 8534624 Jul 21 2016 percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 13 Jul 6 21:06 PPP
【-】横杠
[root@mysql-db01 ~]# cd -
【~】家目录
[root@mysql-db01 ~]#
【^】尖角号 取开头
[root@mysql-db01 ~]# ls|egrep "^a"
anaconda-ks.cfg
ansible_61.sh
【/】根/路径分隔符
[root@mysql-db01 ~]# cd /
【+】匹配重叠 正则表达式
[root@mysql-db01 /]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:5F:9F:90
inet addr:10.0.0.51 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5f:9f90/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29639 errors:0 dropped:0 overruns:0 frame:0
TX packets:18440 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34801386 (33.1 MiB) TX bytes:1590456 (1.5 MiB)
[root@mysql-db01 /]# ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}'
10.0.0.51
【!】取反
[root@mysql-db01 ~]# find . -type f ! -name "anaconda-ks.cfg"
第二章:通配符含义
他是shell的内置功能。
通配符(wildcard),用过DOS的应该很了解,也是很常用的。
通配符,只的是包含这些字符的字符串,”?” , ‘[’ ,{}
通配符是用来匹配/查找文件名。
Linux命令基本都支持通配符。
第三章:通配符案例详解
【*】找出以stu开头的文件
[root@Never-downtime gqc]# ls -l stu*
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu00.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu01.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu02.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu03.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu04.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu05.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu06.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu07.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu08.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu09.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu10.txt
【?】任何一个字符/文本
[root@Never-downtime gqc]# ls /sbin/??
【[]】表示一个整体,里面有多重情况。我要找a或b或c或d
[root@Never-downtime gqc]# ls *[123]*
oldboy01.log oldboy03.log stu01.txt stu03.txt
oldboy02.log oldboy10.log stu02.txt stu10.txt
【{}】生成序列
[root@Never-downtime gqc]# echo {0..9}
0 1 2 3 4 5 6 7 8 9
【!abc】!表示非 取反
[root@Never-downtime gqc]# ls -l stu0[!1-5].txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu00.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu06.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu07.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu08.txt
-rw-r--r-- 1 root root 0 Mar 22 16:14 stu09.txt
【{}与[]区别】
[root@Never-downtime gqc]# echo oldboy[0-9]
oldboy[0-9]
[root@Never-downtime gqc]# echo oldboy{0..9}
oldboy0 oldboy1 oldboy2 oldboy3 oldboy4 oldboy5 oldboy6 oldboy7 oldboy8 oldboy9
【重定向符号】
>##输出重定向 会清空原文及内容 然后再想文件里面追加内容
>>#追加输出重定向 追加到文件的最后一行
<##输入重定向 tr xargs
<<#cat用来给文件追加文本
[root@Never-downtime gqc]# cat >>oldboy.txt<<PPP
> oldboy
> oldgirl
> PPP
【$】
1.引用变量 去变量的值 或 普通用户的命令提示符 echo $PATH
2.$取第几列 $数字
3.普通用户的命令提示符
【&&】和 并且
cd / && tar zcf /tmp/and.tar.gz etc/bin/usr/local
ifdown eth0 && ifup eth0
【”】
[root@mysql-db01 ~]# echo '$LANG $(which mkdir) {a..z}'
$LANG $(which mkdir) {a..z}
【”“】
[root@mysql-db01 ~]# echo "$LANG $(which mkdir) {a..z}"
en_US.UTF-8 /bin/mkdir {a..z}
【不加引号】
[root@mysql-db01 ~]# echo $LANG $(which mkdir) {a..z}
en_US.UTF-8 /bin/mkdir a b c d e f g h i j k l m n o p q r s t u v w x y z