bash shell學習的記錄
1,什麼是bash shell
在linux核心下,無論什麼版本的linux發行版,都會有下列的shell支援。BASH,CSH,TCSH,ZSH,SCSH. 這些shell都是由最初的shell發展而來的。你可以參考如下的框架圖理解。
通過上面的關係圖,可以清楚的明白,shell是使用者需求和linux核心之間的一個轉換媒介,使用者為了讓linux系統處理使用者的需求完成特定的任務,使用者可以編寫shell,執行shell程式就能實現與linux核心之間的互動,linux核心與計算機的底層硬體之間存在雙向的互動,從而實現控制硬體的功能。shell語言是一種命令列語言的互動。
2,CLI(commond line interface),命令列互動
shell語言提供與linux核心之間的互動,這樣我們就可以通過命令列鍵入命令就可以實現與linux的互動。
2.1 怎麼找到當前的shell 型別
$ cat /etc/shells
>>
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
因為我使用的是ubuntu系統而且安裝了tmux工具,所以會有/usr/bin/tmux。你可能會沒有,這裡,每個人的情況可能都不相同。當時學習的是bash,支援bash即可。
2.2 基礎的命令列快捷鍵
快捷鍵 | 含義 |
---|---|
CTRL-L | 清除命令視窗 |
CTRL-W | 刪除當前命令列中游標所在位置的一個單詞 |
CTRL-U | 刪除當前命令列一行的全部內容 |
CTRL-R | 搜尋之前使用過的命令 |
CTRL-C | 取消當前正在執行的命令 |
例如,你可以在命令列輸入date命令。
$ date
>>
2018年 11月 26日 星期一 09:16:14 CST
這是當你輸入快捷鍵 CTRL+L則命令視窗會被清空!,你可一不斷嘗試理解上面表格的命令含義。
2.3 ,在linux中獲得命令的幫助
如果你使用過python,matlab你會很清除的理解help是什麼。當你不知道**某一和函式或者關鍵詞**的意義或者怎麼使用時,你可以使用help等指令,在linux中你可以在命令列中使用如下三種方式檢視某一個指令的含義和使用方式
man date
info date
date --help
3, shell 程式設計的大體流程總結
3.1 type 命令
type命令是用來找出一個命令,它是屬於內嵌(build-in)還是外部的二進位制可執行檔案
例如,
$ type -a ls
>>
ls is aliased to `ls --color=auto'
ls is /bin/ls
$ type -a date
>>
date is hashed (/bin/date)
$ type -a history
>>
history is a shell builtin
$ type -a echo
>>
echo is a shell builtin
echo is /bin/echo
等等命令,都可以使用type命令檢視它的型別。這裡
# -a,a是值all的意思
$ type -a
3.2 起手“Hello,world!”
- 開啟一個命令列,通過ctrl+alt+t.
- 進入你學習bash自己建立的資料夾內,建立一個bash檔案,比如 vim begin00.sh 當然字尾名.sh不一定是必要的,當時為了區分不造成誤解,我就加上了。
- 在檔案第一行輸入#!/bin/bash
因為我比較習慣使用vim編輯器,所以我都會一直使用vim建立或者開啟一個檔案,當然你可以使用gedit等其他編譯器做同樣的操作。
如果你像學習vim可以參考這兩篇文章,
- 關於vim的配置: https://blog.csdn.net/SimileciWH/article/details/83540394
- 關於vim的指令操作:https://blog.csdn.net/SimileciWH/article/details/83790409
言歸正傳,你的檔案應該是這樣的
#!/bin/bash
echo "Hello, world!"
關於第一句#!/bin/bash,#是註釋,!是特殊字元告訴編譯器去下面的位置對應的編譯器對該檔案一下全部內容作解釋。你可以通過type命令檢視bash的位置
$ type -a bash
>>
bash is /bin/bash
第二句使用了echo命令,就是輸出雙引號中的全部內容。
3.3 bash檔案設定成可執行檔案,執行bash程式
$ chmod +x "你的檔案存放的路徑"/"檔名"
#for instance
$ chmod +x ~/Public/bash_lerning/begin00.sh
然後開啟一個命令視窗,執行程式,有下面三種方法:
$ . "檔案路徑"/"檔名"
$ ./"檔案路徑"/"檔名"
$ bash /"檔案路徑"/"檔名"
例如,
$ . ~/Public/base_learning/begin00.sh
>>
Hello, world!
如果不設定可執行檔案即不執行3.3操作,則直接執行bash檔案會提示:bash: “檔案”: Permission denied!
3.4 debug bash script
有5種方式,對bash 指令碼進行debug
$ bash -x bash-name #第一種
$ bash -xv bash-name #第二種
第3種方式,在bash檔案中設定
#!/bin/bash -x
第4種方式,在bash檔案中設定
#!/bin/bash
## Turn on debug mode##
set -x
...
...
...
##Turn off debug mode##
set +x
第5種
#!/bin/bash -x
set -n #只閱讀bash程式,不執行程式
set -o noexec
第5種方式一般用來檢查bash檔案的是否存在語法錯誤
4, shell中的變數
4.1 系統變數
可以通過如下3種指令檢視系統變數
$ set
$ env
$ printenv
功能快捷鍵
撤銷:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜體:Ctrl/Command + I
標題:Ctrl/Command + Shift + H
無序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
檢查列表:Ctrl/Command + Shift + C
插入程式碼:Ctrl/Command + Shift + K
插入連結:Ctrl/Command + Shift + L
插入圖片:Ctrl/Command + Shift + G
如何改變文字的樣式
強調文字 強調文字
加粗文字 加粗文字
標記文字
刪除文字
引用文字
H2O is是液體。
210 運算結果是 1024.
建立一個表格
一個簡單的表格是這麼建立的:
專案 | Value |
---|---|
電腦 | $1600 |
手機 | $12 |
導管 | $1 |
FLowchart流程圖
我們依舊會支援flowchart的流程圖:
- 關於 Flowchart流程圖 語法,參考 [這兒][4].