1.shell概述
shell是一個命令行解釋器,它為用戶提供了一個向linux內核發送請求以便運行程序的界面系統級程序,用戶可以用shell來啟動,掛起,停止甚至是編寫一些程序;
shell還是一個功能強大的編程語言,易編寫,易調試,靈活性較強。
shell是解釋執行的腳本語言,在shell中可以直接調用Linux系統命令;
用戶輸入命令,shell講命令通過ascii碼表翻譯成二進制給內核,內核調用計算機硬件來處理;同時計算機硬件可以將信息傳給內核,然后內核講信息傳遞個shell,shell講 字符顯示出來,相當于逆過程;
Windows有shell嗎?其實Windows中不叫shell,圖形化界面操作也可以叫做“shell”,只不過不這么叫而已;
2.shell分類
1.bourne shell基本淘汰,bourne家族主要包括sh,ksh,bash,psh;
2.c shell,主要包括:csh,tcsh;
Linux下所有支持的shell都可以在/etc/shells 里面查詢;
3.腳本執行方式
1、echo輸出命令和腳本執行格式:echo [選項] [輸出內容]
選項: -e:支持反斜線控制的字符轉換
echo "bols he cangls ni xihuan nayige"
/a - 輸出警告音
/b - 退格符
/n - 換行符
/r - 回車鍵
/t - 制表符,也就是tab鍵
/v - 垂直制表符
/0nnn - 按照八進制ASCII碼輸出字符
/xhh - 按照十六進制ASCII表輸出字符
echo -e "bols he cangls ni/b xihuan nayige"
echo -e "hell/bo"
echo -e "h/te/tl/nl/to/t"
echo -e "/x68/t/x65/t/x6c/n/x6c/t/x6f"
echo -e "/e[1;31m嫁人就要嫁鳳姐/e[0m"
#輸出顏色 /e[1;##m - 開啟顏色顯示; /e[0m - 關閉顏色顯示
#30m=黑色,31m=紅色,32m=綠色,33m=黃色
#34m=藍色,35m=洋紅,36m=青色,37m=白色
2、腳本執行:
方法1:賦予執行權限,直接運行
chmod 755 hello.sh
./hello.sh(或者絕對路徑執行 /root/hello.sh)
方法2:通過Bash調用執行腳本
bash hello.sh
3、
#!/bin/Bash
不是注釋,它標稱下面的內容是linux的標準腳本程序
如果該腳本使用純shell語句完成,不加#!/bin/Bash,運行沒問題
但腳本調用了其他語言,就會報錯
4.別名和快捷
1、可以通過alias ls='ls --color=never'設置新的別名
alias查看別名,前面為別名,后面為全名
一般是重啟,重登錄之后,就失效!
如果要長久有效,需要配置文件,配置好
vim比vi功能更強大,可以通過設置 alias vi='vim'的別名來調用,但是重啟重登錄之后失效
2、將別名寫入配置文件:
vi ~/.bashrc #寫入配置文件 永久生效
~是指每個用戶的目錄,每個用戶的目錄不一樣,配置文件不一樣,生成的效果也不一樣
寫完之后,source .bashrc
unalias 別名 #刪除別名
3、命令生效的順序
第一順位:執行命令用絕對路徑或者相對路徑執行的命令
第二順位:執行別名命令
第三順位:執行Bash內部命令
第四順位:按照$PATH環境變量定義的目錄查找的順序第一的命令
4、快捷鍵
Ctrl c 強制終止
Ctrl l 清屏
Ctrl u 刪除到行首
Ctrl a 光標移動到行首
Ctrl e 移動到行尾
Ctrl z 把命令放到后臺 (沒有終止,僅僅是放入后臺執行)
Ctrl r 在歷史記錄中搜索
5.歷史命令
history 歷史命令
history [選項] [歷史命令保存文件]
-c 清空歷史命令
-w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history
#默認保存1000條
HISTSIZE=1000
#vi /etc/PRofile 環境變量配置文件修改HISTSIZE
基本調用
上下箭頭來重復調用
!n 來執行第n條歷史命令
!! 重復執行上一條命令
!字符串 重復執行后一個該串開頭的命令
Tab鍵
進行命令(環境變量)和目錄補全(操作路徑)
6.輸出重定向
命令 &> /dev/null 將命令執行信息放到黑洞了或可以理解為垃圾回收站
7.管道符
";"連接命令 順序執行
"&&"連接命令 邏輯與執行 第一條執行 第二條執行 第一條錯誤 第二條不執行
"||"連接命令 邏輯或執行 第一條執行 第二條不執行 第一條錯誤 第二條執行
腳本中的應用:命令 && echo yes || echo no 命令正確yes 錯誤no
注意&& echo yes || echo no 順序不能顛倒,不然命令出錯的時候會同時輸出no yes
"|" 管道符 命令1|命令2 命令1正確的結果 作為命令2的操作對象
例如 ls -l > /etc/ | more “用于分頁顯示命令執行結果”
netstat -an | grep ESTABLISHED | wc -l "用于查看當前連接本機的客戶端 并 統計客戶端數量"
8.通配符
新聞熱點
疑難解答