字元集合

字元集合(某一範圍中的單一字元)

字元集合的符號是中括號:[ ],中括號裏頭放置要比對的字元範圍,其長度爲1

  1. [a-z]:英文小寫字母
  2. [A-Z]:英文大寫字母
  3. [a-zA-Z]:英文大小寫字母
  4. [0-9]:數字
  5. [a-zA-Z0-9]:英文數字
  6. [xyz]:x 或 y 或 z
  7. [a-z_-]:代表英文小寫字母、底線、以及「-」字元,將「-」放在開頭或者結尾
  8. [123.]:表示1、2、3、「.」、「」這五個字符中的一個
    非在開頭放置「!」

括號擴展(Brace Expansion)

括號擴展的符號是:{ },它的用途是組合字符串

  1. 可以找出在 /usr/sbin 和 /usr/bin 目錄中,以 er 結尾的檔案,例如:/usr/sbin/adduer、/usr/sbin/safe_finger
ls -la /usr/{sb,b}in/*er
  1. 輸出 saby、scdy兩個字符
echo s{ab,cd}y:
  1. 找到 /bin 目錄中的 zegrep、zfgerp、zcmp 三支程式
ls /bin/z{[ef]gre,cm}p
  1. 找出 /etc 目錄下以 .confg、.cf、.org 結尾的檔案
ls /etc/*.{conf,cf,org}
// ls /etc/apt/sources.list{,.bak} 找出 sources.list 和 sources.list.bak
  1. 找出 /etc 目錄下的檔案 profile 和 profile.bak(「,」之前沒有任何字元表示空字元)
ls /etc/profile{,.bak}
  1. 在 dir1 ~ dir3 目錄下,都建立 a、b、c 三個子目錄
sudo mkdir -p /root/tmp/{dir1, dir2, dir3}/{a, b, c}
  1. 輸出天干地支組合,例如:甲子、辛亥等
echo {甲,乙,丙,丁,戊,己,庚,辛,壬,癸}{子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥}
  1. 九九乘法表
echo {1,2,3,4,5,6,7,8,9}\*{1,2,3,4,5,6,7,8,9}
  1. 递增
echo {1..11..3}
  1. 递减
echo {100..80..5}
  1. 开头补零
echo {001..10}
  1. 序列扩展
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 退出

**wc -l 统计行数 **

统计 error.log 存储了多少列的系统讯息

wc -l /var/log//apt/history.log
**wc -l /var/log//apt/history.log**

转向输入和转向输出合用

用法: 命令或script < 输入档 > 输出档
用例:sort < unsort.txt > sort.txt

unsort.txt 内容如图:

image.png

利用转向输出做简易编辑

 grandkai ~ cat > out.sh
#! /bin/bash

echo 'hello world!'

推荐阅读更多精彩内容