【Linux】常用命令 一
- 1. ls
- 1.1 ls -a 顯示所有文件及其目錄
- 1.2 ls -A 不顯示當前目錄和父目錄
- 1.3 ls -d 顯示目錄本身,而不是顯示其內部內容
- 1.4 ls -i 顯示文件的inode屬性信息
- 1.4.1 實際用途場景
- 1.5 ls -l 顯示文件的詳細屬性信息
- 1.6 ls -R 遞歸顯示所有子文件
- 1.7 ls -S 按照文件大小(Size)排序列出當前目錄下的文件,默認從大到小排列
- 1.8 ls -t 最后修改時間排序,最后修改的排到最前面
- 1.9 ls -lh --time-style=long-iso
- 2. cp命令
- 3. grep強大的文本搜索工具
- 4. sed命令 批量編輯文本文件
- 附錄
1. ls
ls命令來自于英文單次list的縮寫,中文譯為“列出”,其功能是顯示目錄中的文件及其屬性信息。
1.1 ls -a 顯示所有文件及其目錄
可以看到包含了 . 與 ./
以及當前目錄下的所有文件
1.2 ls -A 不顯示當前目錄和父目錄
可以看到就沒有. 與 ./
1.3 ls -d 顯示目錄本身,而不是顯示其內部內容
1.4 ls -i 顯示文件的inode屬性信息
inode屬性信息:
在 Linux/Unix 文件系統中,每個文件(或目錄)在磁盤上都有一個唯一的 inode(索引節點)編號,它存儲了該文件的元信息,例如:
- 文件類型(普通文件、目錄、鏈接等)
- 權限(rwx)
- 所有者、組
- 文件大小
- 創建、修改、訪問時間
- inode ≠ 文件名,文件名是目錄中的映射。
- 數據塊的物理位置(內容不在 inode 中,但 inode 指向內容)
ls -i 可以讓你看到文件/目錄的唯一標識(inode 號),幫助你判斷“兩個文件是不是一個”、或者“怎么刪除一個刪不了的文件”。
1.4.1 實際用途場景
- 判斷兩個文件是不是同一個 (硬鏈接判斷)
ln file1.txt file2.txt # 創建硬鏈接
ls -i file1.txt file2.txt輸出:
1234567 file1.txt
1234567 file2.txt
- 刪除“奇怪名字”的文件
比如你有一個亂碼文件,rm 都刪不了(因為文件名輸入不出來):
$ ls -i
1237890 ?????# 刪除
find . -inum 1237890 -exec rm -i {} \;
例子
1.5 ls -l 顯示文件的詳細屬性信息
$ ls -l
-rw-r--r-- 1 fanzhen users 1024 Jul 24 10:00 notes.txt
drwxr-xr-x 2 fanzhen users 4096 Jul 23 08:30 documents/
字段 | 說明 |
---|---|
-rw-r--r-- | 權限字符串(文件類型 + 權限) |
1 | 硬鏈接數量(對目錄來說是子目錄+1) |
fanzhen | 文件擁有者(用戶名) |
users | 所屬用戶組 |
1024 | 文件大小(以字節為單位) |
Jul 24 10:00 | 最后修改時間 |
notes.txt | 文件名 |
drwxr-xr-x | 這是一個目錄(以 d 開頭),權限為 rwx 給 owner,r-x 給 group 和其他人 |
1.6 ls -R 遞歸顯示所有子文件
1.7 ls -S 按照文件大小(Size)排序列出當前目錄下的文件,默認從大到小排列
1.8 ls -t 最后修改時間排序,最后修改的排到最前面
1.9 ls -lh --time-style=long-iso
2. cp命令
cp命令來源自英文單次copy的縮寫,中文譯為“復制”,其功能是復制文件或者目錄。
基本語法:
cp [選項] 源文件 目標文件
cp [選項] 源文件... 目標目錄/
常用參數
參數 | 含義 |
---|---|
-a | 歸檔模式,等價于 -dR --preserve=all ,即遞歸復制目錄,保持鏈接、文件屬性、時間戳、權限等元信息。適合備份。 |
-b | 備份模式,如果目標文件存在,則先備份一份(通常在后面加 ~ 作為擴展名)。 |
-d | 復制符號鏈接本身,而不是其指向的目標。 |
-f | 強制復制,如果目標文件無法打開則嘗試先刪除后復制(不提示)。 |
-i | 交互模式,覆蓋文件前詢問確認(如:overwrite 'file'? )。 |
-l | 不復制,創建硬鏈接(link)到目標,而非復制數據。 |
-p | 保留原文件的屬性(如時間、權限、所有者等),常用于保留元數據。 |
-r | 遞歸復制目錄,包括目錄下的所有子目錄和文件(-R 是更通用寫法)。 |
-s | 不復制,創建符號鏈接(軟鏈接) 到目標。 |
-v | 顯示詳細信息,輸出復制的文件路徑,適合調試或查看進度。 |
- cp
cp file.txt /tmp/
將file.txt文件復制到/tmp/目錄下 - 復制并顯示過程 cp -v
[fanzhen@hby-10-208-63-198 ~]$ cp -v 示例數據.txt a
'示例數據.txt' -> 'a/示例數據.txt'
- 提示確認再覆蓋 cp -i
[fanzhen@hby-10-208-63-198 ~]$ cp -v -i 示例數據.txt a
cp: overwrite 'a/示例數據.txt'? y
'示例數據.txt' -> 'a/示例數據.txt'
- 復制整個目錄 cp -r
注意是現有的a目錄 然后復制成為b目錄
[fanzhen@hby-10-208-63-198 ~]$ cp -r -i -v a b
'a' -> 'b'
'a/示例數據.txt' -> 'b/示例數據.txt'
- 完整備份目錄(包括權限、時間等) ls -a
[fanzhen@hby-10-208-63-198 ~]$ cp -r -i -v a b
'a' -> 'b'
'a/示例數據.txt' -> 'b/示例數據.txt'
[fanzhen@hby-10-208-63-198 ~]$ ls -lh
total 783M
drwxr-xr-x 2 fanzhen fanzhen 30 Jul 24 21:47 a
drwxr-xr-x 2 fanzhen fanzhen 30 Jul 24 21:50 b
drwxrwx--- 3 fanzhen znxt-usergroup 20 Mar 7 15:57 data00
- 備份模式,如果目標文件存在,則先備份一份
cp -b
$ echo "old" > a.txt
$ echo "new" > b.txt
$ cp -b b.txt a.txt原來的 a.txt 會被覆蓋
同時自動生成一個 a.txt~,里面是舊的內容("old")$ cat a.txt
new
$ cat a.txt~
old
- cp -f 是 cp 命令中的 “強制覆蓋” 選項,表示 不提示、直接覆蓋目標文件,即使目標文件是只讀的,也會強制替換。
$ echo "old data" > target.txt
$ chmod 444 target.txt # 設置只讀
$ echo "new data" > source.txt$ cp -f source.txt target.txt$ cat target.txt
new data
- cp -a 等價于組合使用
-dR --preserve=all
,具體作用包括:
功能 | 說明 |
---|---|
遞歸復制目錄 | 自動復制整個目錄及其子目錄、文件(相當于 -R ) |
保留符號鏈接 | 不跟隨符號鏈接(相當于 -d ),復制符號鏈接本身 |
保留文件屬性 | 包括:權限、時間戳、屬主、屬組、上下文等(相當于 --preserve=all ) |
保留文件節點 | 如果是設備文件、FIFO、socket 文件,也會原樣復制 |
盡量保持原始結構和元信息 | 適合做備份、打包等操作 |
3. grep強大的文本搜索工具
常用到的參數
-i
忽略大小寫-n
顯示所有匹配的行及其行號-C 10
顯示配置行上下各10行-E
支持正則-r
遞歸查詢-w
精確匹配詞
使用舉例
[fanzhen@hby-10-208-63-198 logs]$ grep -i -n -C 2 '獲取模型列表' log.out
4. sed命令 批量編輯文本文件
附錄
- 50個最常用的Unix/Linux命令 http://doc.vrd.net.cn/linux/linux-cmd.html