長期更新,空置、缺漏的部分會逐漸補上。未指明時,均爲GNU版本。
文件命令
基礎操作
ls
默認顯示非隱藏文件、以文件名進行排序、文件名有顏色(藍色文件夾、白色一般文件、綠色可執行文件)。
Cheatsheet:
ls -al ~ # 顯示主文件夾下的所有文件(夾);並顯示它們的屬性與權限。
ls -alF --color=never ~ # 同上,並不顯示顏色,在文件名末顯示該文件名代表的類型。/表示文件夾,*表示可執行文件
ls -al --full-time ~ # 同1,並顯示長時間
ls -si ~ # 顯示主文件夾下的所有文件(夾),以及其所在的i-node號碼;並排序文件
cp
-i
:若目標文件已經存在,覆蓋時會詢問。-p
:複製屬性。-d
:若文件爲link file,複製link file的屬性而非源文件本身。-r
:遞歸複製。-a
:等價於-pdr
。-s
:複製爲symbolic link。-l
:複製爲hard link。
Cheatsheet:
cp -r /home/zuiho/ /tmp # 複製主文件夾下的所有內容到/tmp下面
cp -s /path/to/file /new/path/to/dir # 複製文件的symbolic link到新文件夾下。
rm
如果想要不可逆轉的刪除,使用shred。
-f
忽略不存在的文件,不會出現警告信息。-i
刪除前會詢問。-r
遞歸刪除。會刪除目錄。
Cheatsheet:
rm -i /path/to/an/important/file # 會詢問。
rm -r /path/to/a/dir # 不會詢問,刪除目錄。
rm ./-aspecialfile- # 刪除一個帶槓的文件。
mv
這個命令其實往往用來重命名。Linux內還有一個專門的批量重命名的命令,爲rename
。
-f
強制。-i
若存在,會詢問。-u
“update”,即源文件比目標文件更新時纔會覆蓋。
Cheatsheet:
mv originfile /path/to/dest
mv of1 of2 of3 /path/to/dest # 最後一個是文件夾,前面的是文件,則可以批量移動。
其他命令
basename
取得文件名dirname
取得目錄名
touch
最基礎的用法是用來創造一個空文件。
不過,它是用來修改文件時間的。
a
修改訪問時間。c
僅修改時間,若文件不存在不創建新文件。d
自定義修改的日期。 長命令形式爲--date=<DATE>
。m
修改mtime,即上一次被修改的時間。t
自定義修改的時間,格式爲[YYMMDDhhmm]。
Cheatsheet:
touch -d "2 days ago" .zshrc
touch -t "0805121428" .bashrc #修改時間爲一個悲傷的時刻。
file
查看文件
cat & tac & nl
more & less
head & tail
od
權限管理
umask
chattr/lsattr
查找
which/whereis/locate
find
磁盤管理
管道命令
xargs
綜合應用示例
顯示系統目前支持的文件系統
cat /proc/filesystems
刪除文件夾內所有無後綴名可執行文件並刪除之
find . -type f -perm /u+x -regex "\./[^/.]*" | xargs rm -f
(僞)圖形化克隆磁盤
(pv -n /dev/sda | dd of=/dev/sdb bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0
監控所有被進程ID:1551 所使用的文件
pv -d 1551
fork bomb
# DO NOT TRY IT IN THE PRODUCTION ENVIROUMENT!!!
:(){ :|:& };:
有趣的命令
牛力與否
apt moo # And you can try it in openSUSE!!!
zypper moo