Shell簡介
shell通常被稱為“殼”,是為用戶提供操作界面的軟件(命令解析器)。它類似于dos下的command.com和后來的cmd.exe,接受用戶命令并調(diào)用相應(yīng)的應(yīng)用程序。
常見的Shell有兩種類型:圖形界面(GUI)和命令行終端(CLI)。
常用的GUI包括:
- Windows
- X-Window
- Gnome
- KDE
- Xfce
常用的CLI包括:
- bash
- sh
- csh
- zsh
- ksh
- tcsh
redhat和centos系統(tǒng)使用的默認(rèn)Shell是Bourne-Again Shell(bash)。bash是Bourne shell(sh)的改進(jìn)版本,是類unix系統(tǒng)中最成功的Shell之一。
當(dāng)Shell以交互方式使用時(shí),它會在等待用戶輸入命令時(shí)顯示一個(gè)字符串,這就是所謂的Shell提示符。普通用戶啟動(dòng)Shell時(shí),默認(rèn)提示符以$字符結(jié)束。
Linux基礎(chǔ)命令的格式通常為:
命令 [選項(xiàng)] [參數(shù)]
選項(xiàng)可以有零個(gè)或多個(gè),包括:
- 短選項(xiàng):以-開頭,多個(gè)選項(xiàng)可以組合,如-a -b可以寫成-ab
- 長選項(xiàng):以–開頭,通常不能組合
參數(shù)是命令的作用對象,可以有零個(gè)或多個(gè)。
Shell命令分為內(nèi)部命令和外部命令:
- 內(nèi)部命令:Shell內(nèi)置的命令
- 外部命令:在文件系統(tǒng)的某個(gè)路徑下有與命令名稱對應(yīng)的可執(zhí)行文件
使用type命令可以顯示命令的類型,例如:
[root@C20230104840383 ~]# type cd cd 是 shell 內(nèi)嵌
目錄管理命令
常用的目錄管理命令包括:
// 目錄管理 ls // 列出目錄內(nèi)容 -l // 長格式顯示 // 長格式顯示的第一段含義: 第一個(gè)字符:文件類型 - // 普通文件(f) d // 目錄文件 b // 塊設(shè)備文件(block) c // 字符設(shè)備文件(character) l // 符號鏈接文件(symbolic link file) p // 命令管道(pipe) s // 套接字文件(socket) 后面九位字符:文件權(quán)限 9位,每3位一組,每一組:rwx(讀,寫,執(zhí)行) // 長格式顯示的第二段含義: 文件硬鏈接的次數(shù) // 長格式顯示的第三段含義: 文件的屬主(owner) // 長格式顯示的第四段含義: 文件的屬組(group) // 長格式顯示的第五段含義: 文件大?。╯ize),單位是字節(jié) // 長格式顯示的第六,七,八段含義: 時(shí)間戳(timestamp),最近一次被修改的時(shí)間 訪問 // access,訪問的時(shí)間 修改 // modify,文件內(nèi)容被修改的時(shí)間 改變 // change,metadata(元數(shù)據(jù))變化的時(shí)間 -h // 做單位轉(zhuǎn)換 -a // 顯示以.開頭的隱藏文件 . // 表示當(dāng)前目錄 .. // 表示父目錄 -d // 顯示目錄自身屬性 -i // 顯示文件的inode(index node) -r // 逆序顯示 -R // 遞歸(recursive)顯示 cd // 切換目錄 pwd // 查看當(dāng)前所在目錄路徑 tree // 查看目錄樹 -d // 只顯示目錄 -L level // 指定顯示的層級數(shù)目 -P 字符串 // 顯示指定字符串匹配到的文件
文件管理
常用的文件管理命令包括:
// 文件管理 mkdir // 創(chuàng)建目錄 -p // 創(chuàng)建目錄時(shí)若父目錄不存在則自動(dòng)創(chuàng)建 -v // 顯示目錄創(chuàng)建過程 rmdir // 刪除目錄,只能刪除空目錄 touch // 創(chuàng)建一個(gè)空文件,touch一個(gè)已經(jīng)創(chuàng)建的文件修改時(shí)間戳 stat // 顯示文件或文件系統(tǒng)的狀態(tài) rm // 刪除文件,刪除命令默認(rèn)會提示是否需要?jiǎng)h除。 -r // 遞歸刪除,刪除目錄時(shí)必須使用此選項(xiàng) -f // 強(qiáng)制刪除,不詢問 cp // 復(fù)制文件,一個(gè)文件到一個(gè)文件,多個(gè)文件到一個(gè)目錄,可同時(shí)移動(dòng)多個(gè),最后必須為目的地 -r // 遞歸拷貝,拷貝目錄時(shí)必須使用此選項(xiàng) -p // 拷貝時(shí)保留原權(quán)限 -a // 相當(dāng)于-rp mv // 移動(dòng)文件,可同時(shí)移動(dòng)多個(gè),最后必須為目的地 // 特殊用法:改名,在當(dāng)前目錄進(jìn)行 mv 123 321 install // 復(fù)制文件并且設(shè)置屬性 -m MODE // 復(fù)制時(shí)修改權(quán)限 -o OWNER // 復(fù)制時(shí)修改文件屬主 -g GROUP // 復(fù)制時(shí)修改屬組
主機(jī)管理
常用的主機(jī)管理命令包括:
// 主機(jī)名管理 hostname // 查看或臨時(shí)修改主機(jī)名,重開終端生效,重啟失效 hostname uquq // 臨時(shí)修改主機(jī)名 hostnamectl // 查看或永久修改主機(jī)名,重開終端生效,重啟依然有效 hostnamectl set-hostname uquq // 永久修改主機(jī)名 或者直接編輯配置文件 vim 后續(xù)會繼續(xù)說到 vim /etc/hostname // 按i進(jìn)行編輯光標(biāo)在前一位進(jìn)行輸入或者按a進(jìn)行編輯光標(biāo)會自動(dòng)往后移一位,一般用a方便插入 按之后最下面會顯示 -- INSERT -- 可移動(dòng)光標(biāo)刪除寫入主機(jī)名,按ESC退出編輯,輸入:wq保存退出 // 其它 time // 顯示命令的執(zhí)行時(shí)間,例如time ls /etc clear // 清屏 whoami // 顯示當(dāng)前登錄用戶 who // 查看當(dāng)前在線用戶 w // 顯示當(dāng)前在線用戶并顯示其在運(yùn)行的命令 which // 顯示指定命令的絕對路徑 date // 顯示或設(shè)置日期與時(shí)間 // 不帶參數(shù)的date用于顯示當(dāng)前系統(tǒng)日期與時(shí)間 // 格式化輸出時(shí)間:+ %Y // 年 %m // 月 %d // 日 %F // 年-月-日 %H // 時(shí) %M // 分 %S // 秒 如date "+%Y-%m-%d" -s // 以字符串方式設(shè)置時(shí)間,如 date -s "+%Y-%m-%d" cal // 打印日歷 cal -3 // 打印三個(gè)月,上下一個(gè)月 cal -y // 打印一年 bc // Linux中的計(jì)算器 -l // 使用標(biāo)準(zhǔn)數(shù)學(xué)庫 echo 'scale=3;20/2'|bc -l // scale=3表示保留兩位小數(shù) ldd // 查看指定程序有哪些依賴庫文件 程序組成: 二進(jìn)制程序 庫文件 配置文件 幫助文件
獲取命令幫助
獲取命令幫助的方式包括:
// 內(nèi)部命令 help COMMAND // 外部命令 COMMAND --help // 在線文檔 info COMMAND // 命令手冊 manual man COMMAND // 文檔 /usr/share/doc whatis COMMAND // 用于查看COMMAND出現(xiàn)在man的哪一章節(jié)中。 // 查詢man幫助中此命令的作用 // man是分章節(jié)的,以下是每一章節(jié)的內(nèi)容介紹: 1 用戶命令(/bin,/usr/bin,/usr/local/bin); 2 系統(tǒng)調(diào)用; 3 庫調(diào)用; 4 特殊文件(設(shè)備文件); 5 文件格式(配置文件 的語法); 6 游戲; 7 雜項(xiàng)(Miscellaneous); 8 管理命令(/sbin,/usr/sbin,/usr/local/sbin) // man手冊注意事項(xiàng): [] // 可選 <> // 必選 ... // 可以出現(xiàn)多次 | // 多選一 {} // 分組 NAME // 命令名稱及功能簡要說明 SYNOPSIS // 用法說明,包括可用的選項(xiàng) DESCRIPTION // 命令功能的詳盡說明,可能包括每一個(gè)選項(xiàng)的意義 OPTIONS // 說明每一個(gè)選項(xiàng)的意義 FILES // 此命令相關(guān)的配置文件 BUGS // 報(bào)告bug EXAMPLES // 使用示例 SEE ALSO // 另外參照 // man翻屏 SPACE // 向后翻一屏 b // 向前翻一屏 enter // 向后翻一行 k // 向前翻一行 // 查找 /text // 向后 ?text // 向前 n // 下一個(gè) N // 前一個(gè) q // 退出
Bash特性
Bash支持以下特性:
- 支持命令歷史、命令補(bǔ)全
- 支持管道、重定向
- 支持命令別名
- 支持命令行編輯
- 支持命令行展開
- 支持文件名通配
- 支持變量
- 支持編程
Bash支持的引號包括:
"" // 雙引號,弱引用,可以實(shí)現(xiàn)變量替換 '' // 單引號,強(qiáng)引用,不完成變量替換 `` // 反引號,鍵盤左上角Esc下面的鍵,用于命令替換 $() // 與反引號用法相同,用于命令替換
常用操作
常用的操作命令包括:
// 光標(biāo)跳轉(zhuǎn) Ctrl+a // 跳到命令行首 Ctrl+e // 跳到命令行尾 Ctrl+u // 剪切光標(biāo)至命令行首的內(nèi)容 Ctrl+k // 剪切光標(biāo)至命令行尾的內(nèi)容 Ctrl+ // 剪切光標(biāo)所在位置到下一行的內(nèi)容