1 、bash的基本特性
bash的特性是不是都在.bash裏面呢?
通過alias 顯示當前shell中所有的命令別名
設置別名 直接alias 名稱=名稱就行
此設置的別名只在此shell中管用,如果想全局生效的話 需要修改配置文件 本用戶的配置文件在 ~bashrc
全局用戶的在/etc/bashrc裏面
修改後不會立即生效的 需要重新進去shell或者是 ./etc/shellrc/
2 、unalias撤銷別名
unalias 別名
unalias -a 會撤銷所有的別名
3 如果定義了一個命令的別名後 使用COMMAND(定義的別名)
二 glob
bash中用於實現文件名“通配”
通配符有 ? [ ] 三個
代表任意任何個字符
?代表任意一個字符
3 [ ]
匹配指定範圍內的任意字符 中括號表示一個範圍內的字符
這些以前都學過 但是都忘了 一定要做一次LFS
[root@localhost glob]# touch aVb
[root@localhost glob]# ls a[a-z]b
aab abb aVb
[root@localhost glob]# ls a[A-Z]b
abb aVb
[root@localhost glob]#
[0-9]
[a-z]:不區分大小寫 所有的字母都匹配 所以難道就沒法只匹配小寫字母嗎?
[A-Z]:只會匹配大寫字母,
如果:只要特殊字符的?怎樣配匹配呢?
有一個取反的選項^
有一個專用字符表示法:
man glob 我這個centos7 沒有
3、bash的快捷鍵
Ctrl +l 清屏 相當於clear
Ctrl+a 光標移動到最前面
Ctrl+e 光標移動到坐後面
Ctrl+u 剪切光標前的所有命令
Ctrl+k 撿錢光標後面的所有命令
Ctrl+p 粘貼所剪切的命令
四。。。
輸入輸入I/O重定向及管道符
I:讀入數據:input
O:輸出數據:output
I/O重定向就是輸入輸出重定向改變輸入輸出位置
標準輸入:keyborad, 系統默認使用 數字 0 表示
標準輸出:monitor, 系統默認使用數字 1 表示
標準錯誤輸入:monitro 系統默認使用數字2表示
把本來的標準輸入(鍵盤或者是系統信息)
輸出重定向:
>: 覆蓋重定向,會把目標位置文件內容清除掉,如果沒有目標文件會自動創建
>>:追加重定向:在目標文件已經存在的內容後面追加內容
覆蓋重定向很危險 所有有set -c :禁止將已有文件的內容覆蓋掉
這樣只對當前bash生效 想要永久生效需要修改配置文件
但是:如果非要覆蓋的話 有兩個方法 1、 強制覆蓋 >| 2、關閉 set +c
以上都是正確的標準 輸出 其實可以使用 1>來重定向的 但是數字1 在此忽略了
那麼錯誤的標準輸出就是 2>了 這裏的2 不能省略。。
以上真確的 錯誤的 只能轉職專用 不能用混了 所以很麻煩
有沒有一種 不管她是正確還是錯誤輸出 都可以使用的? &>
cat /etc/passwd > /tmp/zhencque 2> /tmp/err
這樣還是麻煩 還是兩個文件
&> 這個是最終的 合併兩個數據流爲一個
cat /etc/passwd &> /tmp/zhengqueorcuowu
COMMANO > /tmp/file 2> &1 這樣也行其中的&1是引用了前面第一個文件,也能&2 &3 &4
** 輸入重定向** < 小於號
以前總聽說輸出重定向 第一次聽說輸入重定向,看來還是系統的學習下比較好啊!!
首先說一個命令 以前沒見過的 tr 具體用法看下圖
[root@localhost ~]# tr abc 123
abwer
12wer
cccccccc
33333333
ni hao
ni h1o
自動替換 以空格區分前後(只要輸入中有abc三個字母任意個,則會相對應的替換爲123)
輸入重定向,如下圖,可以把/etc/passwd中的小寫abc替換成大寫ABC
此處生成文檔 << 兩個小於號
它好像是隻能和cat鏈接使用
也可以重定向到別的文件 例如:
cat >> /tmp/rc.log << EFO
hao a you
EFO
[root@localhost ~]# cat /tmp/rc.log
hao a you
以上值得注意的是 << EFO是關鍵的 結尾的時候也要輸入EFO
當然也可以輸出重定向到其他文件 但是重定向要寫到後面 例如:我想把/etc/passwd文件裏面的abc都替換成123 另存爲到其它的文件
但是怎樣能讓tr把所有的輸出看成一個整體的單詞呢????然後替換文件內的單詞行不行啊?
後期查下???,現在反過頭來看下,要把它看成一個整個的單詞,可以使用前後錨定,利用正則表達式應該可以的...
tee命令,分兩路輸出 顯示屏上輸出一份 還可以在文檔中保存一份
例如:
[root@localhost ~]# echo $PATH | tr 'a-z' 'A-Z' | tee /tmp/tee.txt
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN
[root@localhost ~]# cat /tmp/tee.txt
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN
這個用的也挺好的,把tr放在了管道符後面 接受前面的輸出....
當然 tr還有一個-d選項