#linux linux歷史命令、shell基礎以及linux中的特殊符號
1、歷史命令
1.1 history命令
格式:history [選項] [歷史命令保存文件]
默認:顯示曾經輸入過的歷史命令
選項:
-c:清空歷史命令
-w:把緩存中的歷史命令寫入歷史命令保存文件~/.bash_history(若未寫入,此文件中保存的爲上次登錄使用的歷史命令)
歷史命令默認保存1000條,如果不夠,可在配置文件/etc/profile中修改表示命令數量HISTSIZE的值
1.2 歷史命令的調用
使用上、下箭頭調用以前的歷史命令
使用“!n”重複執行第n條歷史命令記錄
使用“!!”重複執行上一條命令
使用“!”字串重複執行最後一條以該字串的命令
2、shell基礎
2.1 shell概述
shell可以說是linux操作界面,linux的命令行解釋器,它的語法主要用Bourne(linux)和C(unix),Bourne包括sh、Ksh、Bash、psh、zsh,C家族包括csh、tsh。
使用echo $SHELL查看linux的shell
/etc/shells文件裏面包含Linux包含的支持的shell
輸入制定的shell名即可進入shell環境,輸入exit退出
2.2 shell腳本執行方法
1、echo 輸出命令
格式:echo [選項] [輸出內容]
選項:
-e:支持反斜線控制的字符串轉換,支持的控制字符有:
例如:
echo "\e[1;31m嫁人就要嫁鳳姐\e[0m" #輸出紅色的“嫁人就要嫁鳳姐”
#30m 黑色 31m紅色 32m 綠色 33m 黃色 34m 藍色 35m 洋紅 36m 青色 37m 白色
2、寫第一個腳本
vi hello.sh,輸入:
#!/bin/bash
#The first program
echo -e "\e[1;34mHello world!\e[0m"
3、執行腳本
(1)、賦予執行權限
chmod 755 hello.sh
. /hello.sh
(2)、通過bash調用執行腳本
bash hello.sh
2.3 Bash的基本功能
1、命令別名
通過設置別名,可以用別名來執行包含某個選項,某個參數的其他命令。
(1)、查看設定與別名
alias #查看系統中所有的命令別名
alias 別名='原命令' #設定命令別名,臨時生效
(2)、別名永久生效與刪除別名
vi ~/.bashrc #(~代表家目錄,對每個用戶單獨生效)寫入環境配置文件,需要重啓後纔會生效,或者輸入source .bashrc來使其立即生效
unalias 別名 #刪除別名,臨時刪除,若要徹底刪除,還需要在配置文件裏刪除相關內容
2、命令生效順序
第一順位執行用絕對路徑或相對路徑執行的命令
第二順位執行別名
例如:給rm -i添加一個別名rm,會先執行別名rm而不是rm命令
第三順位執行bash內部命令
第四順位執行按照$PATH環境變量自定義的目錄查找到的第一個命令
3、輸出重定向
(1)、標準輸入輸出
只有鍵盤是標準輸入,只有顯示器是標準輸出設備
(2)、輸出重定向
命令 > 文件名 #將某個命令的執行結果寫入到指定文件裏面(若文件不存在,則會新建;若文件存在且裏有別的內容,會覆蓋原來的內容)
命令 >> 文件名 #將某個命令的執行結果添加到某個文件,不會覆蓋(只能保存命令的正確輸出)
命令 2> 文件名 #將某個命令的錯誤信息寫入到指定文件裏面(若文件不存在,則會新建;若文件存在且裏有別的內容,會覆蓋原來的內容)
命令 2>> 文件名 #將某個命令的錯誤信息添加到某個文件,不會覆蓋
命令 > 文件 2>&1 或者 命令 &>> 文件 #將某個命令的執行結果與錯誤信息都寫入到指定文件裏面(若文件不存在,則會新建;若文件存在且裏有別的內容,會覆蓋原來的內容)
命令 >> 文件 2&1 或者 命令 &>> 文件 #將某個命令的執行結果和錯誤信息添加到某個文件,不會覆蓋
命令 >> 文件1 2>> 文件2 #將正確日誌和錯誤日誌分別添加到文件1和文件2,不會覆蓋
(3)、輸入重定向
wc [選項] [文件名]
選項:
-c:統計字節數
-w:統計單詞數
-l:統計行數
輸入命令後可以隨意輸入,按Ctrl+D退出,會根據選項顯示字節數、單詞數、行數等信息
wc < 文件 #把文件作爲命令的輸入(可以不寫小於號)
wc << 標識符 #統計輸入的內容和標識符相同的字符串之間的內容
3、linux中的特殊符號
3.1 管道符
作用在命令與命令之間的用來協調多條命令的使用順序的符號成爲管道符。
(1)、多命令順序執行
; 命令1;命令2 #多個命令順序執行,命令之間沒有任何邏輯關係
&& 命令1&&命令2 #邏輯與 當命令1正確執行,命令2纔會執行
|| 命令1||命令2 #邏輯或 當命令1執行不正確,命令2纔會執行
例如:可以使用 命令 && echo yes || echo no ,當命令執行正確會輸出yes,命令執行錯誤會輸出no
(2)、管道符
命令格式: 命令1 | 命令2 #命令1的正確輸出作爲命令2的操作對象
例如:ll -a /etc/ | more
netstat -an | grep "ESTABLISHED"
3.2 通配符
通配符用於在命令的參數上匹配字符符合要求的參數,常見的通配符有:
* 匹配任意多個內容
? 匹配任意一個字符
[] 匹配任意一箇中括號內的字符
例如:find / -name [adc]23 #在根目錄搜索文件,文件名爲a23或b23或c23
[-] 匹配括號中任意一個字符,-代表一個範圍
例如:[a-z]代表匹配一個小寫字母
[^] 邏輯非,表示匹配不是括號內的一個字符
例如:[^0-9]代表匹配一個不是數字的字符
3.3 Bash中其塔特殊符號
'' 單引號,在單引號內的所有特殊符號都沒有特殊含義
"" 雙引號,除了"$"(調用變量的值)、"`"(引用命令)、"\"(轉義符)之外,別的特殊符號都沒有特殊含義
`` 反引號,反引號括起來是系統命令,在bash中會先執行它。和$()作用一樣,推薦使用後者
$() 和反引號作用一樣,用來引用系統命令
# 在shell腳本中表示註釋
$ 調用變量的值,如需要使用變量name時,$name即可調用該變量
\ 轉義符,在此符號後面的特殊符號將失去特殊含義,變成普通字符。如輸出\$將會直接輸出$,而不是當作變量引用。