檔案操作
管理檔案與目錄的基本操作
basename
從路徑中提取文件名
basename /path/to/file.txt
# 輸出: file.txtbat
現代化 cat 替代品,支援語法高亮、行號與 git 整合
# 檢視文件(自動語法高亮)
bat config.yaml
# 顯示行號與 git 變更
bat --style=numbers,changes file.py
# 只顯示純文字(無裝飾)
bat --plain file.txt
# 比較兩個文件
bat --diff file1.txt file2.txt
# 顯示不可見字符
bat --show-all script.shcd
切換目錄,支持的目錄符號:
.: 當前目錄..: 父目錄~: home 目錄-: 上一次的目錄
cd ..
cd ~
cd -cp
複製文件和目錄
# 複製目錄
cp -r my_dir /tmp/my_dir1
# 複製文件
cp new_file.txt copy_file.txt
cp [file ...] [destination]dirname
顯示路徑中的目錄部分
dirname $0eza
現代化 ls/tree 替代品,支援彩色輸出、圖標與 git 狀態
# 基本列表(彩色輸出)
eza
# 長格式含圖標
eza -l --icons
# 顯示 git 狀態
eza -l --git
# 樹狀顯示
eza --tree --level=2
# 只顯示目錄
eza -D
# 按大小排序
eza -l --sort=size
# 完整資訊(含 git、時間)
eza -la --git --icons --time-style=long-isofd
現代化 find 替代品,語法更簡潔、速度更快
# 搜尋文件名
fd pattern
# 搜尋特定副檔名
fd -e py
# 搜尋目錄
fd -t d dirname
# 搜尋隱藏文件
fd -H pattern
# 指定搜尋深度
fd -d 2 pattern
# 執行命令(類似 find -exec)
fd -e log -x rm {}
# 搜尋並排除目錄
fd pattern -E node_modulesfile
判斷文件類型
file test.jpgfind
搜尋文件
# 基本搜尋
find / -name "filename"
find / -type d -name "<directory-name>"
# 使用正則表達式
find . -name "*.so*"
# 搜尋並執行命令
find . -type f -name "file1.go" -exec dirname {} \;ln
創建文件連結
# 創建軟連結
ln -s [source] [destination]
ln -s /usr/local/lib/libz.so.1 /usr/lib64/libz.so.1locate
快速查找文件
locate libfreetype.so.6ls
列出目錄內容
# 檢查 OS 版本
ls /etc/*release*
# 以人性化方式列出
ls -lh
# 列出所有文件(包含隱藏)
ls -al
# 列出 inode 信息
ls -lilsof
列出打開的文件
lsof -nmkdir
創建目錄
# 創建單個目錄
mkdir <folder_name>
# 創建多層目錄
mkdir -p <folder_name>/<subfolder>/<subfolder>mv
移動/重命名文件
# 重命名文件
mv new_file.txt sample_file.txt
# 移動文件
mv [file ...] [destination]
# 提示覆蓋
mv -i file1 file2ncdu
互動式磁碟使用分析器,快速找出佔用空間的大檔案
# 分析當前目錄
ncdu
# 分析指定目錄
ncdu /var/log
# 排除特定目錄
ncdu --exclude .git
# 匯出結果
ncdu -o output.json /home
# 讀取匯出的結果
ncdu -f output.json
# 唯讀模式(禁止刪除)
ncdu -r /互動式操作:
↑/↓: 導航Enter: 進入目錄d: 刪除選中項n: 按名稱排序s: 按大小排序q: 退出
pwd
顯示當前工作目錄
pwdrm
刪除文件或目錄
# 基本語法
rm [OPTION]... [FILE]...
# 遞歸刪除目錄
rm -r [DIRECTORY NAME]
# 刪除前提示
rm -rirmdir
刪除空目錄
rmdir [OPTION]... DIRECTORY...scp
安全複製
# 複製本地文件到遠程
scp -i test.pem -v "C:\Users\User\Downloads\api-server.jar" ec2-user@52.74.112.210:/tmp
# 從遠程複製文件到本地
scp -i test.pem ec2-user@[ip]:/home/java/api/server.log [download_destination]
# 複製到 EC2
scp -i [.pem_file_path] -v [Your_jar_path] ec2-user@[ip]:/tmptouch
創建空文件或更新時間戳
# 創建新文件
touch new_file.txttree
顯示目錄結構
tree
tree -L 2 # 限制深度