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