Linux 的命令機制
COMMAND [OPTIONS...] [ARGUMENTS...]
選項:用於啟用或關閉命令的某個或某些功能
短選項:-c 例如:-l, -h
長選項:--word 例如:--all, --human-readable
參數:命令的作用對象: 比如文件名和作用名
註意
1. *多個選項以及多參數和命令之間使用空白字符串分隔*
2. *取消和執行命令執行:Ctrl+c,Ctrl+d*
3. *多個命令可以用 ; 符號分開*
4. *一個命令可以用 \ 分成多行*
命令的提示符與用戶的uid
Linux中的用戶跟windows 一樣也分為管理員和普通用戶。
在Linux中,系統是根據你的uid來判斷你是否是管理員,而不是通過你的用戶名來判斷
Linux用戶
系統是通過uid來判斷用戶是否是Root用戶,Root用戶的uid為0
Root用戶(超級用戶)? ? ?
root用戶 在命令提示符表示為# uid為0
普通用戶命令提示符表示為 $
普通用戶uid:?
centos6:從500開始
centos7:從1000開始
上面提示符的顏色是根據PS1的環境變量而義
>PS1=[\e[1;32m][\u@\h \W]\$[\e[0m]
bash Shell
交互式接口
交互式接口:啟動終端後,在終端設備附加一個交互式應用程序 GUI:Graphic User Interface X protocol, window manager, desktop Desktop: GNOME (C, 圖形庫gtk), KDE (C++,圖形庫qt) XFCE (輕量級桌面 CLI:Command Line Interface shell程序:sh(bourn 史蒂夫·伯恩)cshtcshksh(korn)bash (bourn again shell)GPL zsh
Shell 是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。
由於歷史原因,有許多的shell。shell也被稱為LINUX的命令解釋器(command interpreter)shell負責把不同的語言翻譯成對應的二進制。
就好像不同的不同的國家有不同的語言
shell是用戶和內核、操作系統打交道的一個接口
應用程序通過系統調用和庫來訪問系統硬件和內核,也因此Linux開機運行就被加載到時內存中。讀取的速度快於外部命令。
shell把你的命令解析成系統能識別的二進制來執行。
bash shel
GNU Bourne-Again Shell(bash)是GNU計劃中重要的工具軟件之一
CentOS默認使用
顯示當前使用的shell
echo ${SHELL}
顯示當前系統使用的所有shell
cat /etc/shells
內部命令
內部命令是集成在shell程序的一部分,這些命令由shell程序識別並在shell程序內部完成運行,通常在linux系統加載運行時shell就被加載並駐留在系統內存中.
內部命令幫助用法 help cmd
內部命令的查看命令
enable : 內部命令的禁用與啟用
help: 查看內部命令是否被禁用,命令前面帶 *
的是被禁用的命令
外部命令
外部命令簡單的說系統之上運行的程序,當系統讀取外部命令時,要到磁盤上讀取,這樣會顯的速度比較慢。由於linux的特性,當系統查找外部命令時,系統會按PATH環境變量
的路徑從左往右 一個一個的來查找,當前面的路徑找到了,後面的路徑就不找了。
~]# echo $PATH
外部命令的幫助
幫助用法 cmd --help
查看命令
which : 查看外部命令在PATH
放的路徑,不會查看緩存(按*PATH*
中的優先順序顯示)
加上-a會查看看外部命令在PATH
中的所有路徑和命令別名
> whereis : 查出命令所在的路徑以及man幫助相關文檔的路徑
判斷命令是否是外部命令
type :
type cmd
type cmd=========區分是外部命令還是內部命令。會按命令的優先級來顯示
外部命令是在PATH的路徑(如果有別名的存在,會按搜索命令的優先級來顯示。但也會按hash緩存來找)
hash
系統初始hash表為空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到後會將這條命令的路徑記錄到時hash表中,當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率。
註意: 當我們執行一個外部命令時,hash表會記錄外部命令的緩存。但不會記錄內部命令(內部命令是集成在bash shell裏)。
如果此時將這個命令移動到PATH變量中的另一個路徑或其它路徑。再來執行這個命令,此時命令會報錯,因為在hash表中記錄了這個路徑。系統只要找到了這個路徑,就不會往後面去找了。
Linux查找命令時,是否看命令的名字
Linux在查找命令時,是按命令的名字來查找,不是按命令的本質來查找。
命令別名
命令別名的常用命令: unalias alias
當系統開始運行時,會把磁盤上的別名配置文件(~/.bashrc或/etc/.bashrc)加載到內存中,系統運行的是內存中的別名。即使用unalias把別名給刪了,也只是在當前終端無法執行別名,等系統退出重新登錄,又可以使用這個別名了。因為並沒有改別名的配置文件啊!
命令別名如何使用原始命令
-
在命令前面加 \
-
寫上全路徑,(內部命令不適用)
- 用單引號把命令引起來
在linux中命令的搜索路徑
當你在命令提示符下敲一個字符串時,後臺做了一件事中,先用/bin/bash這個程序,來判斷一下你輸入的內容是何種程序,是不是能找到這個程序。先判斷是否是命令別名,再判斷是否是內鍵命令,然後再看是否有外部命令緩存hash,最後判斷是否是外鍵命令PASH。然後報錯。
Linux 的命令機制