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