class=「creativecommons」>
href=「
rel=「license」>
class=「article-source-link2222」>
href=「>
class=「markdown_views prism-github-gist」
id=「content_views」>
shell 有多個版本:bourne shell,c shell,korn shell,bash shell。現在廣泛使用的是bash shell,也就是 linux 中缺省內嵌的 shell。
互動模式
當我們通過遠端連線工具連線到了 linux 伺服器或者是虛擬機器上時,就是進入了 shell 互動模式:
指令碼模式
將要執行的一系列命令都存放在乙個檔案中,然後由 bash shell 讀取並執行,這就是 shell 的指令碼模式:
解釋一下上面的 test.sh 檔案的內容:
第一行:#!/bin/bash
,#!
標示這是乙個可以執行的指令碼(最好寫上),/bin/bash
標示這個指令碼是用該直譯器來進行的解釋。
第二行:# this is test
,以#
開頭的一般是注釋。
第三行:echo "hello world"
,向控制台輸出 hello world。
當前目錄下:bash test.sh
其他目錄下:bash /root/test.sh
(絕對路徑)
在指令碼第一行新增#!/bin/bash
。
給指令碼的擁有者新增x(可執行) 許可權chmod 744
。
直接在命令列輸入:./test.sh
以字母或下劃線開頭,後可以跟字母數字下劃線,區分大小寫。
直接「變數名=變數值」即可。
在 shell 中,直接通過變數名是獲取不到變數值的,需要在變數前加$
符號,更加嚴謹的做法是加${}
在某個 shell 中宣告的變數,在其他的 shell 中獲取不到。(不同的 shell 就是不同的命令列視窗)
作用於所有 shell(命令列視窗)的變數。
一些預設的環境變數如下:
bash:使用的 shell 直譯器的位置。
bash_version:shell 直譯器的版本。
uid:當前使用者的 id。
hostname:主機名。
lang:系統使用的語言。
path:該變數裡配置的路徑下的檔案可以直接執行。
unset aa
:取消定義好的 aa 變數。
shell中有一些預先定義的特殊唯讀變數,他們的值只有在指令碼執行時才能確定,位置引數就是其中的一種,$0
代表指令碼本身,$1
代表第乙個引數,依次類推。
在shell中,任何乙個命令執行過後都會有乙個返回值,這個返回值會指示上個命令的執行狀態,通過返回值就可以知道上乙個命令是否正確執行。
命令分兩種:可執行檔案+內建命令。
shell內建命令,就是由 bash 自身提供的命令,而不是其他地方提供的可執行檔案。
常用的一些內建命令:
type
:判斷乙個命令是不是內建命令。
alias
:為命令起別名。
unalias
:刪除別名。
jobs
:檢視後台的任務。
bg
:把任務放在後台繼續執行。
fg
:把任務放到前台執行。
ctrl + z
:把任務暫停,放到後台。
echo
:顯示某個變數的值。
exit
:當前使用者退出系統。
export
:將某個變數匯出為環境變數。
kill
:殺掉某個程序。
pwd
:列印當前所在的目錄。
shell程式設計入門(一)
shell程式設計簡介 在linux系統中,雖然有各種各樣的圖形化介面工具,但是shell仍然是乙個非常靈活的工具。shell不僅僅是命令的收集,而且是一門非常棒的程式語言。我們可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性 可維護性和便攜性比效率更重要...
Shell指令碼程式設計入門(一)
最近在學shell,記錄一下。if語句的使用 1.判斷兩個引數大小 bin sh a test about if statement a 10 b 20 if a eq b then echo parameter a is equal to parameter b elif a le b then ...
shell程式設計入門
shell指令碼程式不是複雜的程式,它是按行解釋的。指令碼程式總是以 bin sh 開始,它通知shell使用系統上的bourne shell直譯器。其中 符號是注釋。指令碼程式是從上到下執行的,執行指令碼前需要改變該指令碼程式的執行許可權。確保正確建立指令碼例徑,只有 這樣,指令碼程式才能正確執行...