字元集合(某一範圍中的單一字元)
字元集合的符號是中括號:[ ],中括號裏頭放置要比對的字元範圍,其長度爲1
- [a-z]:英文小寫字母
- [A-Z]:英文大寫字母
- [a-zA-Z]:英文大小寫字母
- [0-9]:數字
- [a-zA-Z0-9]:英文數字
- [xyz]:x 或 y 或 z
- [a-z_-]:代表英文小寫字母、底線、以及「-」字元,將「-」放在開頭或者結尾
- [123.]:表示1、2、3、「.」、「」這五個字符中的一個
非在開頭放置「!」
括號擴展(Brace Expansion)
括號擴展的符號是:{ },它的用途是組合字符串
可以找出在 /usr/sbin 和 /usr/bin 目錄中,以 er 結尾的檔案,例如:/usr/sbin/adduer、/usr/sbin/safe_finger
ls -la /usr/{sb,b}in/*er
輸出 saby、scdy兩個字符
echo s{ab,cd}y:
找到 /bin 目錄中的 zegrep、zfgerp、zcmp 三支程式
ls /bin/z{[ef]gre,cm}p
找出 /etc 目錄下以 .confg、.cf、.org 結尾的檔案
ls /etc/*.{conf,cf,org} // ls /etc/apt/sources.list{,.bak} 找出 sources.list 和 sources.list.bak
找出 /etc 目錄下的檔案 profile 和 profile.bak(「,」之前沒有任何字元表示空字元)
ls /etc/profile{,.bak}
在 dir1 ~ dir3 目錄下,都建立 a、b、c 三個子目錄
sudo mkdir -p /root/tmp/{dir1, dir2, dir3}/{a, b, c}
輸出天干地支組合,例如:甲子、辛亥等
echo {甲,乙,丙,丁,戊,己,庚,辛,壬,癸}{子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥}
九九乘法表
echo {1,2,3,4,5,6,7,8,9}\*{1,2,3,4,5,6,7,8,9}
递增
echo {1..11..3}
递减
echo {100..80..5}
开头补零
echo {001..10}
序列扩展
echo {1..10} echo {a..z}
标准输入/输出转向
Unix-like 系统令人称道的地方就是,其标准输入/输出是可以重新指定到别的地方
1. 输出转向 > 转向附加 >>
用法:命令或script > 档案
echo 'hello world!' > hi.txt
原本 hello world 应该显示到屏幕上,由于使用了转向输出,改讯息不再出现,而是由 bash 开启一个新的档案 hi.txt 来存储这个字符串,存成档案后,只要使用 cat、 more、 less 等指令,就可以查看档案内容。
cat hi.txt
more hi.txt
less hi.txt
2. 转向输入 <
由键盘取得资料改由其它档案获取,称之为「转向输入」
wc -l 可以计算由键盘输入资料的行数,输入 line 5 后回车, Ctrl + D 退出
统计 error.log 存储了多少列的系统讯息
wc -l /var/log//apt/history.log
转向输入和转向输出合用
用法: 命令或script < 输入档 > 输出档
用例:sort < unsort.txt > sort.txt
unsort.txt 内容如图: