1.強大好用的Shell
Shell是一個命令工具。Shell(也稱終端或殼)充當的是人與內核(硬件)之間的翻譯官,用戶把一些命令“告訴”終端,它會調用相應的程序服務去完成某些工作。
現在紅帽系統在內的許多主流Linux系統默認使用的終端是Bash解釋器,它主要有以下4項優勢:
①通過上下方向鍵來調取過往執行過的Linux命令;
②命令或參數僅需輸入前幾位就可以用Tab鍵補全;
③具有強大的批處理腳本;
④具有實用的環境變量功能。
2、執行查看幫助命令
Linux命令格式:
命令名稱 [命令參數]? [命令對象]
注意,命令名稱 、命令參數、命令對象之間要用空格鍵隔開。
長格式? man --help
短格式? man -help
首先我們先拿man這個命令實現一下
切換到root管理員身份
打開Linux系統命令行終端(我這里使用的是8版本哈)
輸入man man命令查看man命令自身的幫助信息(敲回車鍵即可)
man命令中常用按鍵以及用途
按鍵 | 用途 |
空格鍵 | 向下翻一頁 |
PaGe down | 向下翻一頁 |
PaGe? up | 向上翻一頁 |
home | 直接前往首頁 |
end | 直接前往尾頁 |
/ | 從上至下搜素某個關鍵詞,如“/linux” |
? | 從上至下搜素某個關鍵詞,如“?linux” |
n | 定位到下一個搜索到的關鍵詞 |
N | 定位到上一個搜索到的關鍵詞 |
q | 退出幫助文檔 |
man命令幫助信息的結構意義
結構名稱 | 代表意義 |
NAME | 命令的名稱 |
SYNOPSIS | 參數的大致使用方法 |
DESCRIPTION | 介紹說明 |
EXAMPLES | 演示(附帶簡單的說明) |
OVERVIEW | 概述 |
DEFAULTS | 默認的功能 |
OPTIONS | 具體的可用選項(帶介紹) |
ENVIRPNMENT | 環境變量 |
FILES | 用到的文件 |
SEE ALSO | 相關的資料 |
HISTORY | 維護歷史與聯系方式 |
常用系統工作命令
1、echo命令
echo命令用于在終端輸出字符串或變量提取后的值,格式為:echo [字符串|$變量]
例如:把指定字符串“happy”輸出到終端屏幕的命令為
[root@localhost ~]# echo happy
下面,我們使$變量的方式提取SHELL的值
[root@localhost ~]# echo $SHELL
2、date命令
date命令用于顯示及設置系統的時間或日期
格式為:data [選項][+指定的格式]
date命令中參數及其作用
參數 | 作用 |
%t | 跳格[Tab鍵] |
%H | 小時(00-23) |
%I | 小時(00-12) |
%M | 分鐘(00-59) |
%S | 秒(00-59) |
%j | 今年中的第幾天 |
按默認格式查看當前系統時間的date命令如下
[root@localhost ~]# date
Sun Mar 14 22:42:03 EDT 2021
按照 年-月-日 小時:分鐘:秒 的格式查看當前系統時間的date命令如下
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2021-03-14 22:44:04
將系統的當前時間設置為2017年8月8日8點28分擔date命令如下
[root@localhost ~]# date -s "20170808 8:28:00"
Tue Aug? 8 08:28:00 EDT 2017
[root@localhost ~]# date
Tue Aug? 8 08:28:36 EDT 2017
date查看今年是當年中的第幾天
[root@localhost ~]# date "+%j"
220
3、reboot命令
reboot命令用于重啟系統(由于重啟計算機會涉及硬件資源的管理權限,只能使用root管理員來重啟)
[root@localhost ~]# reboot
4、poweroff
poweroff命令用于關閉系統,該命令與reboot命令相同,都會涉及硬件資源的管理權限,因此只有root管理員才可以關閉電腦
[root@localhost ~]# poweroff
5、wegt命令
wegt命令用于在終端下載網絡文件,格式為“wget[參數] 下載地址”
wegt命令參數及其作用
參數 | 作用 |
-b | 后臺下載模式 |
-P | 下載到指定目錄 |
-t | 最大嘗試次數 |
-c | 斷點續傳 |
-p | 下載頁面內所有資源,包括圖片視頻 |
-r | 遞歸下載 |
嘗試使用wegt命令下載
6、ps命令
ps命令用于查看系統中的進程狀態,格式為:“ps[參數]”
ps命令的參數以及作用
參數 | 作用 |
-a | 顯示所有進程(包括其他用戶進程) |
-u | 用戶以及其他詳細信息 |
-x | 顯示沒有控制終端的進程 |
Linux系統中時刻運行著許多進程,如果能夠合理管理它們,則可以優化系統的性能。
有五種常見的進程狀態,分別為運行,中斷,不可中斷,僵死和停止
R(運行):進程正在運行或在運行的隊列中等待
S(中斷):進程處于休眠中,當某個條件達成后或者接收到信號時,則脫離該狀態
D(不可中斷):進程不響應系統異步信號,即便用kill命令也不能將其中斷
Z(僵死):進程已經終止,但是進程描述符依然存在,直到父進程調用wait4()系統函數后將進程釋放
T(停止):進程收到停止信號后停止運行。
進程狀態
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
進程所有者 | 進程ID | 運算器占有率 | 內存占用率 | 虛擬內存使用量(單位是KB) | 占用的固定內存量(單位是KB) | 所在終端 | 進程狀態 | 被啟動的時間 | 實際使用CPU的時間 | 命令名稱與參數 |
7、top命令
top命令用于動態地監視進程活動與系統負載調信息
下圖中每行的意義
第一行:系統時間,運行時間,登錄終端數,系統負載(三個數值分別為1分鐘,5分鐘,15分鐘內的平均值,數值越小意味著負載越低)
第二行:進程總數,運行中的進程數,睡眠中的進程數,停止的進程數,僵死的進程數
第三行:用戶占用資源百分比,系統內核占用資源百分比,改變過優先級的進程資源百分比,空閑的資源百分比等
第四行:物理內存總量,內存使用量,內存空閑量,虛擬內存空閑量,已被提前加載的內存量
8、pidof命令
pidof命令用于查看某個指定服務進程的PID值,格式為:pidof【參數】【服務名稱】
[root@localhost ~]# pidof sshd
1022
9、kill命令
kill命令用于終止某個指定PID的服務進程。
10、killall命令
killall命令用于終止某個指定名稱的服務所對應的全部進程。
3、系統狀態監測命令
1、ifconfig命令
ifconfig命令用于獲取網卡配置與網絡狀態等信息
2、uname命令
uname命令用于查看系統內核與版本等信息
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
3、uptime命令
uptime命令用于查看系統的負載信息
[root@localhost ~]# uptime
?23:33:26 up 34 min,? 1 user,? load average: 0.00, 0.00, 0.06
4、free命令
free命令用于顯示當前系統中內存的使用量信息
[root@localhost ~]# free -h
?????????? 內存總量?? 已用量??? 可用量? 進程共享的內存量?? 磁盤緩存的內存量?? 可以用的內存量
????????????? total??????? used??????? free????? shared??? buff/cache?? available
Mem:????????? 1.8Gi?????? 1.2Gi?????? 126Mi??????? 14Mi?????? 459Mi?????? 415Mi
Swap:???????? 2.0Gi??????? 10Mi?????? 2.0Gi
5、who命令
who命令用于查看當前登入主機的用戶終端信息
[root@localhost ~]# who
root???? tty2???????? 2021-03-14 23:00 (tty2)
登錄的用戶名 | 終端設備 | 登錄到系統的時間 |
root | tty2 | 2021-03-14 23:00 (tty2) |
? | ? | ? |
6、last命令
last命令用于查看所有系統的登錄記錄
7、history命令
history命令用于顯示歷史執行過的命令
8、sosreport命令
sosreport命令用于收集系統配置及構架信息并輸出診斷文檔。
[root@localhost ~]# sosreport
sosreport (version 3.6)
This command will collect diagnostic and configuration information from
this Red Hat Enterprise Linux system and installed applications.
An archive containing the collected information will be generated in
/var/tmp/sos.le34fxce and may be provided to a Red Hat support
representative.
Any information provided to Red Hat will be treated in accordance with
the published support policies at:
? https://access.redhat.com/support/
The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.
No changes will be made to system configuration.
Press ENTER to continue, or CTRL-C to quit.
Please enter the case id that you are generating this report for []:
?Setting up archive ...
?Setting up plugins ...
?Running plugins. Please wait ...?????????????????????????
Finished running plugins????????????????????????????????????????????????????????????? ?
Creating compressed archive...
Your sosreport has been generated and saved in:
? /var/tmp/sosreport-localhost-2021-03-14-odhuaxj.tar.xz
The checksum is: 645e5bd252bfd11b58875d49a169a209
Please send this file to your support representative.
4、工作目錄切換命令
1、pwd命令
pwd命令用于顯示用戶當前所處的工作目錄
[root@localhost ~]# pwd
/root
2、cd命令
cd命令用于切換工作路徑,格式為:cd 【目錄名稱】
[root@localhost ~]# cd /etc
[root@localhost etc]#
此時,要返回上一層的目錄1,可執行如下命令:
[root@localhost etc]# cd -
/root
[root@localhost ~]#
還可以通過下面的命令快速回到家目錄
[root@localhost ~]# cd /etc
[root@localhost etc]# cd ~
3、ls命令
ls命令用于查看目錄的文件信息,格式為“ls【選項】【文件】”
如果想要查看目錄屬性信息,則需要額外添加一個-d參數
[root@localhost ~]# ls -ld /etc
drwxr-xr-x. 135 root root 8192 Mar 14 22:59 /etc
5、文本文件編輯命令
1、cat命令
cat命令用于查看純文本文件(內容比較少的),格式為“cat 【選項】【文件】”。
額外加-n參數,顯示行號
2、more命令
more命令用于查看純文本文件(內容較多的),格式為“more 【選項】文件”
3、head命令
head命令用于查看從未被文檔的前N行,格式為“head 【選項】【文件】”
[root@localhost ~]# head -n 20 initial-setup-ks.cfg
4、tail命令
tail命令用于查看純文本文檔的后N行或持續刷新內容,格式為“tail 【選項】【文件】”
tail命令最強悍的功能是可以持續刷新一個文件的內容,當想要實時查看最新的日志文件時,這就特別有用,此時的命令格式為:tail -f 文件名
5、tr命令
tr命令用于替換文本文件中的字符,格式為 tr 【原始字符】【目標字符】
6、wc命令
wc命令用于統計指定文本的行數,字數,字節數,格式為 wc【參數】文本
wc參數以及作用
參數 | 作用 |
-l | 只顯示行數 |
-w | 只顯示單詞數 |
-c | 只顯示字節數 |
[root@localhost ~]# wc -l /etc/passwd
45 /etc/passwd
7、stat命令
stat命令用于查看文件的具體存儲信息和時等信息,格式為“ stat 文件名稱”
8、cut命令
cut命令用于按“列”提取文本字符,格式為“cut 【參數】文本”
9、diff命令
diff命令用于比較多個文本文檔的差異
diff --brief 文件1 文件2? 判斷文件是否相同
diff -c 文件1 文件2? 描述文件內容具體的不同
?5、文件目錄管理命令
1、touch命令
touch命令用于創建空白文件或設置文件的時間,格式為:“touch 【選項】【文件】”
在創建空白的文本文檔方面,這個touch相當簡捷。
參數 | 作用 |
-a | 僅修改“讀取時間” |
-m | 僅修改“修改時間” |
-d | 同時修改atime和mtime |
我們通過Xshell遠程連接虛擬機進程操作,方便快捷,不用頻繁切換。
附上Xshell6的安裝包,可能不是最新版本,自行更新也不費事哈。
鏈接:https://pan.baidu.com/s/1abe28wTAHsZShB3R9qWIvQ
提取碼:z7q0
接下來我們簡單實現touch的功能
建立一個空白文件
[root@localhost ~]# touch test
查看test文件的修改日期
我們寫入一些內容后,繼續查看時間
[root@localhost ~]# echo "happy" >> test
[root@localhost ~]# ls -l test
我們再次通過touch命令把修改后的文件時間設置成修改之前的時間
[root@localhost ~]# touch -d "2021-03-15 02:08" test
2、mkdir命令
mkdir命令用于創建空白的目錄,格式為:“mkdir 【選項】 目錄”
除了能創建單個空白目錄之前,mkdir還能結合-p參數來遞歸創建出具有嵌套疊層關系的文件目錄
[root@localhost ~]# mkdir test1
[root@localhost ~]# cd test1/
[root@localhost test1]# mkdir -p a/b/c/d
[root@localhost test1]# cd a
[root@localhost a]# cd b
[root@localhost b]#
3、cp命令
cp命令用于復制文件或目錄,格式為“cp 【選項】源文件 目標文件”
在Linux系統中哦,復制操作具體分為三種情況:
①如果目標文件是目錄,則會把源文件復制到該目錄中;
②如果目標文件也是普通文件,則會詢問是否要覆蓋它;
③如果目標文件不存在,則執行正常的復制操作
cp命令的參數及其作用
參數 | 作用 |
-p | 保留原始文件的屬性 |
-d | 若對象為“鏈接文件”,則保留該“鏈接文件”的屬性 |
-r | 遞歸持續復制(用于目錄) |
-i | 若目標文件存在則詢問是否覆蓋 |
-a | 相當于-pdr(p、d、r為上述參數) |
[root@localhost ~]# cp test? testcp
4、mv命令
mv命令用于剪切文件或文件重命名,格式為:“mv 【選項】 源文件 【 目標路徑|目標文件名】”
剪切操作不同于復制操作,因為它會默認把源文件刪除掉,只保留剪切后的文件。如果在同一個目錄中對一個文件進行剪切操作,其實也是對其進行重命名。
[root@localhost ~]# mv testcp? one (看文件時間)
?5、rm命令
rm命令用于刪除文件或目錄,格式為:“rm 【選項】文件”
刪除文件時,系統會默認向您詢問是否要執行刪除操作,如果不想總是看到這種反復確認的信息,可在rm命令后跟上-f的參數來強制刪除。另外想要刪除一個目錄,要在rm命令后面跟上一個-r參數才可以,否則刪除不掉。
6、dd命令
dd命令用于按照指定大小和個數的數據塊來復制文件或轉移文件,格式為:“dd【參數】”
dd命令是一個比較有特色的一個命令,它能夠讓用戶按照指定大小和個數的數據塊來復制文件的內容。
dd命令的參數及其作用
參數 | 作用 |
if | 輸入的文件名稱 |
of | 輸出的文件名稱 |
bs | 設置每個“塊”的大小 |
count | 設置要復制“塊”的個數 |
7、file命令
file命令用于查看文件的類型。格式為:“file 文件名”
6,打包壓縮與搜索命令
1、tar命令
tar命令用于對文件進行打包壓縮或解壓,格式為:“tar 【選項】【文件】”
tar命令的參數及其作用
參數 | 作用 |
-c | 創建壓縮文件 |
-x | 解開壓縮文件 |
-t | 查看壓縮包內有那些文件 |
-z | 用Gzip壓縮或解壓 |
-j | 用bzip2壓縮或解壓 |
-v | 顯示壓縮或解壓的過程 |
-f | 目標文件名 |
-p | 保留原始的權限和屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 指定解壓到的目錄 |
2、grep命令
grep命令用于1文本執行關鍵詞搜索,并顯示匹配的結果,格式為:“grep 【選項】【文件】”
grep命令的參數及其作用
參數 | 作用 |
-b | 將可執行的文件當做文本文件來搜索 |
-c | 僅顯示找到的行數 |
-i | 忽略大小寫 |
-n | 顯示行號 |
-v | 反向選擇——僅列出沒有“關鍵詞”的行 |
3、find命令
find命令用于按照指定條件來查找文件,格式為“find 【查找路徑】尋找條件 操作”
在Linux系統中,搜索工作一般都是通過find命令來完成的,它可以使用不同的文件特性作為尋找條件(如文件名,大小,修改時間,權限等信息),一旦匹配成功則默認將信息顯示到屏幕上。
find命令中的參數和作用
參數 | 作用 |
-name | 匹配名稱 |
-perm | 匹配權限 |
-user | 匹配所有者 |
-group | 匹配所有組 |
-mtime -n +n | 匹配修改內容的時間 |
-atime -n +n | 匹配訪問文件的時間 |
-ctime -n +n | 匹配修改文件權限的時間 |
-nouser | 匹配無所有者的文件 |
-newer f1? !f2 | 匹配比文件f1新但比f2舊的文件 |
-type b/d/c/p/l/f | 匹配文件類型 |
-size | 匹配文件大小 |
-prune | 忽略某個目錄 |
-exec ··· {}\; | 后面可跟用于進一步處理搜索的命令 |
-nogroup | 匹配無所有組文件 |
?