前言:本博客僅作記錄學習使用,部分圖片出自網絡,如有侵犯您的權益,請聯系刪除?
目錄
一、SHELL
二、執行命令
三、常用系統工作命令
四、系統狀態檢測命令
五、查找定位文件命令
六、文本文件編輯命令
七、文件目錄管理命令
致謝
一、SHELL
Shell就是終端程序的統稱,擔當人與內核之間的翻譯工作,用戶把一些命令”告訴“終端程序,它就會調用相應的程序服務去完成某些工作。優勢:
- 通過上下方向鍵來調取過往執行過的Linux命令
- 命令或參數僅需輸入前幾位就可以用Tab鍵補全
- 強大的批處理腳本
- 實用的環境變量功能
二、執行命令
?命令名稱 [命令參數] [命令對象]
Linux命令的參數長格式與端格式示例:
長格式 | man --help |
---|---|
短格式 | man -h |
4個快捷鍵:
- Tab鍵:它能實現對命令、參數或文件的內容補全。
- Ctrl+c鍵:對當前進程進行終止操作。
- Ctrl+d鍵:代表鍵盤輸入結束(End Of Input),簡稱EOF
- Ctrl+l鍵:清空當前終端已有的內容,相當于清屏操作
三、常用系統工作命令
1、echo命令
echo命令用于在終端設備上輸出字符串或變量提取后的值,語法格式為:“echo [字符串] [變量]“
?# 例如把指定字符串"LinuxProbe.com"輸出到終端屏幕的命令:[root@linux ~]# echo LinuxProbe.comLinuxProbe.com?# 使用"$變量"的方式提取變量中SHELL的值,并將其輸出到屏幕:[root@linux ~]# echo $SHELL/bin/bash
2、date命令
data命令用于顯示或設置系統的時間與日期,語法格式為:"date [+指定的格式]"
date命令中常見的參數格式以及作用:
參數 | 作用 |
---|---|
%S | 秒(00~59) |
%M | 分鐘(00~59) |
%H | 小時(00~23) |
%l | 小時(00~12) |
%m | 月份(1~12) |
%p | 顯示出AM或PM |
%a | 縮寫的工作日名稱(例如:Sun) |
%A | 完整的工作日名稱(例如:Sunday) |
%b | 縮寫的月份名稱(例如:Jan) |
%B | 完整的月份名稱(例如:january) |
%q | 季度(1~4) |
%y | 簡寫年份(例如:20) |
%Y | 完整年份(例如2020) |
%d | 本月中第幾天 |
%j | 今年中第幾天 |
%n | 換行符(相當于按下回車鍵) |
%t | 跳格(相當于按下Tab鍵) |
按照默認格式查看當前系統時間的date命令:
?[root@linux ~]# dateTue Jul ?2 14:10:52 CST 2024
按照"年-月-日 小時:分鐘:秒"的格式查看
?[root@linux ~]# date +"%Y-%m-%d %H:%M:%s"2024-07-02 14:13:1719900805
將系統的當前時間設置為2024年10月1日8點30分的date命令如下:
?[root@linux ~]# date -s "20241001 8:30:00"Tue Oct ?1 08:30:00 CST 2024
再次使用date按照默認格式查看當前的系統時間:
?[root@linux ~]# dateTue Oct ?1 08:30:00 CST 2024
date命令中的參數 %j可用來查看今天是當年中的第幾天。這個參數能夠很好的區分備份時間的新舊,即數字越大,越靠近當前時間。
?[root@linux ~]# date "+%j"257
3、timedatectl命令
timedatectl命令用于設置系統的時間,語法格式:“timedatectl [參數]”
參數 | 作用 |
---|---|
status | 顯示狀態信息 |
list-timezones | 列出已知時間 |
set-time | 設置系統時間 |
set-timezone | 設置生效時間 |
查看系統時間與分區:
?[root@linux ~]# timedatectl statusLocal time: Tue 2024-10-01 08:41:52 CSTUniversal time: Tue 2024-10-01 00:41:52 UTCRTC time: Tue 2024-07-02 06:27:58Time zone: Asia/Shanghai (CST, +0800)System clock synchronized: noNTP service: activeRTC in local TZ: no
手動設置時區:
[root@linux ~]# timedatectl set-timezone Asia/Shanghai
手動修改系統日期:
[root@linux ~]# timedatectl set-time 2024-10-01
手動修改時間:
[root@linux ~]# timedatectl set-time 9:30
[root@linux ~]# date
Tue Oct 1 09:30:00 CST 2024
4、reboot命令
reboot命令用于重啟系統,輸入后回車執行即可。
由于重啟計算機這種操作會涉及硬件資源的管理權限,因此最好使用root管理員來重啟,普通用戶可能會被拒絕。
[root@linux ~]# reboot
5、poweroff命令
poweroff命令用于關閉系統,輸入回車執行即可。
同上,該命令涉及硬件資源的管理權限,因此最好使用root管理員來重啟,普通用戶可能會被拒絕。
[root@linux ~]# poweroff
6、wget命令
wget命令用于在終端命令行里下載網絡文件,語法格式:“wget [參數] 網址”
參數 | 作用 |
---|---|
-b | 后臺下載模式 |
-P | 下載到指定目錄 |
-t | 最大嘗試次數 |
-c | 斷點續傳 |
-p | 下載頁面內所有資源,包括圖片、視頻等 |
-r | 遞歸下載 |
7、ps命令
ps命令用于查看系統中的進程狀態,語法格式為:“ps [參數]”
參數 | 作用 |
---|---|
-a | 顯示所有進程(包括其他用戶的進程) |
-u | 用戶以及其他詳細信息 |
-x | 顯示沒有控制終端的進程 |
Linux系統中時刻運行著許多進程,如果能夠合理的管理它們,則可以優化系統的性能。五種常見的進程狀態,分別為運行、中斷、不可中斷、僵死與停止,其各自含義如下所示:
-
R(運行):進程正在運行或運行隊列中等待
-
S(中斷):進程處于休眠中,當某個條件形成后或者接收到信號時,則脫離該狀態
-
D(不可中斷):進程不響應系統異步信號,即便用Kill命令也不能將其中斷
-
Z(僵死):進程已經終止,但進程描述符依然存在,直到父進程調用wait4()系統函數后將進程釋放
-
T(停止):進程收到停止信號后停止運行
除了上面五種進程狀態,還有可能是高優先級(<)、低優先級(N)、被鎖進內存(L)、包含子進程(s)以及多線程(l)這五種補充形式
當執行“ps aux”命令后通常會看到以下信息,列舉部分輸出值,正常輸出值不包含中文注釋:
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
進程的所有者 | 進程ID號 | 運算器占有率 | 內存占用率 | 虛擬內存使用量(單位是KB) | 占用的固定內存量(單位是KB) | 所在終端 | 進程狀態 | 被啟動的時間 | 實際使用CPU的時間 | 命令名稱與參數 |
8、pstree命令
pstree命令用于以樹狀圖的形式展示進程之間的關系
[root@linux ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]├─NetworkManager───2*[{NetworkManager}]├─VGAuthService├─accounts-daemon───2*[{accounts-daemon}]├─alsactl├─anacron├─atd├─auditd─┬─sedispatch│ └─2*[{auditd}]├─avahi-daemon───avahi-daemon├─bluetoothd├─chronyd├─colord───2*[{colord}]├─containerd───7*[{containerd}]├─crond├─cupsd
...省略...
9、top命令
top命令用于動態的監視進程活動及系統負載等信息
上面命令都是靜態的查看系統狀態,不能實時滾動最新數據,而top命令能夠動態地查看系統狀態,完全可以將它看做是Linux中的“強化版的Windows任務管理器”,是相當好的性能分析工具
[root@linux ~]# top
top - 09:37:45 up 2:58, 2 users, load average: 0.07, 0.02, 0.00
Tasks: 229 total, 2 running, 227 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.1 sy, 0.0 ni, 97.7 id, 0.0 wa, 0.8 hi, 0.0 si, 0.0 st
MiB Mem : 9519.5 total, 5244.4 free, 2794.2 used, 1480.9 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 6431.7 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2393 root 20 0 3225476 337896 122536 S 2.7 3.5 0:57.86 gnome-s+ 31298 root 20 0 744004 46244 30672 S 0.8 0.5 0:02.41 gnome-t+ 970 root 20 0 694568 32340 16008 S 0.5 0.3 0:26.05 tuned 32368 root 20 0 264224 4428 3672 R 0.3 0.0 0:00.03 top 1 root 20 0 172984 10992 8056 S 0.0 0.1 0:02.53 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
top命令執行結果的前5行為系統整體的統計信息,其所代表的含義如下:
- 第1行:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鐘、5分鐘、15分鐘內的平均值,數值越低意味著負載越低)
- 第2行:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數
- 第3行:用戶占用資源百分比、系統內核占用資源百分比、改變過優先級的進程資源百分比、空閑的資源百分比等。其中數據均為CPU數據并以百分比格式顯示
- 第4行:物理內存總量、內存空閑量、內存使用量、作為內核緩存的內存量
- 虛擬內存總量、虛擬內存空閑量、虛擬內存使用量、已被提前加載的內存量
10、nice命令
nice命令用于調整進度優先級,語法:“nice 優先級數字 服務名稱”
上面top命令輸出結果中的PR和NI值代表的是進程的優先級,數字越低(取值范圍是-20到19)、優先級越高。日常工作中,可以將一些不重要的進程優先級調低、讓緊迫的服務獲得更多的CPU和內存資源,合理分配系統資源。
[root@linux ~]# nice -n -20 bash
11、pidof命令
pidof命令用于查詢某個指定服務進程的PID號碼值,語法:“pidof [參數] 服務名稱”
每個進程的進程號碼值(PID)是唯一的,可以用于區分不同的進程,來查詢本機上的sshd服務程序的PID:
[root@linux ~]# pidof sshd
933
12、kill命令
kill命令用于終止某個指定PID值的服務進程,語法:“kill [參數] 進程的PID”
使用kill命令終止上述查詢到的PID所代表的進程終止掉,等同于強制停止sshd服務:
[root@linux ~]# kill 933
但也有時候提示進程無法刪除,則可以加參數-9,,代表最高級別的強制殺死進程:
[root@linux ~]# kill -9 933
13、killall命令
killall命令用于終止某個指定名稱的服務所對應的全部進程,語法:“killall [參數] 服務名稱”
下面以httpd服務程序為例,來結束其全部進程:
[root@linux ~]# pidof httpd
13581 13580 13579 13577 13676
[root@linux ~]# killall httpd
[root@linux ~]#
四、系統狀態檢測命令
1、ifconfig命令
ifconfig命令用于獲取網卡配置與網絡狀態等信息,語法:“ifconfig [參數] [網絡設備]"
使用ifconfig命令來查看本機當前的網卡配置與網絡狀態信息等,其實主要查看網卡名稱、inet參數后的IP地址、ether參數后面的網卡物理地址(又稱MAC地址)以及RX、TX的接收數據包與發送數據包的個數及累計流量:
[root@linux ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.2 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::20c:29ff:fe6a:4052 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:6a:40:52 txqueuelen 1000 (Ethernet)RX packets 326472 bytes 428037282 (408.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 86887 bytes 6265745 (5.9 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:...
2、uname命令
uname命令用于查看系統內核版本與系統架構等信息,語法:“uname [-a]“
在使用uname命令時,一般要固定搭配上-a參數來完整地查看當前系統的內核名稱、主機名、內核發行版本、節點名、壓制時間、硬件名稱、硬件平臺、處理器類型以及操作系統名稱等信息:
[root@linux ~]# uname -a
Linux linux 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Sep 29 05:21:10 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
如果要查看當前系統版本的詳細信息,則需要查看redhat-release文件:
[root@linux ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.9 (Ootpa)
3、uptime命令
uptime命令用于查看系統的負載信息
可以顯示當前系統時間、系統已運行時間、啟用終端數量以及平均負載值等信息。平均負載值指的是系統在最近1分鐘、5分鐘、15分鐘內的壓力情況,負載值越低越好:
[root@linux ~]# uptime10:16:58 up 3:37, 2 users, load average: 0.13, 0.03, 0.01
4、free命令
free命令用于顯示當前系統中內存的使用量信息,語法:“free [-h]”
為了保證Linux系統不會因資源耗盡而突然宕機,運維人員需要時刻注意內存的使用量。結合-h參數以更人性化的方式輸出當前內存的實時使用量信息。
[root@linux ~]# free -htotal used free shared buff/cache available
Mem: 9.3Gi 2.7Gi 5.1Gi 32Mi 1.4Gi 6.3Gi
Swap: 0B 0B 0B
# 分別表示:內存總量 已用量 空閑量 進程共享的內存量 磁盤緩存的內存量 緩存的內存量 可用量
如果不使用-h(易讀模式)則默認以KB為單位。
5、who命令
who命令用于查看當前登入主機的用戶終端信息
可用快速顯示出所有正在登錄本機的用戶名稱以及他們正在開啟的終端信息,如果有遠程用戶,還會顯示出來訪者的IP地址。
[root@linux ~]# who
root seat0 2024-05-31 08:08 (login screen)
6、last命令
last命令用于調取主機的被訪記錄
Linux系統會將每次登錄信息都記錄到日志文件中,如果哪天想翻閱了,那就直接執行這條命令:
[root@linux ~]# last
root tty2 tty2 Fri May 31 08:08 gone - no logout
root seat0 login screen Fri May 31 08:08 gone - no logout
reboot system boot 4.18.0-513.5.1.e Fri May 31 08:07 still running
...
7、ping命令
ping命令用于測試主機之間的網絡連通性,語法格式:”ping [參數] 主機地址“
參數 | 作用 |
---|---|
-c | 總共發送次數 |
-I | 指定網卡名稱 |
-i | 每次間隔時間(秒) |
-W | 最長等待時間 |
8、tracepath命令
tracepath命令用于顯示數據達到目的主機途中所經過的路由信息,語法:“tracepath [參數] 域名”
當兩臺主機之間無法正常ping通時,要考慮是否中間有錯誤的路由信息,導致數據被某一臺設備錯誤丟棄了,這時便可以使用tracepath命令追蹤一下所有途徑的路由信息,以便分析是哪臺設備出問題:
[root@linux ~]# tracepath www.linuxprobe.com1?: [LOCALHOST] pmtu 15001: _gateway 0.498ms 1: _gateway 0.199ms 2: no reply ...
9、netstat命令
netstat命令用于顯示如網絡連接、路由表、接口狀態等的網絡相關信息,語法:“netstat [參數]“
參數 | 作用 |
---|---|
-a | 顯示所有連接中的Socket |
-p | 顯示正在使用的Socket信息 |
-t | 顯示TCP協議的連接信息 |
-u | 顯示UDP協議的連接狀態 |
-n | 使用IP地址,不使用域名 |
-I | 僅列出正在監聽的服務狀態 |
-i | 現在網卡列表的信息 |
-r | 顯示路由表信息 |
10、history命令
history命令用于顯示執行過的命令歷史,語法:“history [-c]”
執行history命令能顯示出當前用戶在本地計算機中執行過的最近1000條命令記錄。也可以改變/etc/profile文件中的HISTSIZE變量值自定義。在使用history命令時,使用-c參數清空所有的命令歷史記錄。還可以用“!編碼數字”的方式來重復執行某一次的命令。
[root@linux ~]# history1 systemctl disable firewalld --now2 systemctl status firewalld3 sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config4 grep SELINUX=disabled /etc/selinux/config5 setenforce 06 getenforce7 hostnamectl set-hostname docker-a8 hostnamectl set-hostname docker-23220302389 bash[root@linux ~]# !9 bash
當要清空當前用戶在本機上執行的Linux命令歷史記錄信息:
[root@linux ~]# history -c
11、soscreport命令
soscreport命令用于收集系統配置及架構信息并輸出診斷文檔
當Linux系統出現故障需要聯系技術支持人員時,大多數時候都要先使用這個命令來簡單收集系統的運行狀態和服務配置信息,以便讓技術支持人員能夠遠程解決一些小問題,亦或是讓他們能提前了解某些復雜問題。
[root@linux ~]# sosreport
...
Any information provided to Red Hat will be treated in accordance with
the published support policies at:Distribution Website : https://www.redhat.com/Commercial Support : https://access.redhat.com/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.
# 此處按下回車鍵進行確認
Optionally, please enter the case id that you are generating this report for []:
# 此處按下回車鍵進行確認Setting up archive ...Setting up plugins ...
... Running plugins. Please wait ...Finishing plugins [Running: dnf subscription_manager]
五、查找定位文件命令
1、pwd命令
pwd命令用于顯示用戶當前所處的工作目錄
# 查看當前所處的工作目錄
[root@linux ~]# pwd
/root
2、cd命令
cd命令用于切換當前的工作路徑,語法:“cd [參數] [目錄]”
可以通過cd命令迅速、靈活地切換到不同的工作目錄。還可以使用“cd -“命令返回到上一次所處的工作目錄,使用”cd ..“命令進入上級目錄,以及使用”cd ~“命令切換到當前用戶的家目錄,或使用”cd _username“切換到其他用戶的家目錄。
[root@linux ~]# cd /etc
[root@linux etc]# cd /bin
[root@linux bin]# cd -
/etc
[root@linux etc]#
# 快速回到家目錄
[root@linux etc]# cd ~
[root@linux ~]#
3、ls命令
ls命令用于顯示目錄中的文件信息,語法:"ls [參數] [文件名稱]"
所處的工作目錄不同,當前工作目錄下能看到的文件也不同。使用ls命令的"-a"參數能看到全部文件(包括隱藏文件),使用“-l”參數可以查看文件的屬性、大小等詳細信息。因此整合參數執行ls命令即可查看當前目錄中的所有文件并輸出這些文件的屬性信息
[root@linux ~]# ls -al
total 120
dr-xr-x---. 18 root root 4096 Oct 1 11:55 .
dr-xr-xr-x. 19 root root 270 May 16 10:21 ..
-rw-r--r-- 1 root root 48680 Sep 3 2021 11.jpg
-rw-r--r-- 1 root root 6 May 31 08:50 1.txt
-rw-------. 1 root root 1037 Mar 13 2024 anaconda-ks.cfg
...
如果想要查看目錄屬性信息,則需要額外添加一個-d參數
[root@linux ~]# ls -ld /etc
drwxr-xr-x. 141 root root 8192 Oct 1 10:16 /etc
4、tree命令
tree命令用于以樹狀圖的形式列出目錄內容及結構
[root@linux ~]# tree
.
├── 1.txt
├── A
│?? └── B
│?? └── C
├── anaconda-ks.cfg
├── Desktop
...11 directories, 5 files
5、find命令
find命令用于按照指定條件來查找文件所對應的位置,語法:“find [查找范圍] 尋找條件”
在Linux系統中,搜索工作一般都是通過find命令來完成的,它可以使用不同的文件特性作為尋找(如文件名、大小、修改時間、權限等信息),一旦匹配成功則默認將信息顯示到屏幕上。
參數 | 作用 |
---|---|
-name | 匹配名稱 |
-perm | 匹配權限(mode為完全匹配,-mode為包含即可) |
-user | 匹配所有者 |
-group | 匹配所有組 |
-mtime -n +n | 匹配修改內容的時間(-n值n天以內,+n指n天以前) |
-atime -n +n | 匹配訪問文件的時間(-n值n天以內,+n指n天以前) |
-ctime -n +n | 匹配修改文件權限的時間(-n值n天以內,+n指n天以前) |
-nouser | 匹配無所有者的文件 |
-nogroup | 匹配無所有組的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2舊的文件 |
--type b/d/c/p/l/f | 匹配文件類型(后面的字幕字母依此表示塊設備、目錄、字符設備、管道、鏈接文件、文本文件) |
-size | 匹配文件的大小(+50KB表示查找超過50KB的文件,而-50KB為查找小于50KB的文件) |
-prune | 忽略某個目錄 |
-exec ...... {}\; | 后面可跟用于進一步處理搜索結果的命令 |
-exec參數用于把find命令搜索到的結果交由緊隨其后的命令作進一步處理,十分類似后面要提及的管道符技術,并且由于find命令對參數的特殊要求,因此雖然exec是長格式形式,但仍然只需要一個減號(-)
根據文件系統層次標準協議,Linux系統中的配置文件會保存到/etc目錄中,獲取到該目錄中所有以host開頭的文件列表:
[root@linux ~]# find /etc -name "host*" -print
/etc/host.conf
/etc/hosts
/etc/hostname
/etc/avahi/hosts
/etc/nvme/hostnqn
/etc/nvme/hostid
如果要在整個系統中搜索權限中包含SUID權限的所有文件,只需要使用-4000即可:
[root@linux ~]# find / -perm -4000 -print
...
/usr/bin/fusermount3
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
...省略...# 在整個文件系統中找出所有歸屬于linux用戶的文件并復制到/root/findresults目錄
[root@linux ~]# find / -user linux -exec cp -a {} /root/findresults/\;
6、locate命令
locate命令用于按照名稱快速搜索文件所對應的位置,語法:“locate 文件名稱”
locate命令是將一些常用的目錄做成一個索引庫文件,一般是叫做“/var/lib/mlocate/mlocate.db”,后續再搜索文件的時候就是根據這個數據庫中包含的路徑進行查找
第一次使用前,記得先執行下updatedb命令來生成出索引數據庫,然后再進行查找:
[root@linux ~]# updatedb
[root@linux ~]# ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 3513513 Oct 1 12:35 /var/lib/mlocate/mlocate.db
搜索出所有包含“whereis”名稱的文件所在位置:
[root@linux ~]# locate whereis
/usr/bin/whereis
/usr/share/bash-completion/completions/whereis
...
7、whereis
whereis命令用于按照名稱快速搜索二進制程序(命令)、源代碼以及幫助手冊所對應的位置,語法:“whereis 命令名稱”
簡單說,whereis命令也是基于了上述updatedb命令所生成出的索引庫文件進行搜索,區別是不關心哪些相同名稱的文件,僅僅是快速找到對應的命令文件及幫助文件所在位置
[root@linux ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@linux ~]# whereis pwd
pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz
8、which命令
which命令用于按照指定名稱快速搜索二進制程序(命令)所對應的位置,語法:“which 命令名稱”
which命令是在PATH變量所指定的路徑中,按照指定條件搜索命令所在的路徑。也就是既不關心同名文件(find與locate)、也不關心所對應的源代碼和幫助文件(whereis),僅僅是想找到命令本身所在的路徑
[root@linux ~]# which locate
/usr/bin/locate
[root@linux ~]# which whereis
/usr/bin/whereis
六、文本文件編輯命令
1、cat命令
cat命令用于查看純文本文件(內容較少的),語法:“cat [參數] 文件名稱”
-n參數可以顯示行號
[root@linux ~]# cat -n initial-setup-ks.cfg1 #version=RHEL82 # License agreement3 eula --agreed4 # Use graphical install5 graphical6 ignoredisk --only-use=sda7 # Use CDROM installation media...
2、more命令
more命令用于查看純文本文件(內容較多的),語法:“more [參數] 文件名稱”
對于長篇的文本內容,推薦使用more命令來查看,more命令會在最下面使用百分比的形式來提示您已經閱讀了多少內容,還可以使用空格或回車鍵向下翻頁
[root@linux ~]# more initial-setup-ks.cfg
#version=RHEL8
# License agreement
eula --agreed
# Use graphical install
graphical
ignoredisk --only-use=sda
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable# Network information
network --bootproto=dhcp --hostname=localhost.localdomain
repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream
# System bootloader configuration
bootloader --location=none
autopart
# Partition clearing information--More--(41%)
3、head命令
head命令用于查看純文本文件的前N行,語法:“head [參數] 文件名稱”
只查看文本中的前10行內容
[root@linux ~]# head -n 10 initial-setup-ks.cfg
#version=RHEL8
# License agreement
eula --agreed
# Use graphical install
graphical
ignoredisk --only-use=sda
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
4、tail命令
tail命令用于查看純文本文件的后N行或持續刷新文件的最新內容,語法:“tail [參數] 文件名稱”
比如查看文本內容的最后10行
[root@linux ~]# tail -n 10 initial-setup-ks.cfg
%addon com_redhat_subscription_manager
%end
%addon ADDON_placeholder --enable --reserve-mb=auto
%end%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
tail命令最強悍的功能是能夠持續刷新一個文件的內容,當想要實時查看最新日志文件時,“tail -f 文件名”
[root@linux ~]# tail -f /var/log/messages
Oct 1 13:07:27 docker-2322030238 dnf[40262]: Red Hat Enterprise Linux 8 for x86_64 - AppStre 0.0 B/s | 0 B 00:00
Oct 1 13:07:27 docker-2322030238 dnf[40262]: Errors during downloading metadata for repository 'rhel-8-for-x86_64-appstream-rpms':
...
5、tr命令
tr命令用于替換文本內容中的字符,語法:“tr [原始字符] [目標字符]“
想要快速的替換文本中的一些詞匯,又或者把整個文本內容都進行替換,可以先使用cat命令讀取待處理的文本,然后 通過管道符把這些文本內容傳遞給tr命令進行替換即可。
# 把某個文本中的英文全部替換為大寫
[root@linux ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]
6、wc命令
wc命令用來統計指定文本文件的行數、字數或字節數,語法:“wc [參數] 文件名稱”
參數 | 作用 |
---|---|
-l | 只顯示行數 |
-w | 只顯示單詞數 |
-c | 只顯示字節數 |
在Linux系統中,/etc/passwd是用于保存系統賬戶信息的文件,要統計當前系統有多少個用戶,可以使用下面的命令來進行查詢:
[root@linux ~]# wc -l /etc/passwd
45 /etc/passwd
7、stat命令
stat命令用于查看文件的具體存儲細節和時間等信息,語法:“stat 文件名稱”
在Linux系統中文件包含三種時間狀態,分別是Access Time(最后一次內容被訪問的時間,簡稱Atime),Modify Time(最后一次內容被修改的時間,簡稱Mtime)以及Change time(文件屬性最后一次被修改的時間,簡稱Ctime)
[root@linux ~]# stat anaconda-ks.cfg File: anaconda-ks.cfgSize: 1037 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 67767194 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-10-01 11:55:31.597547561 +0800
Modify: 2024-03-13 22:40:56.710044932 +0800
Change: 2024-03-13 22:40:56.710044932 +0800Birth: 2024-03-13 22:40:56.666044929 +0800
8、grep命令
grep命令用于按行提取文本內容,語法:“grep [參數] 文件名稱”
grep命令是用途最廣泛的文本搜索匹配工具,兩個最常用的參數:-n參數用來顯示搜索到信息的行號;-v參數用于反選信息(即沒有包含關鍵詞的所有信息行)。
參數 | 作用 |
---|---|
-b | 將可執行文件(binary)當作文本文件(text)來搜索 |
-c | 僅顯示找到的行數 |
-i | 忽略大小寫 |
-n | 顯示行號 |
-v | 反選選擇--僅列出沒有“關鍵詞”的行 |
在Linux系統中,/etc/passwd文件保存著所有的用戶信息,而一旦用戶的登錄終端被設置成/sbin/nologin,則不再允許登錄系統,因此使用grep命令查找當前系統中 不允許登錄系統的所有用戶信息:
[root@linux ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...
9、cut命令
cut命令用于按列提取文本內容,語法:“cut [參數] 文件名稱”
系統文件在保存用戶數據信息時,每一項之間是采用冒號來間隔的:
[root@linux ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
按列搜索,不僅要使用-f參數來設置需要看的列數,還需要使用-d參數來設置間隔符號
# 提取出passwd文件中的用戶名信息,即提取以冒號(:)為間隔符號的第一列內容
[root@linux ~]# cut -d : -f 1 /etc/passwd
root
bin
...
10、diff命令
diff命令用于比較多個文件之間內容的差異,語法:“diff [參數] 文件名稱A 文件名稱B”
不僅可以使用--brief參數來確認兩個文件是否相同,還可以使用-c參數來詳細比較出多個文件的差異之處,這是判斷文件是否被篡改的有力神器。
# 先使用cat命令分別查看diff_A.txt和diff_B.txt
[root@linux ~]# cat diff_A.txt
this is content of diff_A.txt
hahaha
[root@linux ~]# cat diff_B.txt
this is content of diff_B.txt
hahaha
使用diff --brief命令顯示比較后的結果,判斷文件是否相同:
[root@linux ~]# diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
最后使用帶有-c參數的diff命令來描述文件內容具體的不同:
[root@linux ~]# diff -c diff_A.txt diff_B.txt
*** diff_A.txt 2024-10-01 13:56:11.452583378 +0800
--- diff_B.txt 2024-10-01 13:56:29.866660189 +0800
***************
*** 1,2 ****
! this is content of diff_A.txthahaha
--- 1,2 ----
! this is content of diff_B.txthahaha
11、uniq命令
uniq命令用于去除文本中連續的重復行,語法:“uniq [參數] 文件名稱”
[root@linux ~]# cat uniq.txt
welcom to Linux
welcom to Linux
welcom to Linux
welcom to Linux
hahaha
Linux
[root@linux ~]# uniq uniq.txt
welcom to Linux
hahaha
Linux
12、sort命令
sort命令用于對文本內容進行再排序,語法:“sort [參數] 文件名稱”
參數 | 作用 |
---|---|
-f | 忽略大小寫 |
-b | 忽略縮進與空格 |
-n | 以數值型排序 |
-r | 反向排序 |
-u | 去除重復行 |
-t | 指定間隔符 |
-k | 設置字段范圍 |
- sort命令默認按照字母進行排序
- 只要有兩個一模一樣的行,立馬可以使用-u參數進行去重操作
- 可以使用-n參數對數字進行從小到大排序
七、文件目錄管理命令
1、touch命令
touch命令用于創建空白文件或設置文件的時間,語法:“touch [參數] 文件名稱”
對touch命令來講,有難度的操作主要體現在設置文件內容的修改時間(mtime)、文件權限或屬性的更改時間(ctime)與文件的讀取時間(atime)上面。
參數 | 作用 |
---|---|
-a | 僅修改“讀取時間”(atime) |
-m | 僅修改“修改時間”(mtime) |
-d | 同時修改atime和mtime |
示例:先使用ls命令查看一個文件的修改時間,隨后修改它,然后再查看一下文件時間果然發生了變化:
[root@linux ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1037 Jul 3 11:54 anaconda-ks.cfg
[root@linux ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg
[root@linux ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1084 Oct 1 14:09 anaconda-ks.cfg
如果不想要別人知道我們修改了它,使用touch命令修改文件時間為修改之前的時間即可
[root@linux ~]# touch -d "2024-07-03 11:54" anaconda-ks.cfg
[root@linux ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1084 Jul 3 11:54 anaconda-ks.cfg
2、mkdir命令
mkdir命令用于創建空白的目錄,語法:“mkdir [參數] 目錄名稱”
還可以結合-p參數來遞歸創建具有嵌套關系的文件目錄
[root@linux ~]# mkdir linuxprobe
[root@linux ~]# cd linuxprobe/
[root@linux linuxprobe]# mkdir -p a/b/c/d/e
[root@linux linuxprobe]# cd a
[root@linux a]# cd b
[root@linux b]#
3、cp命令
cp命令用于復制文件或目錄,語法:“cp [參數] 源文件名稱 目標文件名稱”
在Linux系統中,復制操作具體分為3種情況:
- 如果目標文件是目錄,則會把源文件復制到該目錄中
- 如果目標文件也是普通文件,則會詢問是否要覆蓋它
- 如果目標文件不存在,則執行正常的復制操作
復制命令基本不會出錯,記住在復制目錄時要加上-r參數
參數 | 作用 |
---|---|
-p | 保留原始文件的屬性 |
-d | 若對象為“鏈接文件”,則保留“鏈接文件”的屬性 |
-r | 遞歸持續復制(用于目錄) |
-i | 若目標文件存在則詢問是否覆蓋 |
-a | 相當于-pdr |
示例:創建一個名為install.log的普通空白文件,然后將其復制一份名為x.log的備份文件,在使用ls命令查看文件
[root@linux ~]# touch install.log
[root@linux ~]# cp install.log x.log
[root@linux ~]# ls
install.log x.log
4、mv命令
mv命令用于剪切或重命名文件,語法:“mv [參數] 源文件名稱 目標文件名稱”
剪切操作不同于復制操作,它會把源文件刪除掉,只保留剪切后的文件。如果在同一個目錄中將某個文件剪切后還粘貼到當前目錄,其本質就是對文件進行了重命名操作:
[root@linux ~]# mv x.log linux.log
[root@linux ~]# ls
install.log linux.log
5、rm命令
rm命令用于刪除文件或目錄,語法:“rm [參數] 文件名稱”
在Linux系統中刪除文件時,系統會默認向您詢問是否要執行刪除操作,如果不想總是看到這個信息,可以在rm命令后加上-f參數來強制刪除。另外要刪除目錄,需要加上-r參數
參數 | 作用 |
---|---|
-f | 強制刪除 |
-i | 刪除前詢問 |
-r | 刪除目錄 |
-v | 顯示過程 |
[root@linux ~]# rm install.log
rm: remove regular empty file 'install.log'? y
[root@linux ~]# rm -f linux.log
[root@linux ~]# ls
[root@linux ~]#
6、dd命令
dd命令用于按照指定大小的數據塊個數來復制文件或轉換文件,語法:“dd if=參數值 of=參數值 bs=參數值”
dd命令是一個比較重要而且比較有特色的一個命令,能夠讓用戶按照指定大小和個數的數據塊來復制文件的內容。Linux系統中有一個名為/dev/zero的設備文件,這個文件不會占用系統存儲空間,卻可以提供無窮無盡的數據,因此使用它作為dd命令的輸入文件,來生成一個指定大小的文件
參數 | 作用 |
---|---|
if | 輸入的文件名稱 |
of | 輸出的文件名稱 |
bs | 設置每個“塊”的大小 |
count | 設置要復制“塊”的大小 |
示例:用dd命令從/dev/zero設備文件中取出一個大小為560MB的數據塊,然后保存成名為560_file的文件
[root@linux ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB, 560 MiB) copied, 5.64899 s, 104 MB/s
如果想把光驅設備中的光盤制作成iso格式的鏡像文件,在Linux系統中可直接使用dd命令來壓制出光盤鏡像文件
[root@linux ~]# dd if=/dev/cdrom od=RHEL-sever-8.0-x86_64-LinuxProbe.com.iso
13873152+0 records in
13873152+0 records out
7103053824 bytes (7.1 GB, 6.6 GiB) copied, 27.8812 s, 255 MB/S
7、file命令
file命令用于查看文件的類型,語法:“file 文件名稱”
[root@linux ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@linux ~]# file /dev/sda
/dev/sda: block special (8/0)
8、tar命令
tar命令用于對文件進行打包壓縮或解壓,語法:“tar 參數 文件名稱”
Linux系統中主要使用的是.tar或.tar.gz或.tar.bz2格式,大部分都是由tar命令來生成的
參數 | 作用 |
---|---|
-c | 創建壓縮文件 |
-x | 解開壓縮文件 |
-t | 查看壓縮包內有哪些文件 |
-z | 用Gzip壓縮或解壓 |
-j | 用bzip壓縮或解壓 |
-v | 顯示壓縮或解壓的過程 |
-f | 目標文件名 |
-p | 保留原始的權限與屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 指定解壓到的目錄 |
一般使用“tar -czvf 壓縮包名稱.tar.gz 要打包的目錄”命令把指定的文件進行打包壓縮;相應的解壓命令為“tar -xzvf 壓縮包名稱.tar.gz”
致謝
在此,我要對所有為知識共享做出貢獻的個人和機構表示最深切的感謝。同時也感謝每一位花時間閱讀這篇文章的讀者,如果文章中有任何錯誤,歡迎留言指正。?
學習永無止境,讓我們共同進步!!