文章目錄
- 第一章:Linux指令介紹及Linux常用指令
- 常用按鍵
-
-
- Tab鍵
- Ctrl+c 1
- Ctrl+d
- Shift+Page Up/Page Down
-
- 幫助文檔指令
-
-
- help參數
- man指令
-
- man page詳解
- 基礎資訊
- NAME
- SYNOPSIS
- DESCRIPTION
- COMMANDS
- FILES
- SEE ALSO
- EXAMPLE
- 如何檢視man page
-
- 浏覽步驟
- 特殊操作
- info指令
-
- info指令的用法
- page head
- page tail
- info page的用法
-
- 常用的系統工作指令
-
-
- echo指令
- date指令
- reboot指令
- poweroff指令
- wget指令
- ps指令
- top指令
- pidof指令
- kill指令
- killall指令
-
- 系統狀态監測
-
-
- ifconfig指令
- uname指令
- uptime指令
- free指令
- who指令
- last指令
- history指令
- sosreport指令
-
- 工作目錄切換指令
-
-
- pwd指令
- cd指令
- ls指令
- 檔案編輯指令
-
- cat指令
- more指令
- head指令
- tail指令
- tr指令
- wc指令
- stat指令
- cut指令
- diff指令
-
- 檔案目錄管理指令
-
-
- touch指令
- mkdir指令
- cp指令
- mv指令
- rm指令
- dd指令
- file指令
-
- 打包與壓縮指令
-
-
- tar指令
- grep指令
- find指令
-
第一章:Linux指令介紹及Linux常用指令
在開始系統學習Linux之前,必須要先了解Linux的指令以及一些具體的常用指令,否則入門都無從說起.
常見的執行Linux指令的格式如下
指令名稱 [指令參數] [指令對象]
其中: 指令參數是要執行的功能選擇,指令對象是指要處理的檔案,目錄,使用者等資源
指令參數可以輸入全稱,也可以輸出縮寫,例如輸入: --help或-h
[]表示可以選擇,真正輸入時候不加括号
當有多個需要指令對象的指令參數時,要一一對應并且指令對象緊跟在指令參數後面,例如
wget -t 3 -P LinuxProbe http://www.linuxprobe.com/docs/Linuxprobe.pdf
表示最大嘗試下載下傳3次,将http://www.linuxprobe.com/docs/Linuxprobe.pdf中的内容下載下傳到指定的LinuxProbe檔案夾中
本章包含以下内容:
- 常用的按鍵
- 幫助文檔指令
- 常用系統工作指令
- 系統狀态檢測指令
- 工作目錄切換指令
- 文本檔案編輯指令
- 檔案目錄管理指令
- 打包壓縮與搜尋指令
常用按鍵
Tab鍵
[tab] 補全指令或檔案(目前檔案或指令隻有一個時)
[tab][tab] 羅列所有可能的檔案或指令(目前檔案或指令不唯一時)
例如:
假設有三個指令:roscore, rosrun, rostry
輸入rosc之後按[tab]即可補全為roscore
輸入ros後按[Tab]沒有反應,按[Tab][Tab]顯示三個可能的指令
Ctrl+c 1
[Ctrl]+[c] 終止目前運作的程式
Ctrl+d
[Ctrl]+[d] 關閉目前終端
Shift+Page Up/Page Down
[Shift]+[Page Up] 向上翻頁
[Shift]+[Page Down] 向下翻頁
幫助文檔指令
随着Linux逐漸的發展壯大,Linux中的各種指令肯定是越來越多的,而每個指令都可能會有指令參數還有指令對象,是以将所有指令及對應的參數和對象記下來是不可能的.
對此Linux中有幫助文檔指令,幫助我們調出某一指令的說明文檔,在說明文檔中我們就可以學習了解指令的具體使用規則
Linux的調出說明文檔的方法具體有三種:
- help參數
- info指令
- man指令
help參數
Linux中的指令通常是以腳本的形式寫成的,是以一般都會配備相應的說明文檔.
是以我們對某一個指令使用help參數,就可以調出相應的說明文檔
文法:
指令名稱 -h/--help
例如:
查詢date指令的用法
date --help
不過需要注意的是:
使用help參數查詢用法的時候,指令是知道拼寫的
man指令
man是manul(說明手冊)的縮寫,man指令查到的說明文檔相比于help參數查詢到的更加詳細,甚至會包括該指令的作者,乃至于與該指令相關的其他指令.
文法:
man 指令名稱
執行個體:
查詢date指令的詳細說明
man date
輸入代碼之後,就會彈出date這個代碼的相關内容的界面(列印在螢幕上),叫做man page,十分的詳盡.
整個man page分為好幾個部分,會有點難看懂,下面解釋man page的每個部分和相關代号表示的含義以及如何操作.
man page詳解
date的man page頁面如下:
[ wangsh ]~ $ man date
DATE(1) User Commands DATE(1)
# 請注意上面這個括号内的數字
NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為配置與顯示日期/時間
date - print or set the system date and time
SYNOPSIS <==這個指令的基本文法如下所示
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
DESCRIPTION <==詳細說明剛剛文法談到的選項與參數的用法
Display the current time in the given FORMAT, or set the system
date.
-d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱
display time described by STRING, not 'now'
-f, --file=DATEFILE
like --date once for each line of DATEFILE
-r, --reference=FILE
display the last modification time of FILE
....(中間省略)....
# 找到了!底下就是格式化輸出的詳細資料!
FORMAT controls the output. The only valid option for the second
form specifies Coordinated Universal Time. Interpreted sequences
are:
%% a literal %
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
....(中間省略)....
ENVIRONMENT <==與這個指令相關的環境參數有如下的說明
TZ Specifies the timezone, unless overridden by command line
parameters. If neither is specified, the setting from
/etc/localtime is used.
AUTHOR <==這個指令的作者啦!
Written by David MacKenzie.
REPORTING BUGS <==有問題請留言給底下的email的意思!
Report bugs to <[email protected]>.
COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了!
Copyright ? 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the
terms of the GNU General Public License
<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to
the extent permitted by law.
SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明檔案之意
The full documentation for date is maintained as a Texinfo manual.
If the info and date programs are properly installed at your site,
the command
info date
should give you access to the complete manual.
date 5.97 Nov 2019 DATE(1)
下面将分塊介紹整個man page的每一個部分是什麼意思
基礎資訊
DATE(1) User Commands DATE(1)
- date是指令的全稱
- 數字(如這裡的(1))表明查詢内容的屬性
具體數字代表的含義見下表:
數字 | 含義 |
---|---|
1 | 使用者在shell環境中可以操作的指令或可執行檔案 |
2 | 系統核心可調用的函數與工具 |
3 | 一些常用的函數(function)與函數庫(library),大部分為c語言庫(libc) |
4 | 裝置檔案的說明,通常是在/dev下的檔案 |
5 | 配置檔案或是某些檔案的格式 |
6 | 遊戲(games) |
7 | 慣例與協定等,例如linux檔案系統,網絡協定,ASCII代碼等說明 |
8 | 系統管理者可用的管理指令 |
9 | 跟核心有關的檔案 |
注意:
- 加粗的比較重要
- 其實man也是一個指令,是以他也具有自己對應的man page ,查詢時候直接輸入man man即可
NAME
NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為配置與顯示日期/時間
date - print or set the system date and time
- Name這裡表示指令的完整全名,并且給出相應的簡短說明
SYNOPSIS
SYNOPSIS <==這個指令的基本文法如下所示
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
- SYNOPSIS這裡表示指令的文法(syntax)的簡介
DESCRIPTION
DESCRIPTION <==詳細說明剛剛文法談到的選項與參數的用法
Display the current time in the given FORMAT, or set the system
date.
-d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱
display time described by STRING, not 'now'
-f, --file=DATEFILE
like --date once for each line of DATEFILE
-r, --reference=FILE
display the last modification time of FILE
....(中間省略)....
# 找到了!底下就是格式化輸出的詳細資料!
FORMAT controls the output. The only valid option for the second
form specifies Coordinated Universal Time. Interpreted sequences
are:
%% a literal %
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
....(中間省略)....
- 這個部分首先給出了這個指令的詳細介紹
- 然後給出了針對前面文法中給出的選項與參數進行說明
COMMANDS
這個部分給出了當程式(軟體)正在之行時候,可以在這個程式(軟體)中執行的指令
注:
- date指令的man page并沒有這一部分
FILES
這個程式或者資料所使用的或參考或連結到的檔案
SEE ALSO
SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明檔案之意
The full documentation for date is maintained as a Texinfo manual.
If the info and date programs are properly installed at your site,
the command
info date
should give you access to the complete manual.
- 這裡給出和這個指令或資料相關的其他說明
EXAMPLE
example裡面會給出指令的一些執行個體,這裡沒有給出
如何檢視man page
浏覽步驟
- 先NAME
- 再DESCRIPTION
- 然後是OPTION
- 初學者多看看EXAMPLE
- 有能力了看看FILES
特殊操作
按鍵 | 說明 |
---|---|
Space | 向下翻一頁 |
Page Down | 向下翻一頁 |
Page Up | 向上翻一頁 |
Home | 回到第一頁 |
End | 跳轉到最後一頁 |
/String | 從目前頁面向下查找關鍵詞 |
?String | 從目前頁面想上尋找關鍵詞 |
n,N | 在查找關鍵詞時候,n是到下一個關鍵詞出,N是到上一個關鍵詞處 |
q | 退出目前指令或者檔案的man page |
info指令
在所有的基于Unix的系統中,都有man指令這樣的查詢方式,但是在Linux系統中,又提供了另外一種查詢方式,就是info指令.
通過man指令列印出來的内容稱為man page,那麼通過info指令列印出來的稱為info page.
info page其實在内容上與man page 差不多.但是和man page相比info page結構更加清晰,内容能夠更好地被展現出來.
info page是将所有的内容拆成一個一個的段落,每個段落都有自己獨立的page,不同的page之間用類似于網頁的跳轉的方式進行連接配接
不過需要注意的是支援info指令的說明檔案首先必須以info格式寫成才能夠使用info的特殊功能.
其次支援info指令的檔案必須放在/user/share/info/這個目錄下面.
下面将介紹info 的用法
info指令的用法
和man類似
info 查詢的指令
下面介紹info page中的具體内容
page head
首先info page的頭部包含了許多重要資訊
[ wangsh ]~$ info info
File:info.info, Node: Top, Next:Getting Started, Up: (dir)
Info:An instruction
******************
略
- File:表明目前page的位置
- Node:表示目前界面所在整個info檔案中的位置,這裡是Top節點,也就是最前面的節點
- Next:表示下一個節點的名稱,這裡是Getting Started
- Up:回到上一層的節點總覽畫面,就是檢視與目前節點同級的所有節點
- Prv:前一個節點,但是由于這裡是Top節點,沒有上一個節點,是以沒有顯示
page tail
頁面尾的地方通常表示的是目前節點的下一級節點(沒錯,整個info檔案類似于樹)
Menu:
Getting Started:
Advanced:
Expert Info:
Index:
info page的用法
按鍵什麼與man page一模一樣,但是不知道怎麼用info的時候,可以按下h(help)來檢視按鍵的作用
後面的指令訓示簡單的提一下,更多的使用幫助指令去查閱
常用的系統工作指令
對于新手來說,在使用linux系統的時候,如果遇到了問題,在網上查到了解決辦法,可是卻完全看不懂,這個時候就很頭疼了.
其實這些解決問題的指令往往都是系統工作指令,下面就将講解
echo指令
echo指令用于在終端輸出字元串或變量提取後的值.
文法:
echo [字元串]
或
echo [$變量]
例如:
輸出字元串Jack Wang
echo Jack Wang
提取變量SHELL的值輸出
echo $SHELL
date指令
date指令用于顯示及設定系統時間和日期
文法:
date [指令參數] [指定格式]
當指定格式(指令對象)以==加号+==開頭時,将按照指定的格式輸出目前時間
一些常用參數如下:
參數 | 作用 |
---|---|
%t | 制表符[Tab鍵] |
%H | 24小時( 00 ~ 23 ) |
%I | 12小時( 00 ~ 12 ) |
%M | 分鐘( 00 ~ 59 ) |
%S | 秒( 00 ~ 59 ) |
%j | 目前年份的第幾日 |
例如:
按照預設格式顯示目前時間
date
按照"年-月-日 小時:分鐘:秒"的格式檢視目前系統時間
date "+%Y-%m-%d%t%H:%M:%S""
檢視目前日期是目前年份的第幾日
date "+%j"
設定系統日期
date -s "20200416 8:30:00"
- 将目前時間設定為2020年4月16日8點30分
reboot指令
reboot指令用于重新開機計算機
由于涉及到硬體資源管理,是以需要root使用者來使用
poweroff指令
poweroff指令用于關閉計算機
和reboot一樣,也涉及到了硬體資源管理,需要root權限
wget指令
wget指令用于在終端中下載下傳網絡檔案
文法:
wget [參數] [下載下傳位址]
常用的參數如下:
參數 | 作用 |
---|---|
-b | 背景下載下傳模式 |
-P | 下載下傳到指定目錄 |
-t | 最大嘗試次數 |
-c | 斷點續傳 |
-p | 下載下傳頁面所有資源,包括圖檔,視訊等 |
-r | 遞歸下載下傳 |
例如:
下載下傳http://www.linuxprobe.com/docs/LinuxProbe.pdf這一位址中的Linux教學檔案
wget -P LinuxProbe http:www.linuxprobe.com/docs/LinuxProbe.pdf
>>>将會把下載下傳下來的檔案存放到命名為LinuxProbe的檔案夾下(沒有的話會新建立)
下載下傳http://www.linuxprobe.com的所有資料
wget -r -p http://www.linuxprobe.com
>>>将會把所有内容儲存到目前工作目錄下一個名為www.linuxprobe.com的目錄中
ps指令
ps指令用于檢視系統中的程序狀态
文法:
ps [參數]
一般會配合管道符技術(在後面講解)來查找特定的程序的pid
常用的參數如下:
參數 | 作用 |
---|---|
-a | 顯示所有程序(包括其他使用者的程序) |
-u | 使用者以及其他詳細資訊 |
-x | 顯示沒有控制終端的程序 |
Linux中時刻都運作着許多程序,合理的管理他們能夠優化系統性能.Linux系統中有5種常見的程序狀态,分别為: 運作,中斷,不可中斷,僵死,停止
- R :Running,運作中,程序正在運作或者在運作隊列中等待
- S :Stop,中斷,程序處于休眠中,當某個條件形成或者接收到信号時,脫離該狀态
- D :不可中斷,程序不響應系統異步信号,即使使用kill指令也不能将其中斷
- Z :Zombie,僵死,程序已經終止,但是程序描述符依然存在,知道父程序調用wait4()系統函數後将程序釋放
- T :程序收到停止信号後停止運作
例如:
ps -au
得到結果如下
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3979 0.1 2.3 203224 43204 tty1 Ss+ 06:53 0:05 /usr/bin/Xorg
root 4715 0.0 0.1 116256 3044 pts/0 Ss 06:54 0:00 /bin/bash
root 32917 0.0 0.0 123356 1376 pts/0 R+ 07:54 0:00 ps -au
其中每欄的含義如下
名稱 | 含義 |
---|---|
USER | 程序所有者 |
PID | 程序ID号 |
%CPU | CPU占用率 |
%MEM | 記憶體占用率 |
VSZ | 虛拟記憶體使用量(機關是KB) |
RSS | 占用的固定記憶體量(機關是KB) |
TTY | 所在終端 |
STAT | 程序狀态 |
START | 被啟動的時間 |
TIME | 實際使用CPU時間 |
COMMAND | 指令名稱與參數 |
top指令
top指令用于動态地見識程序活動與系統負載等資訊
文法:
top
使用top指令後,将會看到下面的界面
top - 08:10:18 up 1:26, 2 users, load average: 0.40, 0.15, 0.08
Tasks: 477 total, 3 running, 474 sleeping, 0 stopped, 0 zombie
%Cpu(s): 33.9 us, 1.3 sy, 0.0 ni, 64.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1870760 total, 1327452 used, 543308 free, 1080 buffers
KiB Swap: 2097148 total, 0 used, 2097148 free. 482864 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4359 root 20 0 1676796 327100 38576 S 32.6 17.5 2:16.75 gnome-shell
3979 root 20 0 203224 43204 7916 S 2.3 2.3 0:08.50 Xorg
4706 root 20 0 771500 18860 12408 S 0.7 1.0 0:01.06 gnome-term+
1 root 20 0 52840 6724 3756 S 0.0 0.4 0:01.51 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
前五行指令如下:
- 系統時間,運作時間,登入終端數,1分鐘系統負載平均數,5分鐘系統平均負載,15分鐘系統平均負載
- 程序總數,運作中程序數,睡眠中程序數,停止的程序數,僵死的程序數
- 使用者占用資源百分比,系統核心占用資源百分比,改變過優先級的程序資源百分比,空閑的資源百分比
- 實體記憶體總量,記憶體使用量,記憶體空限量,作為核心緩存的記憶體量
- 虛拟記憶體總量,虛拟記憶體使用量,虛拟記憶體空限量,已被提前加載的記憶體量
pidof指令
pidof指令用于查詢某個指定服務的PID值
文法:
pidof [參數] [服務名稱]
例如:
查詢sshd服務程式的PID
pidof sshd
kill指令
kill指令用于終止某個指定PID的服務程序
通常是用pidof查出服務的pid号碼,然後用kill指令結束程序
文法:
kill [參數] [程序PID]
killall指令
killall指令用于終止某個指定名稱的服務所對應的全部程序
往往複雜軟體的服務程式會有多個程序協同為使用者提供服務,使用killall能結束所有的程序
文法:
killall [參數] [程序名稱]
系統狀态監測
Linux系統作為伺服器,我們需要具備快速檢視Linux系統運作狀态的能力
下面将講解與網卡網絡,系統核心,系統負載,記憶體使用情況,目前啟動終端數量,曆史登入記錄,指令執行記錄及救援診斷等相關指令的使用方法
ifconfig指令
ifconfig指令用于擷取網卡配置與網絡狀态等資訊
文法:
ifconfig [網絡裝置] [參數]
需要注意的是,Ubuntu中ifconfig指令并非安裝時自帶的,需要下載下傳net-tools元件
單純使用ifconfig指令檢視本機目前的網卡配置與網絡狀态等資訊,其實主要看的就是網卡名稱,inet參數後面的IP位址,ether參數後面的網卡實體位址(又稱為MAC位址),以及RX,TX的接收資料包與發送資料包的個數和累計流量
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.218.128 netmask 255.255.255.0 broadcast 192.168.218.255
inet6 fe80::20c:29ff:fef3:b4e6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f3:b4:e6 txqueuelen 1000 (Ethernet)
RX packets 445 bytes 38554 (37.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1418 bytes 103785 (101.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 525 bytes 52048 (50.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 525 bytes 52048 (50.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname指令
uname指令用于檢視系統核心與系統版本等資訊
文法:
uname [參數]
如果要檢視系統核心與系統版本等資訊,文法為
uname -a
uptime指令
uptime指令用于檢視系統的負載資訊
顯示目前系統時間,系統已運作時間,啟動終端數量以及平均負載值(1分鐘,5分鐘,15分鐘)等資訊
文法:
uptime
得到的結果如下
08:50:50 up 2:07, 2 users, load average: 0.08, 0.07, 0.06
free指令
free指令用于顯示目前系統中記憶體的使用量資訊
文法:
free [選項]
通常為了更人性化的檢視會加上==-h==參數(自動轉換機關)
檢視目前系統中的記憶體使用量:
free -h
得到結果如下:
total used free shared buffers cached
Mem: 1.8G 1.3G 516M 10M 1.1M 471M
-/+ buffers/cache: 837M 989M
Swap: 2.0G 0B 2.0G
其中:
- total:記憶體總量
- used:已用量
- free:可用量
- shared:程序共享的記憶體量
- buffers:磁盤緩存的記憶體量
- cached:緩存的記憶體量
who指令
who指令用于檢視目前登入主機的使用者終端資訊
文法:
who [參數]
直接使用who得到的結果如下
root :0 2020-06-28 06:54 (:0)
root pts/0 2020-06-28 06:54 (:0)=
其中:
- 第一列為登入的使用者名
- 第二列為登入的終端裝置
- 第三列為登入到系統的時間
last指令
last指令用于檢視所有系統的登入記錄
文法:
last 參數
得到的結果和who指令的結果類似
history指令
history指令用于顯示曆史執行過的前1000條指令
如果覺得不夠,可以在/etc/profile檔案中修改HISTSIZE變量值
文法:
history [參數]
可以使用==-c==參數來清除曆史記錄
sosreport指令
sosreport指令用于手機系統配置及架構資訊并輸出診斷文檔
文法:
sosreport
和ifconfig一樣sosreport指令Ubuntu中不是自帶的,需要下載下傳sosreport`
工作目錄切換指令
工作目錄是指使用者在目前系統中所處的位置
由于工作目錄牽涉系統儲存結構相關的隻是,是以在後面詳細講解.這裡隻是介紹下使用
pwd指令
pwd指令用于顯示使用者目前所處的工作目錄
文法:
pwd
cd指令
cd指令用于切換工作指令
文法:
cd 目錄名稱
常用的用法:
cd ~ //傳回目前使用者的家目錄
cd.. //進入上級目錄
cd ~username //進入其他使用者的家目錄
cd - //傳回上一次所處的目錄
ls指令
ls指令用于輸出目前目錄下的檔案資訊
文法:
ls 選項 檔案
檔案編輯指令
Linux系統中==“萬物皆檔案”==,是以我們必不可少的需要對文本進行編輯
下面就将講解檔案編輯指令
cat指令
cat指令用于檢視純文字檔案(内容較少時候)
文法:
cat [選項] [檔案]
使用==-n==選項顯示行号
more指令
more指令用于檢視純文字檔案(内容較多的)
使用more可以檢視目前閱讀百分比和空格/回車向下翻頁
文法:
more [選項] [檔案]
head指令
head指令由于檢視純文字文檔的前n行
具體使用就是使用==-n==參數指定看的行數
文法
head [選項] [檔案]
tail指令
tail指令用于檢視純文字文檔的後n行
同樣也是加上==-n==參數指定看的行數
可以使用-f參數來持續重新整理檔案
文法:
tail [選項] [檔案]
tr指令
tr指令由于替換文本中的字元
文法:
tr [原始字元] [目的字元]
一般和管道符結合起來進行快速修改
wc指令
wc用于統計指定文本的行數,字數,位元組數
文法:
wc 參數 文本
得到的結果分别是查詢檔案的行數,字數和位元組數
stat指令
stat指令用于檢視檔案的具體存儲資訊和時間等資訊
文法:
stat 檔案名稱
使用stat檢視當下檔案中的profile檔案
[[email protected] Desktop]# stat profile
File: ‘profile’
Size: 1750 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 102579774 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-06-28 09:30:16.847868217 -0400
Modify: 2020-06-28 09:30:08.916869121 -0400
Change: 2020-06-28 09:30:08.916869121 -0400
Birth: -
可以看到profile檔案具有三種狀态: Access,Modify,Change
這三種狀态在後面的touch指令講解中将會講到
cut指令
cut指令用于按列提取文本字元
文法:
cut 參數 文本
diff指令
diff指令多用于比較多個文本檔案的差異
文法:
diff [參數] [檔案]
如果要比較兩個文本是否一樣,可以使用–brief參數
如果兩個檔案内容一樣,則不會産生任何資訊
如果檔案不一樣,那麼就用==-c==參數來描述檔案内容的具體不同
多出的内容會在這一行前面有加号,不同的内容會在這一行前面有歎号
檔案目錄管理指令
前面的講解更像是在打地基.在日常的linux運維中好需要掌握對檔案的建立,修改,複制,剪切,更名與删除等操作
下面就将講解linux中的檔案目錄管理指令
touch指令
touch指令用于建立空白檔案或者設定檔案時間
文法:
touch [選項] [檔案]
使用touch建立空白檔案很簡單,不加選項直接後面加檔案名即可,是以問題關鍵在于使用touch參數修改檔案時間
touch的參數如下
參數 | 作用 |
---|---|
-a | 僅修改讀取時間(atime) |
-m | 僅修改修改時間(mtime) |
-d | 同時修改atime和mtime |
是以我們可以先用ls檢視一個檔案修改時間然後修改這個檔案,最後通過touch再改回修改之前的時間
mkdir指令
mkdir指令用于建立空白目錄
文法:
mkdir 選項 目錄
可以使用-p選項來遞歸建立具有重疊關系的目錄
cp指令
cp指令用于複制檔案或目錄
文法:
cp 選項 源檔案 目标檔案
mv指令
mv指令用于剪切檔案或者将檔案重命名
文法:
mv 選項 源檔案 目标路徑/目标檔案名
rm指令
rm指令用于删除檔案或目錄
文法:
rm 選項 檔案
dd指令
dd指令用于按照指定大小和個數的資料塊來複制檔案或者轉移檔案
文法:
dd 參數
file指令
file指令用于檢視檔案的類型
文法:
file 檔案名
需要注意的是,linux中不能通過字尾名來檢視檔案類型,是以需要用file來檢視
打包與壓縮指令
在網絡上,人們傾向于傳輸壓縮檔案,因為體積更小,效率更高
下面就将講解linux中的打包與壓縮指令
但是由于每個都很複雜,是以還是需要看檢視說明文檔
tar指令
tar指令用于對檔案進行打包壓縮或解壓
文法:
tar 選項 檔案
tar指令常用參數如下:
參數 | 作用 |
---|---|
-c | 建立壓縮檔案 |
-x | 解開壓縮檔案 |
-t | 檢視壓縮包内有哪些檔案 |
-z | 用Gzip壓縮或者解壓 |
-j | 用bzip壓縮或解壓 |
-v | 顯示壓縮或者解壓的過程 |
-f | 目标檔案名 |
-p | 保留原始的權限和屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 指定解壓到的目錄 |
一般壓縮時候用==-czvf==,解壓縮用==-xzvf==
grep指令
grep指令用于在文本中執行關鍵詞搜尋,并顯示比對結果
文法:
grep 選項 檔案
常用選項如下:
參數 | 作用 |
---|---|
-b | 将可執行檔案(binary)當做文本檔案(text)搜尋 |
-c | 僅顯示找到的行數 |
-i | 忽略大小寫 |
-n | 顯示行号 |
-v | 反向選擇,僅列出沒有關鍵詞的行 |
例如,在/etc/passwd這個文本檔案中比對/sbin/nologin
find指令
find指令用于按照指定條件來查找檔案
格式:
find [查找路徑] [尋找條件] [操作]
其中找條件是使用參數實作的
find指令常用的參數和作用如下:
參數 | 作用 |
---|---|
-name | 比對名稱 |
-perm | 比對權限 |
-user | 比對所有者 |
-group | 比對所有組 |
-mtime -n +n | 比對修改内容的時間(-n指n天以内,+n指n天以前) |
-atime -n +n | 比對通路檔案的時間(-n指n天以内,+n指n天以前) |
-ctime -n +n | 比對修改檔案權限的時間(-n指n天以内,+n指天以前) |
-nouser | 比對無所有者的檔案 |
-nogroup | 比對無所有組的檔案 |
-newer f1 !f2 | 比對比檔案f1新但比檔案f2舊的檔案 |
–type b/d/c/p/l/f | 比對檔案類型,後面的字母參數分别表示塊裝置,目錄,字元裝置,管道,連結檔案,文本檔案 |
-size | 比對檔案的大小(+50KB表示大于50KB的檔案,-50KB表示小于50KB的檔案) |
-preune | 忽略某個目錄 |
-exec … {}; | 可用于後面進一步處理搜尋結果的指令 |
例如
我們想要找出/etc檔案夾下所有以host開頭的檔案并列印出來
[[email protected] Desktop]# find /etc -name "host*" -print
在整個系統中搜尋權限包含SUID權限的所有檔案 隻需要使用-perm參數比對-4000即可