ls
功能:列出目錄下的子目錄與文件,對于文件,還會列出文件名及其他信息。
語法:ls [選項] [目錄或文件]
1.常用選項及說明
選項 | 說明 |
---|---|
-a | 列出目錄下的所有文件,包括以 . 開頭的隱含文件 |
-d | 將目錄象文件一樣顯示,而不是顯示其下的文件,如:ls -d 指定目錄 |
-i | 輸出文件的 i 節點的索引信息,如 ls -ai 指定文件 |
-k | 以 k 字節的形式表示文件的大小,如 ls -alk 指定文件 |
-l | 列出文件的詳細信息 |
-n | 用數字的 UID、GID 代替名稱(介紹 UID,GID) |
-F | 在每個文件名后附上一個字符以說明該文件的類型,“*” 表示可執行的普通文件;“/” 表示目錄;“@” 表示符號鏈接;“ ” 表示 FIFOs;“=” 表示套接字(sockets)(目錄類型識別) |
-r | 對目錄反向排序 |
-t | 以時間排序 |
-S | 在文件名后輸出該文件的大小(大小排序,如何找到目錄下最大的文件) |
-R | 列出所有子目錄下的文件(遞歸) |
-1 | 一行只輸出一個文件 |
2.命令操作與示例
選項可以拼接在一起,順序隨意,比如 ls -al 與 ls -la 效果一致。
操作示例:
- ls -a -l:顯示當前目錄下所有文件(包括隱藏文件)的詳細信息,執行后能看到類似 total 16以及文件權限、所有者、大小、修改時間等內容,像 [drwxr - xr - x 4 root root 4096 Apr 23 19:03] 這樣的條目。
- ls -al:展示當前目錄下所有文件(含隱藏)的詳細屬性,包括普通文件(如 test.c)、目錄(如 dir)等的權限、所有者、大小、修改時間等信息。
- ls -l /root:顯示指定目錄(/root)下的內容詳情。
- 可通過 ls -ld 路徑 命令查看目錄的詳細信息,比如查看根目錄信息:[root@bite - alicloud ~]# ls -ld /,能看到類似 dr - xr - xr - x. 22 root root 4096 Jan 16 10:43 / 的輸出,其中包含目錄的權限、所有者、大小、修改時間等信息。
- 特殊說明:ll ==ls -al,即 ll 命令等同于 ls -al 命令的功能。
pwd
語法:pwd
功能:顯示用戶當前所在的目錄
常用選項:無
1.路徑相關知識
路徑作用:通過文件目錄和路徑分隔符組成的路徑,可用于找到、定位文件。
系統路徑分隔符對比:
- Windows 系統:使用 \ 作為路徑分隔符,示例路徑如 D:\課堂代碼和板書\112\課堂板書。
- Linux 系統:使用 /作為路徑分隔符,示例路徑如 /root/112/lesson2,其中 / 代表根目錄。
cd
用于改變工作目錄,將當前工作目錄改變到指定的目錄下。
1.常見 cd 命令用法及示例
命令 | 說明 | 示例 |
---|---|---|
cd ~ | 進入用戶自己的家目錄 | [root@bite - alicloud ~]# cd ~,執行后進入家目錄 |
cd … | 返回上級目錄 | 比如當前在 /root/112/lesson2,執行后到 /root/112 |
cd / | 進入根目錄 | [root@bite - alicloud lesson2]# cd /,進入根目錄 |
cd 相對路徑 | 通過相對路徑進入目標目錄 | 如當前在 /root,執行 cd 112/lesson2 進入 /root/112/lesson2 |
cd 絕對路徑 | 通過絕對路徑進入目標目錄 | 如執行 cd /root/112/lesson2 進入對應目錄 |
cd - | 返回剛剛訪問的目錄 | 在不同目錄間切換后,可通過該命令返回上一次所在目錄 |
2.Linux 目錄結構相關
- Linux 系統中,磁盤上的文件和目錄被組成一棵目錄樹,每個節點都是目錄或文件,根目錄為 /,包含 bin、etc、home、dev、usr 等子目錄,usr 下又有 lib、bin 等子目錄,不同目錄存儲不同類型的系統文件和用戶文件等。
mkdir (重要)
語法:mkdir [選項] dirname...
功能:在當前目錄下創建名為 “dirname” 的目錄。
常用選項: | 作用 |
---|---|
-p, --parents: | 若路徑中的某些目錄尚不存在,系統將自動建立那些不存在的目錄,即一次可以建立多個目錄,例如 mkdir -p test/test1 可遞歸建立多個目錄。 |
touch
語法:touch [選項]... 文件...
功能:可更改文檔或目錄的日期時間(包括存取時間和更改時間),或者新建一個不存在的文件。
選項 | 作用 |
---|---|
-a 或 --time=atime 或 --time=access 或 --time=use | 只更改存取時間。 |
-c 或 --no-create | 不建立任何文檔。 |
-d | 使用指定的日期時間,而非現在的時間。 |
-f | 此參數將忽略不予處理,僅負責解決 BSD 版本 touch 指令的兼容性問題。 |
-m 或 --time=mtime 或 --time=modify | 只更改變動時間。 |
-r | 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。 |
-t | 使用指定的日期時間,而非現在的時間。 |
rmdir
與 mkdir 命令相對應,mkdir 用于建立目錄,rmdir 用于刪除目錄。
語法:rmdir [-p] [dirName]。
適用對象:具有當前目錄操作權限的所有使用者。
功能:刪除空目錄。
常用選項:-p,當子目錄被刪除后,如果父目錄也變成空目錄,就連帶父目錄一起刪除。
rm
可以同時刪除文件或目錄。
語法:rm [-f|-i|-r] [dirName/dir]。
適用對象:所有使用者。
功能:刪除文件或目錄。
常用選項: | 作用 |
---|---|
-f: | 即使文件屬性為只讀(即寫保護),也直接刪除。 |
-i | 刪除前逐一詢問確認。 |
-r: | 刪除目錄及其下所有文件。 |
man (重要)
作用:由于 Linux 命令參數眾多,可通過 man 命令查看聯機手冊獲取幫助,訪問 Linux 手冊頁。
語法:man [選項] 命令。
選項 | 作用 |
---|---|
-k | 根據關鍵字搜索聯機幫助。 |
num | 只在第 num 章節查找。 |
-a | 將所有章節的內容都顯示出來,比如 man printf 用 -a 選項時,按 q 退出一章后會繼續搜索后面章節,直到所有章節都搜索完畢。 |
cat
cat 命令的語法為 cat [選項][文件]
,功能是查看目標文件的內容,
cat 是正序打印文件內容,tac 是逆序打印。
選項 | 作用 |
---|---|
-b | 對非空輸出行編號。 |
-n | 對輸出的所有行編號。 |
-s | 不輸出多行空行。 |
cp
語法:cp [選項] 源文件或目錄 目標文件或目錄
功能:復制文件或目錄
1.命令說明
cp 命令用于復制文件或目錄。
- 若同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則會把前面指定的所有文件或目錄復制到此目錄中;
- 若同時指定多個文件或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤信息。
2.常用選項
選項 | 說明 |
---|---|
-f 或 --force | 強行復制文件或目錄,不論目的文件或目錄是否已經存在 |
-i 或 --interactive | 覆蓋文件之前先詢問用戶 |
-r | 遞歸處理,將指定目錄下的文件與子目錄一并處理。若源文件或目錄的形態不屬于目錄或符號鏈接,則一律視為普通文件處理 |
-R 或 --recursive | 遞歸處理,將指定目錄下的文件及子目錄一并處理 |
mv
全稱:move 的縮寫。
作用:可用來移動文件或者將文件改名(move (rename) files),是 Linux 系統下常用命令,經常用來備份文件或者目錄。
語法:mv [選項] 源文件或目錄 目標文件或目錄
1.常用選項
選項 | 說明 |
---|---|
-f force | (強制)的意思,如果目標文件已經存在,不會詢問而直接覆蓋 |
-i | 若目標文件(destination)已經存在時,就會詢問是否覆蓋 |
2.mv 命令主要操作類型
- 剪切文件、目錄:使用格式
mv src[文件、目錄] dst[路徑、文件]
,可將源文件或目錄剪切到目標路徑或重命名為目標文件。 - 文件重命名:當第二個參數是已存在的文件名稱時如 mv hello.txt world.txt,將 hello.txt 重命名為 world.txt。
- 移至一個新的目錄:當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv 命令將各參數指定的源文件均移至目標目錄中。
3.舉例(rm 改造為帶備份的類似 mv 操作)
# 1. 編輯 .bashrc 文件
[root@linux-server ~]$ vim ~/.bashrc# 2. 在打開的文件中添加以下內容(按 i 進入編輯模式)
# 創建 trash 函數:將文件移動到垃圾目錄
trash() {mkdir -p ~/.trash # 確保垃圾目錄存在mv -i "$@" ~/.trash/ # 交互式移動文件到垃圾目錄
}# 設置別名:用 trash 替代 rm
alias rm=trash# 設置恢復文件的別名
alias undelfile='mv -i ~/.trash/$@ ./'# 3. 保存并退出 vim(按 Esc 后輸入 :wq 回車)# 4. 使配置生效
[root@linux-server ~]$ source ~/.bashrc# 5. 驗證效果
# 刪除文件(實際移到 ~/.trash)
[root@linux-server ~]$ rm test.txt
mv: 是否覆蓋"~/.trash/test.txt"?n # 若文件已存在,會詢問是否覆蓋# 恢復文件
[root@linux-server ~]$ undelfile test.txt
mv: 是否將"~/.trash/test.txt"移動到"./test.txt"?y# 查看垃圾目錄內容
[root@linux-server ~]$ ls ~/.trash/
oldfile.txt backup.log # 顯示已被"刪除"的文件
echo
在 Linux 中,一切皆文件,鍵盤、顯示器等也可看作文件。
echo 可向顯示器文件寫入內容,例如 echo “hellobit” 就是向顯示器文件寫入 “hellobit”。
1.輸出重定向(>)
作用:將輸出的字符串內容寫入到文件中,如果文件不存在,就創建該文件;如果文件存在,每次寫入都會從頭寫入,并且會清空文件原有內容后再寫入。
示例:
若執行 echo “hello word” > hello.c,會將 “hello word” 寫入 hello.c 文件(文件不存在則創建),且若 hello.c 原有內容會被清空。
單獨執行 > new.txt,若 new.txt 不存在則創建空文件,若存在則清空其內容。
2.追加重定向(>>)
作用:本質也是寫入文件,但采用新增的方式,不會清空文件原有內容,而是在文件末尾追加內容。
示例:執行 echo “aaaa” >> test.txt,會在 test.txt 文件末尾追加 “aaaa”,若多次執行,內容會依次追加,如第一次執行后 test.txt 內容為 “aaaa”,再次執行后為 “aaaa” 和 “aaaa”(自帶換行)。
3.輸入重定向(<)
作用:本來命令默認從鍵盤文件讀取輸入數據,使用 < 可更改為從指定文件中讀取數據。
示例:cat < test.txt,cat 命令會從 test.txt 文件中讀取數據并顯示,而不是從鍵盤讀取。
more 命令:
語法:more [選項][文件]。
功能:功能類似 cat,主要用于查看長文件。
常用選項: | 作用 |
---|---|
-n: | 對輸出的所有行編號。 |
q: | 退出 more。 |
less (重要)
是對文件或其他輸出進行分頁顯示的工具,是 Linux 系統查看文件內容的強大工具。
用法比 more 更有彈性,在 more 中只能往后看內容,而 less 可以使用 pageup/pagedown等按鍵前后翻看文件內容,更方便查看文件。查看文件前不會加載整個文件。
語法:less [參數] 文件。
選項 | 作用 |
---|---|
-i | 忽略搜索時的大小寫。 |
-N | 顯示每行的行號。 |
/字符串 | 向下搜索 “字符串” 的功能。 |
?字符串 | 向上搜索 “字符串” 的功能。 |
n | 重復前一個搜索(與 / 或 ? 有關)。 |
N | 反向重復前一個搜索(與 / 或 ? 有關)。 |
q | 退出。 |
head 命令:
作用:用來顯示文件的開頭至標準輸出,默認打印相應文件的開頭 10 行。
語法:head [參數]... [文件]...
選項:-n<行數>:用于顯示指定的行數。
tail 命令:
作用:從指定點開始將文件寫到標準輸出,常用查看日志文件,tail -f filename 會把 filename 里最尾部的內容顯示在屏幕上且不刷新,可查看新的文件內容;
不指定文件時,作為輸入信息進行處理。
語法:tail [必要參數][選擇參數][文件]
選項: | 作用 |
---|---|
-f: | 循環讀取。 |
-n<行數>: | 顯示指定的行數。 |
管道(|)相關:管道可將一個命令的輸出作為另一個命令的輸入,實現流水線式的數據加工處理。例如 head -5020 log.txt | tail -21,先通過 head 取 log.txt 的前 5020 行,再通過 tail 取這 5020 行中的最后 21行;還可結合更多命令,如 head -5020 log.txt | tail -21 | cat | tac | wc -l 進行復雜的數據處理。
date 命令顯示時間
指定格式顯示時間:語法為 date +%Y%m%d
(也可根據需要組合其他格式標記),用法為 date [OPTION]... [+FORMAT]。
常用格式標記 | 作用 |
---|---|
%H | 小時(00…23)。 |
%M | 分鐘(00…59)。 |
%S | 秒(00…61)。 |
%X | 相當于 %H:%M:%S。 |
%d | 日(01…31)。 |
%m | 月份(01…12)。 |
%Y | 完整年份(0000…9999)。 |
%F | 相當于 %Y-%m-%d。 |
示例:date +%Y-%m-%d\ %H:%M:%S,可輸出類似 2024-05-09 20:20:54 的時間格式。
1.date 命令設定時間
只有 root 權限才能設置當前時間,其他用戶只能查看。
相關用法 | 作用 |
---|---|
date -s 20080523 | 設置具體時間為 2008-05-23 00:00:00。 |
date -s 01:01:01 | 設置具體時間,不更改日期。 |
date -s “01:01:01 2008-05-23” | 設置全部時間。 |
還有如 date -s “2008-05-23 01:01:01” 等類似設置全部時間的用法。
2.時間戳相關
- 時間轉時間戳:使用 date +%s 命令,可將當前時間轉換為從 1970 年 1 月 1 日(UTC/GMT 的午夜)開始所經過的秒數(Unix 時間戳)。
- 時間戳轉時間:使用 date -d@時間戳 命令,可將時間戳轉換為對應的時間。Unix 時間戳:從 1970 年 1 月 1 日(UTC/GMT 的午夜)開始所經過的秒數,不考慮閏秒。
find (非常重要,含 -name 選項):
作用:在目錄結構中搜索文件,并執行指定操作;提供諸多查找條件,功能強大,即使系統含網絡文件系統(NFS),在該文件系統中也同樣有效(需有相應權限);因遍歷大文件系統可能很耗時,常放后臺執行。
語法:find pathname -options。
功能:在文件樹中查找文件,并作出相應處理(可能訪問磁盤)。
常用選項:-name,按照文件名查找文件。
示例:find /home/whb/110/110 -name test.c;find /home/whb -name test.c -o -name test.cpp -o -name test.cc(-o 表示 “或”)。
which
作用:在 Linux 系統中搜索指定的指令(指令是可執行程序,也是文件,類似 C、C++ 代碼編譯生成的 XXX.exe,指令、可執行程序、命令是一回事)。
示例:which touch 輸出 /bin/touch;which ls 輸出 alias ls=‘ls --color=auto’ 和 /usr/bin/ls(alias 給指定命令起別名,且 ls 有顏色區分)。
grep
語法:grep [選項] 搜尋字符串 文件。
功能:在文件中搜索字符串,將找到的行打印出來。
選項 | 作用 |
---|---|
-i | 忽略大小寫的不同,大小寫視為相同。 |
-n | 順便輸出行號。 |
-v | 反向選擇,即顯示出沒有 “搜尋字符串” 內容的那一行。 |
zip
語法:zip 壓縮文件.zip 目錄或文件。
功能:將目錄或文件壓縮成 zip 格式。
常用選項:-r,遞歸處理,將指定目錄下的所有文件和子目錄一并處理。
舉例:將 test2 目錄壓縮,命令為 zip test2.zip test2/*。
unzip
作用:用于解壓 zip 格式的壓縮文件。
舉例:解壓 test2.zip 到 /tmp 目錄,命令為 unzip test2.zip -d /tmp(-d 選項指定解壓到的目錄)。
tar
tar 命令主要用于打包 / 解包,且能直接查看內容
選項 | 作用 |
---|---|
c | 建立一個壓縮文件(create 的意思)。 |
x | 解開一個壓縮文件。 |
t | 查看 tar 文件里面的文件。 |
z | 是否同時具有 gzip 的屬性(是否需要用 gzip 壓縮)。 |
j | 是否同時具有 bzip2 的屬性(是否需要用 bzip2 壓縮)。 |
v | 壓縮的過程中顯示文件(常用,但不建議在背景執行時用)。 |
f | 使用檔名,在 f 之后要立即接檔名,不要再加參數。 |
C | 解壓到指定目錄。 |
1.范例一
打包 /etc 目錄下的文件
# 僅打包,不壓縮
[root@linux-server ~]$ tar -cvf /tmp/etc.tar /etc
/etc/passwd
/etc/group
/etc/shadow
...(省略大量被打包的文件列表)...
tar: 已完成將 /etc 目錄打包到 /tmp/etc.tar# 打包后以 gzip 壓縮
[root@linux-server ~]$ tar -zcvf /tmp/etc.tar.gz /etc
/etc/passwd
/etc/group
/etc/shadow
...(省略大量被打包的文件列表)...
tar: 已完成將 /etc 目錄打包并以 gzip 壓縮到 /tmp/etc.tar.gz# 打包后以 bzip2 壓縮
[root@linux-server ~]$ tar -jcvf /tmp/etc.tar.bz2 /etc
/etc/passwd
/etc/group
/etc/shadow
...(省略大量被打包的文件列表)...
tar: 已完成將 /etc 目錄打包并以 bzip2 壓縮到 /tmp/etc.tar.bz2
實際執行時,終端會實時打印被打包的文件路徑(如 /etc/passwd 等)
命令執行完畢后,會有簡要的成功提示(上述提示為模擬,實際以系統輸出為準)
c(創建壓縮包)、v(顯示過程)、f(指定文件名)是核心參數,z(gzip 壓縮)、j(bzip2 壓縮)為可選壓縮參數
2.范例二
查看壓縮文件內的文件
# 查看用 gzip 壓縮的 tar 文件內的文件
[root@linux-server ~]$ tar -ztvf /tmp/etc.tar.gz
-rw-r--r-- root/root 1016 2024-09-12 10:00 etc/passwd
-rw-r--r-- root/root 807 2024-09-12 10:00 etc/group
-rw-r----- root/root 1228 2024-09-12 10:00 etc/shadow
...(省略大量文件列表)...
tar: 已列出 /tmp/etc.tar.gz 內的文件# 解壓壓縮文件(步驟分解)
# 先切換到目標目錄
[root@linux-server ~]$ cd /usr/local/src
[root@linux-server src]$ pwd
/usr/local/src# 執行解壓命令
[root@linux-server src]$ tar -zxvf /tmp/etc.tar.gz
etc/passwd
etc/group
etc/shadow
...(省略大量被解壓的文件列表)...
tar: 已將 /tmp/etc.tar.gz 解壓到當前目錄
t(查看內容)參數用于列出壓縮包內的文件,結合 z(gzip 壓縮)可查看 gzip 壓縮的 tar 包內容,終端會顯示文件權限、所有者、大小、修改時間和路徑。
x(解壓)參數用于解壓壓縮包,執行后終端會打印出被解壓的文件路徑,提示解壓完成。
uname
語法:uname [選項]。
功能:用于獲取電腦和操作系統的相關信息,可顯示 Linux 主機所用的操作系統版本、硬件名稱等基本信息。
常用選項:-a 或 --all,能詳細輸出所有信息,依次為內核名稱、主機名、內核版本號、內核版本、硬件名、處理器類型、硬件平臺類型、操作系統名稱。
重要熱鍵:
命令 | 作用 |
---|---|
[Tab] 按鍵: | 具有 “命令補全” 和 “檔案補齊” 的功能。 |
[Ctrl]-c 按鍵: | 讓當前的程序 “停滯”。 |
[Ctrl]-d 按鍵: | 通常代表著 “鍵盤輸入結束(End Of File,EOF 或 End Of Input)” 的意思;另外,也可以用來取代 exit。 |