Linux運維之需掌握的基本Linux命令

前言:本博客僅作記錄學習使用,部分圖片出自網絡,如有侵犯您的權益,請聯系刪除?

目錄

一、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”命令后通常會看到以下信息,列舉部分輸出值,正常輸出值不包含中文注釋:

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
進程的所有者進程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

致謝

在此,我要對所有為知識共享做出貢獻的個人和機構表示最深切的感謝。同時也感謝每一位花時間閱讀這篇文章的讀者,如果文章中有任何錯誤,歡迎留言指正。?

學習永無止境,讓我們共同進步!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38891.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JavaWeb】登錄校驗-會話技術(一)Cookie與Session

登錄校驗 實現登陸后才能訪問后端系統頁面&#xff0c;不登陸則跳轉登陸頁面進行登陸。 首先我們在宏觀上先有一個認知&#xff1a; HTTP協議是無狀態協議。即每一次請求都是獨立的&#xff0c;下一次請求并不會攜帶上一次請求的數據。 因此當我們通過瀏覽器訪問登錄后&#…

go語言怎么獲取文件的大小并且轉化為kb為單位呢?

在Go語言中&#xff0c;你可以使用os包中的IsExist和Stat函數來獲取文件的信息&#xff0c;包括文件的大小。文件的大小通常是以字節為單位的&#xff0c;但你可以很容易地將其轉換為KB&#xff08;千字節&#xff09;。 下面是一個簡單的Go程序示例&#xff0c;該程序打開指定…

Simulink 模型生成 C 代碼(一):使用 Embedded Coder 快速向導生成代碼

以matlab自帶的示例模型RollAxisAutopilot為例進行講解。RollAxisAutopilot為飛機自動駕駛控制系統模型。 使用快速向導工具生成代碼 通過鍵入以下命令打開模型 RollAxisAutopilot&#xff1a; openExample(RollAxisAutopilot); 如果 C 代碼選項卡尚未打開&#xff0c;請在 …

【C++】宏定義

嚴格來說&#xff0c;這個題目起名為C是不合適的&#xff0c;因為宏定義是C語言的遺留特性。CleanCode并不推薦C中使用宏定義。我當時還在公司做過宏定義為什么應該被取代的報告。但是適當使用宏定義對代碼是有好處的。壞處也有一些。 無參宏定義 最常見的一種宏定義&#xf…

makefile總結

1,Makefile規則介紹 一個簡單的 Makefile 描述規則組成: TARGET... : PREREQUISITES... COMMAND 注意: 每一個命令行必須以[Tab]字符開始, [Tab]字符告訴 make 此行是一個命令行。 make 按照命令完成相應的動作。這也是書寫 Makefile 中容易產生,而且比較隱蔽的錯…

油煙凈化器:餐飲業健康環保的守護者

我最近分析了餐飲市場的油煙凈化器等產品報告&#xff0c;解決了餐飲業廚房油膩的難題&#xff0c;更加方便了在餐飲業和商業場所有需求的小伙伴們。 在現代餐飲業&#xff0c;油煙凈化器已經成為不可或缺的重要設備。它不僅是保障餐飲環境清潔的利器&#xff0c;更是守護健康…

新聲創新20年:無線技術給助聽器插上“娛樂”的翅膀

聽力損失并非現代人的專利&#xff0c;古代人也會有聽力損失。助聽器距今發展已經有二百多年了&#xff0c;從當初單純的聲音放大器到如今的全數字時代助聽器&#xff0c;助聽器發生了翻天覆地的變化&#xff0c;現代助聽器除了助聽功能&#xff0c;還具有看電視&#xff0c;聽…

【LeetCode】368. 最大整除子集

雖然這題挺難寫的&#xff0c;但是仍然提醒了我&#xff1a;解題要注意方法。在明確分析當一條道路走不通的時候&#xff0c;就不要再猶豫了&#xff0c;就要果斷的換方法&#xff0c;嘗試用其它方法解決。否則一味的消耗時間&#xff0c;得不償失。換方法的前提是明確的分析&a…

C++ 和C#的差別

首先把眼睛瞪大&#xff0c;然后憋住一口氣&#xff0c;讀下去&#xff1a; 1、CPP 就是C plus plus的縮寫&#xff0c;中國大陸的程序員圈子中通常被讀做"C加加"&#xff0c;而西方的程序員通常讀做"C plus plus"&#xff0c;它是一種使用非常廣泛的計算…

