Linux——命令行展開,命令別名(alias),快捷鍵,I/O重定向,管道,文本處理工具(wc, cut, sort, uniq)

一、命令行展開

~: 展開爲用戶的主目錄shell

~USERNAME:展開爲指定用戶的主目錄bash

{}:可承載一個以逗號分隔的列表,並將其展開爲多個路徑ide

  • /tmp/{a,b} = /tmp/a, /tmp/b
  • /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
1 練習:
2 (1) 如何建立/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b
3     mkdir /tmp/x/{y1,y2}/{a,b}        
4 
5 (2) 如何建立x_m, y_m, x_n, y_n
6     mkdir {x,y}_{m,n}
7 
8 (3) 如何建立/tmp/bin, /tmp/sbin, /tmp/usr, /tmp/usr/bin, /tmp/usr/sbin
9     mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
View Code

二、命令別名(alias)

經過alias命令實現:工具

(1) aliasspa

顯示當前shell進程全部可用的命令別名;命令行

(2) alias NAME='VALUE'code

定義別名NAME,其至關於執行命令VALUE;blog

注意:在命令行中定義的別名,僅對當前shell進程有效;若是想永久有效,要定義在配置文件中;排序

  • 僅對當前用戶:~/.bashrc
  • 對全部用戶有效:/etc/bashrc

小Tips:進程

編輯配置給出的新配置不會當即生效,須要讓bash進程從新讀取配置文件:source /path/to/config_file 或 . /path/to/config_file

撤消別名:unalias

unalias [-a] name [name ...]

Note: 若是別名同原命令的名稱,則若是要執行原命令,可以使用"\COMMAND";

三、bash的快捷鍵

Ctrl+a:跳轉至命令開始處;

Ctrl+e:跳轉至命令結尾處;

Ctrl+c:取消命令的執行;

Ctrl+u: 刪除命令行首至光村所在處的全部內容;

Ctrl+k: 刪除光標所在處至命令行尾部的全部內容;

四、bash的I/O重定向

程序:指令+數據

讀入數據:Input

輸出數據:Output

打開的文件都有一個fd: file descriptor (文件描述符)

標準輸入:keyborad(鍵盤), 0

標準輸出:monitor(顯示器), 1

標準錯誤輸出:monitor, 2

I/O重定向:改變標準位置

1)輸出重定向

COMMAND > NEW_POS, COMMAND >> NEW_POS

>:覆蓋重定向,目標文件中的原有內容會被清除;

>>: 追加劇定向,新內容會追加至目標文件尾部;

# set -C: 禁止將內容覆蓋輸出至已有文件中;

  • 強制覆蓋:>|

# set +C:取消進制

2>: 覆蓋重定向錯誤輸出數據流

2>>: 追加劇定向錯誤輸出數據流

標準輸出和錯誤輸出各自定向至不一樣位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合併標準輸出和錯誤輸出爲同一個數據流進行重定向:

&>:覆蓋重定向

&>>:追加劇定向

COMMAND > /path/to/file.out 2> &1

COMMAND >> /path/to/file.out 2>> &1

2)輸入重定向:<

tr命令:轉換或刪除字符

命令格式:tr [OPTION]... SET1 [SET2]

HERE Documentation:<<

# cat << EOF

# cat > /path/to/somefile << EOF

五、管道

管道:一個命令的輸出能夠經過管道作爲另外一個命令的輸入。

管道咱們能夠理解現實生活中的管子,管子的一頭塞東西進去,另外一頭取出來,這裏「 | 」的左右分爲兩端,左端塞東西(寫),右端取東西(讀)。

例:ls -alh | more  # 將當前路徑下的文件的詳細信息按照分頁的方式打印在屏幕上

1 練習:
2 一、將/etc/passwd文件中的前5行內容轉換爲大寫後保存至/tmp/passwd.out文件中;
3     # head -n 5 /etc/passwd | tr "a-z" "A-Z" > passwd.out
4 二、將登陸至將前系統上用戶信息中的後3行的信息轉換爲大寫後保存至/tmp/who.out文件中;
5     # who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
View Code

六、文本處理工具:

wc命令:

命令格式:wc [OPTION]... [FILE]...

  • -l: lines
  • -w: words
  • -c: characters

cut命令:

命令格式:cut [OPTION]... [FILE]...

  • -d DELIMITER: 指明分隔符
  • -f FILEDS:
    • #: 第#個字段
    • #,#[,#]:離散的多個字段,例如1,3,6
    • #-#:連續的多個字段, 例如1-6
    • 混合使用:1-3,7
  • --output-delimiter=STRING

sort命令:

命令格式:sort [OPTION]... [FILE]...

  • -f: 忽略字符大小寫
  • -r: 逆序
  • -t DELIMITER: 字段分隔符
  • -k #:以指定字段爲標準排序
  • -n: 以數值大小進行排序
  • -u: uniq,排序後去重

uniq命令:

命令格式:uniq [OPTION]... [FILE]...

  • -c: 顯示每行重複出現的次數;
  • -d: 僅顯示重複過的行;
  • -u: 僅顯示未曾重複的行;
  • Note: 連續且徹底相同方爲重複
相關文章
相關標籤/搜索