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計劃中重要的工具軟件之一
目前也是Linux標準的shell,與sh兼容
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運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94245