Maya崩潰閃退常見原因及解決方案

Autodesk Maya 是一款功能強大的 3D 計算機圖形程序&#xff0c;被電影、游戲和建筑等各個領域的設計師廣泛使用。然而&#xff0c;Maya 就像任何其他軟件一樣可能會發生崩潰問題。在前文中&#xff0c;小編給大家介紹了3ds Max使用V-Ray渲染時的崩潰閃退解決方案&#xff1a; …

Neo4j 圖數據庫 高級操作

Neo4j 圖數據庫 高級操作 文章目錄 Neo4j 圖數據庫 高級操作1 批量添加節點、關系1.1 直接使用 UNWIND 批量創建關系1.2 使用 CSV 文件批量創建關系1.3 選擇方法 2 索引2.1 創建單一屬性索引2.2 創建組合屬性索引2.3 創建全文索引2.4 列出所有索引2.5 刪除索引2.6 注意事項 3 清…

后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok

一、什么是JDBC JDBC就是sun公司研發的一套通過java來操控數據庫的工具&#xff0c;對應不同的數據庫系統有不同的JDBC&#xff0c;而他們統稱【驅動】&#xff0c;這就是上一篇我們提到創建Mybatis項目時要引入的依賴、以及連接數據庫四要素里的第一要素。 JDBC有自己一套原始…

SerialportToTCP② 全

效果補全&#xff08;代碼&#xff09;&#xff1a; namespace SerialportToTCP {public partial class Form1 : Form{IniHelper Ini;string[] botelvs new string[] { "1200", "4800", "9600", "13200" };public Form1(){Initializ…

Elasticsearch:Painless scripting 語言(一)

Painless 是一種高性能、安全的腳本語言&#xff0c;專為 Elasticsearch 設計。你可以使用 Painless 在 Elasticsearch 支持腳本的任何地方安全地編寫內聯和存儲腳本。 Painless 提供眾多功能&#xff0c;這些功能圍繞以下核心原則&#xff1a; 安全性&#xff1a;確保集群的…

安卓gdb 建立鏈接

adbshell gdbserver :1234 testdcam --sensor 0 --workmode 0 --args preview-size1024x600,picture-size640x480, --time 10 adb forwardtcp:1234 tcp:1234 //設置adb的轉發 ./prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gdb out/tar…

近紅外光譜腦功能成像(fNIRS):1.光學原理、變量選取與預處理

一、朗伯-比爾定律與修正的朗伯-比爾定律 朗伯-比爾定律 是一個描述光通過溶液時被吸收的規律。想象你有一杯有色液體&#xff0c;比如一杯紅茶。當你用一束光照射這杯液體時&#xff0c;光的一部分會被液體吸收&#xff0c;導致透過液體的光變弱。朗伯-比爾定律告訴我們&#…

mmdetection3D指定版本安裝指南

1. 下載指定版本號 選擇指定版本號下載mmdetection3d的源碼&#xff0c;如這里選擇的是0.17.2版本 git clone https://github.com/open-mmlab/mmdetection3d.git -b v0.17.22. 安裝 cd mmdetection3d安裝依賴庫 pip install -r requirment.txt編譯安裝 pip install -v e .…

redis主從復制哨兵模式集群管理

主從復制&#xff1a; 主從復制是高可用Redis的基礎&#xff0c;哨兵和集群都是在主從復制基礎上實現高可用的。主從復制主要實現了數據的多機備份&#xff0c;以及對于讀操作的負載均衡和簡單的故障恢復。缺陷&#xff1a;故障恢復無法自動化&#xff1b;寫操作無法負載均衡&…

軟件測試與質量保證 | 云班課簡答題庫

目錄 第14章 質量相關簡答題 第15章 測試實際相關簡答題 第16章 測試基本相關簡答題 第14章 質量相關簡答題 1. 簡述基本的測量原則。 測量應該基于該應用領域正確的理論之上&#xff0c;并在測量的定義中確定測度的目標&#xff1b;每一個技術測量的定義應該具有一致性和客…

HbuilderX:安卓打包證書.keystore生成與使用

前置條件 已安裝jdk或配置好jre環境。 .keystore生成 打開cmd,切換到目標路徑,輸入以下命令, keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 輸入密鑰庫口令(要記住), 然后輸入一系列信息, …