菜鳥的linux成長日記-bash基礎特性2
阿新 • • 發佈:2018-08-25
alias 特性 mman 菜鳥 each 默認 NPU bash的基礎特性 dig bash的基礎特性(2)
一. 命令的別名(alias)
- alias可以將復雜的命令簡化, 來提高工作的效率. 例如系統中默認將"ls -l"alias成了"ll".
- 通過alias來管理命令
- (1) alias:顯示當前shell進程中所有可用的命令別名
$ alias alias l.=‘ls -d .* --color=auto‘ alias ll=‘ls -l --color=auto‘ alias ls=‘ls --color=auto‘ alias vi=‘vim‘ alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
- (2) alias NAME=‘VALUE‘定義別名NAME, NAME就相當於NAME了
$ alias cdnet=‘cd /etc/sysconfig/network-scripts‘ $ cdnet $ pwd /etc/sysconfig/network-scripts
Note: 在命令行中定義的別名, 僅對當前shell進程有效, 要定義在配置文件中
- (1) alias:顯示當前shell進程中所有可用的命令別名
- 僅對當前用戶有效: ~/.bashrc
-
對所有用戶有效: /etc/bashrc
bash進程重新讀取配置文件: source /path/to/config_file
-
撤銷別名(unalias)
unalias [-a] name[name....]-a: 撤銷所有別名
Note: 如果別名同原命令的名稱相同, 想要執行原命令, 可使用"\COMMAND"
二. glob/globbing: 通配符
glob在bash中用於實現文件名"通配"
通配符: *, ?, []
- (1) 用於任意長度的的任意字符 例如ab和aab,abb,acb,accccccb是一樣的
$ ls /etc/a*b /etc/aliases.db /etc/anacrontab
- (2) ? 匹配任意單個字符 例如a?b和akb,a1b,acb是一樣的
$ ls -d Downloa?s Downloads
-
(3) [] 匹配指定範圍內的任意單個字符 例如[a-z]
- (4) [^] 匹配指定範圍外的任意單個字符 例如[^0-9]表示除數字以外的任意字符
專用字符合集:
[:digit:] 任意數字,相當於0-9(實際用的時候要[[:digit:]]這樣用)
[:lower:] 任意小寫字符
[:upper:] 任意大寫字符
[:alpha:] 任意大小寫字符
[:alnum:] 任意數字或字母
[:space:] 任意空格字符
[:punct:] 標點符號
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:]
三. bash的快捷鍵
- Ctrl+l: 清屏, 相當於clear
- Ctrl+a: 將光標跳轉至命令開始處
- Ctrl+e: 跳轉至命令結尾處
- Ctrl+c: 取消命令執行
- Ctrl+u: 刪除命令行首至光標所在處的所有內容
- Ctrl+k: 刪除光標所在處至命令尾部的所有內容
四. bash的I/O重定向及管道
程序: 指令+數據
讀入數據: Input
輸出輸入: Output
打開的文件都有一個fd: file description(文件描述符)
標準輸入: keyboard, 0
標準輸出: monitor, 1
標準錯誤輸出: monitor, 2
I/O重定向: 改變標準位置
-
輸出重定向: COMMAND > NEW_POSITION, COMMAND >> NEW_POSITION
-
\>: 覆蓋重定向, 目標文件中的原有內容會被清除
-
\>>: 追加重定向, 新內容會追加到目標文件中
-
# 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
-
輸入重定向: <
-
HERE Documentation: <<
$ cat << EOF > fdsfadfads > fdsfs > EOF fdsfadfads fdsfs
- cat > /path/to/somefile << EOF: 輸入字符以EOF結尾並輸出至somefile
-
管道(將前一個命令的結果作為後一個命令的參數)
COMMAND1 | COMMAND2 | COMMAND3.....
Note :最後一個命令會在當前shell的子進程中執行
五. tee命令:
tee [OPTION]... [FILE]...
Copy standard input to each FILE, and also to standard output.
菜鳥的linux成長日記-bash基礎特性2