今天介紹幾個我常用的Linux 命令,每個命令這里只介紹其常用參數。
對于每個Linux 命令
都可以使用man + 命令名稱
,查看其完整使用方法。
0,man
man
命令是一個非常有用的命令,當你不會使用某個Linux
命令時,可以使用man
來查看其幫助文檔。man
命令查到的手冊來源于目錄/usr/share/man/
,可以看到該目錄下有9 個這樣的目錄:
>>> ls /usr/share/man/| grep man
______________________________
man1
man2
man3
man4
man5
man6
man7
man8
man9
man
手冊分9 種,用數字[1-9]
來區分,分別代表的含義如下(可以用man man
命令來查看):
數字 | 含義 |
---|---|
1 |
System commands 系統命令 |
2 |
System calls 系統函數 |
3 |
Library calls 庫函數 |
4 |
Special files 特殊文件 |
5 |
File formats 文件格式 |
6 |
Games 游戲和娛樂 |
7 |
Miscellaneous 雜項 |
8 |
System administration commands 管理員root 命令 |
9 |
其它 |
可以通過設置不同的數字來查看不同的手冊,如下:
man 1 系統命令名
man 2 系統函數名
man 3 庫函數名
如果沒有帶這個數字,則會從1
查到9
,直到查到第一個為止。
一,文件管理
1,cat
cat
命令用于查看文件內容,該命令會將文件的所有內容輸出到控制臺
。
>>> cat hello.c
______________________________________
// 包含頭文件
#include <stdio.h>
// 程序入口,main 函數,返回值類型為int 類型
int main()
{
// 打印字符串
printf("hello world .\n");
return 0;
}
cat
命令常用參數:
參數 | 含義 |
---|---|
-n | 對輸出的內容加上行號 |
-b | 對輸出的內容加上行號,空白行 不計入行號 |
-s | 將兩個以上的空白行 ,顯示為一個空白行
|
cat
命令會將文件內容快速的輸出到控制臺
,它并不能控制瀏覽文件的進度。如果想控制瀏覽文件的進度,可以使用more
或less
命令。
2,more
more
命令用于查看Linux 文件的內容,用more filename
打開一個文件后,可以控制向上
或向下
翻滾頁面。
>>> more log.txt
________________________________
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
--More--(2%) (`注`:這里顯示瀏覽頁面的`進度百分比`)
more
命令常用操作:
操作 | 含義 |
---|---|
Enter 鍵 |
向下 翻滾一行
|
空格鍵 |
向下 翻滾一頁 ,一頁 的大小可以使用 -N 參數來設置 |
Ctrl + B (本操作并不是很方便 ) |
向上 翻滾一頁 ,一頁 的大小可以使用 -N 參數來設置 |
使用下面的方式將一頁
的大小設置為10 行,這時每次向上
或者向下
翻頁時,每次會滾動10
行:
more -10 log.txt
more 命令
可以與cat 命令
來配合使用,比如用cat
顯示行號,然后用more
控制翻頁,并且頁的大小為10 行:
>>> cat -n log.txt| more -10
——————————————————————————————————————————
56 1111111111111111111111111111111111
57 1111111111111111111111111111111111
58 1111111111111111111111111111111111
59 1111111111111111111111111111111111
60 1111111111111111111111111111111111
61 1111111111111111111111111111111111
62 1111111111111111111111111111111111
--More--
(`注`:第一列為行號,并且這時`進度百分比`消失了,而且`不能向上翻頁`)
3,less
less 命令
也是用來瀏覽文件內容,但與more 命令
有些不同,less 命令
有更多的操作。
用命令less filename
打開文件后的常用操作:
操作 | 含義 |
---|---|
b |
向上翻一頁 |
d 或者空格鍵
|
向下翻一頁 |
k 或者方向鍵↑
|
向上翻一行 |
j 或者方向鍵↓ 或者Enter 鍵
|
向下翻一行 |
/pattern |
在頁面中搜索字符串pattern ,匹配到的字符串會高亮顯示,可以用-i 參數來忽略大小寫 |
n |
鎖定下一個 匹配到的字符串pattern
|
N |
鎖定上一個 匹配到的字符串pattern
|
q |
退出當前文件 |
less
命令常用參數:
參數 | 含義 |
---|---|
-i |
忽略搜索/pattern 時的大小寫 |
-m |
顯示類似more 命令 的進度百分比 |
-N |
顯示行號 |
-s |
連續空白行 顯示為一行 |
如下命令,即顯示行號
又顯示進度百分比
:
less -mN README.md
效果如下:
4,head
head
命令用于從一個文件的開頭處查看文件。常用參數如下:
參數 | 含義 |
---|---|
-n |
查看一個文件的前N行,默認為前10 行 |
-c |
查看一個文件的前N字節 |
如下命令查看hello.c
文件的前5 行:
>>> head hello.c -n 5
_______________________________________
// 包含頭文件
#include <stdio.h>
// 程序入口,main 函數,返回值類型為int 類型
int main()
如下命令查看hello.c
文件的前20 字節:
>>> head hello.c -c 20
_______________________________________
// 包含頭文件
#
5,tail
tail
命令的含義與head
恰好相反,tail
從一個文件的尾部開始查看,常用參數如下:
參數 | 含義 |
---|---|
-n |
查看一個文件的最后N行,默認為后10 行 |
-c |
查看一個文件的最后N字節 |
-f |
實時查看文件的內容,并輸出到控制臺,常用于查看日志 輸出 |
如下命令查看hello.c
文件的最后5 行:
>>> tail hello.c -n 5
_______________________________
// 打印字符串
printf("hello world 1.\n");
return 0;
}
如下命令查看hello.c
文件的最后20 字節:
>>> tail hello.c -c 20
_______________________________
return 0;
}
6,find
find
命令用來查找指定目錄
下符合指定條件
的文件,并進行指定操作
,其語法如下:
find `目錄` `條件` `操作`
6.1 目錄(可不寫)
目錄
表示在哪個目錄
下進行查找。例如./
代表當前目錄,/
代表根目錄。如果沒有寫目錄,默認會在當前目錄及其子目錄
下查找。
6.2 條件(必須寫)
查找符合怎樣條件
的內容,支持如下常用條件
(這里并沒有列出所有可用條件):
參數 | 含義 |
---|---|
-name |
按照文件名稱 查找,支持* 通配符 |
-perm |
按照文件權限 查找 |
-user |
按照文件屬主 查找 |
-group |
按照文件所屬的組 查找 |
-prune |
忽略某個目錄 |
-mtime -n/+n |
按照文件更改時間 來查找,-n 表示n天之內,+n 表示n天之前 |
-atime -n/+n |
按照文件訪問時間 來查找 |
-ctime -n/+n |
按照文件創建時間 來查找 |
-type |
按照文件類型 查找 |
-size N[bcwkMG] |
按照文件大小 查找,bcwkMG 是可選的單位 |
-depth |
使查找在進入子目錄前先行查找完本目錄 |
-maxdepth |
設置查找目錄的最大深度 |
-mindepth |
設置查找目錄的最小深度 |
其中-type
支持的類型如下:
類型 | 含義 |
---|---|
f |
普通文件 |
d |
目錄 |
l |
符號鏈接文件 |
s |
socket |
b |
塊設備文件 |
c |
字符設備文件 |
p |
管道文件 |
6.3 操作(可不寫)
對查找出來的文件進行怎樣的操作
,支持如下操作
:
操作 | 含義 |
---|---|
-print |
輸出到控制臺 ,不寫的話,默認為此操作 |
-exec |
對查找到的文件執行shell命令 |
-ok |
對查找到的文件執行shell命令,在執行命令之前會先提示用戶是否執行,比-exec 更安全 |
exec
與 -ok
的格式為:
-exec/-ok command {} \;
其中可變的只有command
,其它都是固定寫法,不用改變,command
為Linux
命令,比如ls
,rm
。
6.4 例子
find . -name "*.log" `在當前目錄及其子目錄查找,文件名以".log" 結尾的文件,并輸出`
find . -perm 777 `在當前目錄及其子目錄查找,權限為"777" 的文件,并輸出`
find . -type d `在當前目錄及其子目錄查找,文件類型為目錄的文件,并輸出`
find . -name "*.c" -exec rm {} \; `在當前目錄及其子目錄查找,文件名以".c" 結尾的文件,并刪除`
find . -size +100c `在當前目錄及其子目錄查找,文件大小大于100字節的文件,并輸出`
find . -size -100c `在當前目錄及其子目錄查找,文件大小小于100字節的文件,并輸出`
find . -size 100c `在當前目錄及其子目錄查找,文件大小等于100字節的文件,并輸出`
7,chmod
在類Unix
系統中,文件的調用權限
分三級,分別是:文件擁有者
、群組
、其他
。文件的操作權限
分三種分別是:可讀
,可寫
,可執行
。
chmod
命令用于修改文件的調用權限
和操作權限
,該命令的語法格式如下(這里只列出了-R
參數,還有其它):
chmod [-R] `mode` `filename`
7.1 R參數(可選)
-R
參數表示,是否操作當前目錄下的所有文件與子目錄。
7.2 mode
mode
包含三部分:[ugoa]
,+-=
,[rwx]
,它們的含義如下:
字母 | 含義 |
---|---|
u |
該文件的擁有者
|
g |
與該文件所屬同一群組者
|
o |
其它用戶 |
a |
所有用戶,即ugo 三者皆是 |
+ |
增加 權限 |
- |
取消 權限 |
= |
唯一設定 權限,即設置為只有一個權限 |
r |
可讀 權限 |
w |
可寫 權限 |
x |
可執行 權限 |
7.3 例子
chmod ugo+r file `將文件file 設為所有人皆可讀`
chmod a+w file `將文件file 設為所有人皆可寫`
chmod ug+w,o-w file1 file2 `將文件file1 file2設為該文件擁有者,與其所屬同一個群組者可寫入,但其它用戶不可寫`
chmod -R a+r dir/* `將dir 目錄下的所有文件與子目錄設為所有人可讀`
8,chown
chown
命令用于將文件的擁有者改為指定的用戶或組。
一般來說chown
命令由root
使用,因為普通用戶沒有權限改變他人文件的擁有者,也沒有權限把自己的文件擁有者改設為他人。
chown
命令的語法格式如下:
chown [-R] user[:group] file_list
-R
參數表示,是否操作當前目錄下的所有文件與子目錄。
其它參數含義:
參數 | 含義 |
---|---|
user |
新的文件擁有者 |
group |
新的文件擁有者組 |
file_list |
要修改的文件,可以是一個文件,也可以是一個文件列表 |
例子:
chown runoob:runoobgroup file `將文件file 的擁有者設為runoob,群組設為runoobgroup`
chown -R root:root dir/* `將dir/ 目錄下的所有文件與子目錄的擁有者設為runoob,群組設為runoobgroup`
9,scp
scp
命令用于遠程復制目錄或文件,它基于ssh
,scp
是 secure copy
的縮寫。scp
命令是rcp
命令的加強版,scp
是加密傳輸,rcp
是非加密傳輸。
scp
的語法格式如下:
scp [可選參數] file_source file_target
有如下常用可選參數
:
參數 | 協議 |
---|---|
-1 |
使用協議ssh1 傳輸 |
-2 |
使用協議ssh2 傳輸 |
-4 |
使用IPv4協議尋址 |
-6 |
使用IPv6協議尋址 |
-C |
使用壓縮 |
-r |
遞歸復制整個目錄 |
-P |
指定傳輸端口 |
例子:
scp local_file remote_username@remote_ip:remote_folder `指定了用戶名,命令執行后需要再輸入密碼`
scp local_file remote_ip:remote_folder `沒有指定用戶名,命令執行后需要輸入用戶名和密碼`
scp -r local_folder remote_username@remote_ip:remote_folder `復制目錄`
scp -r local_folder remote_ip:remote_folder `復制目錄`
scp remote_username@remote_ip:remote_file local_folder `從遠程復制到本地`
scp -r remote_username@remote_ip:remote_folder local_folder `從遠程復制到本地`
二,文檔處理
10,wc
wc
命令用于計算行數
,字數
和文件大小
(以字節為單位),其語法格式如下:
wc [-lcw] filename
其參數含義如下:
參數 | 含義 |
---|---|
-l |
計算文件行數 |
-c |
計算文件大小 |
-w |
計算文件字數 |
不帶參數 |
以上三者都會計算 |
11,grep
grep
命令用于查找文件中符合特定條件
的字符串,其語法格式如下:
grep `[參數]` `匹配條件` `文件`
常用參數如下:
參數 | 含義 |
---|---|
-c |
計算符合條件 的行數 |
-e |
使用正則表達式,一個-e 后只能跟一個pattern ,可以寫多個-e
|
-E |
使用正則表達式,可以使用| 來分割多個pattern ,從而寫多個pattern
|
-i |
忽略大小寫 |
-l |
只列出符合條件 的文件名
|
-L |
只列出不符合條件 的文件名
|
-n |
顯示行號 |
-o |
只顯示匹配pattern 的部分,這個參數很有用 |
-v |
顯示不符合條件 的所有行 |
-r |
遞歸目錄查找 |
--color |
使匹配到的字符串高亮顯示 |
-A<行數N> |
除了顯示符合條件 的那一行之外,還顯示該行之后N行 的內容 |
-B<行數N> |
除了顯示符合條件 的那一行之外,還顯示該行之前N行 的內容 |
-C<行數N> |
除了顯示符合條件 的那一行之外,還顯示該行之前和之后N行 的內容 |
例子:
grep test *file `在當前目錄下,從所有的以"file" 為后綴的文件中,匹配字符串"test"`
grep -r hello ./ `在當前目錄下,遞歸所有的文件和目錄,匹配字符串"hello"`
grep -v hello *txt `在當前目錄下,從所有的以"txt" 為后綴的文件中,顯示所有不匹配字符串"hello" 的行`
下面三個命令sort
,uniq
,awk
相對來說較復雜,限于篇幅,所以不在本文中詳細介紹,具體可點開相應鏈接查看。
12,sort
sort
命令用于將文本內容進行排序,其以文本內容的行
為單位,以ASCII 碼的次序進行排列。
詳見這里。
13,uniq
uniq
命令用于檢查及刪除文本文件中重復出現的行列。
詳見這里。
14,awk
awk
命令是一個強大的文本分析工具,它有著復雜的功能。
詳見這里。
(完。)