Linux中基本目錄操作命令詳解
簡介
在Java開發(fā)和運(yùn)維中,我們經(jīng)常需要與Linux文件系統(tǒng)進(jìn)行交互。掌握基本的目錄操作命令可以幫助我們高效地管理項(xiàng)目文件、查看目錄結(jié)構(gòu)、部署應(yīng)用程序等。本文將介紹Java程序員必須掌握的Linux目錄操作命令,分為以下幾個部分:
- 基礎(chǔ)目錄操作命令(ls, cd, pwd)
- 目錄創(chuàng)建與刪除命令(mkdir, rmdir, rm)
- 文件與目錄操作命令(cp, mv)
- 高級目錄操作命令(tree, find)
- Java開發(fā)中的實(shí)用目錄操作技巧
一、基礎(chǔ)目錄操作命令
1.1 ls 命令:查看目錄內(nèi)容
ls命令用于列出當(dāng)前或指定目錄下的文件和子目錄。
語法:
ls \[選項(xiàng)] \[路徑]
常用選項(xiàng):
-l:長格式顯示文件詳情-a:顯示隱藏文件(以.開頭的文件)-h:人性化顯示文件大?。ㄗ詣愚D(zhuǎn)換單位)-R:遞歸顯示子目錄內(nèi)容-t:按修改時間排序(最新文件排在前面)
實(shí)例代碼:
ls -l # 長格式顯示當(dāng)前目錄內(nèi)容 ls -a # 顯示當(dāng)前目錄下的所有文件,包括隱藏文件 ls -lh # 長格式顯示并以易讀方式顯示文件大小 ls -R /etc # 遞歸顯示/etc目錄下的所有內(nèi)容
注釋:
- 長格式顯示的信息包括文件類型與權(quán)限、硬鏈接數(shù)、所有者、所屬組、文件大小、修改時間和文件名
- 文件類型以第一個字符表示:
-表示普通文件,d表示目錄,l表示符號鏈接 - 使用
-h選項(xiàng)可以將文件大小以 KB、MB、GB 等單位顯示,更直觀 -R選項(xiàng)適合查看整個目錄結(jié)構(gòu)
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目開發(fā)中,我們經(jīng)常需要查看項(xiàng)目目錄結(jié)構(gòu),確認(rèn)文件是否存在或正確生成。例如,在 Maven 項(xiàng)目中,可以使用ls -l target命令查看編譯生成的 class 文件和 jar 包
1.2 cd 命令:切換工作目錄
cd(Change Directory)命令用于在終端中切換當(dāng)前工作目錄。
語法:
cd \[選項(xiàng)] \[目標(biāo)目錄]
常用選項(xiàng):
-L:如果目標(biāo)目錄是符號鏈接,切換到符號鏈接的目錄(默認(rèn)行為)-P:如果目標(biāo)目錄是符號鏈接,切換到它指向的物理位置目錄
實(shí)例代碼:
cd \~ # 切換到用戶主目錄 cd .. # 切換到上級目錄 cd /etc/yum.repos.d # 切換到絕對路徑目錄 cd - # 返回上一次訪問的目錄
注釋:
~表示用戶主目錄,cd或cd ~可快速回到用戶主目錄.表示當(dāng)前目錄,cd .沒有變化;..表示父目錄cd -是快速在兩個目錄間切換的高效方式- 使用 Tab 鍵可以自動補(bǔ)全目錄名,避免拼寫錯誤
Java 開發(fā)應(yīng)用場景:
在 Java 開發(fā)中,我們經(jīng)常需要在不同項(xiàng)目目錄之間切換。例如,使用cd /home/projects/spring-boot-demo切換到 Spring Boot 項(xiàng)目目錄,然后使用cd -回到上一個工作目錄
1.3 pwd 命令:顯示當(dāng)前工作目錄
pwd(Print Working Directory)命令用于顯示當(dāng)前工作目錄的完整路徑。
語法:
pwd \[選項(xiàng)]
常用選項(xiàng):
-P:顯示當(dāng)前工作目錄的物理位置,而非符號鏈接路徑
實(shí)例代碼:
pwd # 顯示當(dāng)前工作目錄的完整路徑 pwd -P # 顯示當(dāng)前工作目錄的物理路徑(不包含符號鏈接)
注釋:
- 默認(rèn)情況下,
pwd顯示的是邏輯路徑,可能包含符號鏈接 - 使用
-P選項(xiàng)可以獲取物理路徑,避免符號鏈接的干擾 - 在腳本中,
pwd命令可用于確定腳本的當(dāng)前工作目錄
Java 開發(fā)應(yīng)用場景:
在編寫 Java 項(xiàng)目的部署腳本時,使用pwd命令可以動態(tài)獲取當(dāng)前腳本所在的目錄,確保文件路徑的準(zhǔn)確性。例如:
CURRENT\_DIR=\$(pwd) echo "當(dāng)前腳本所在目錄:\$CURRENT\_DIR"
二、目錄創(chuàng)建與刪除命令
2.1 mkdir 命令:創(chuàng)建目錄
mkdir(Make Directory)命令用于創(chuàng)建新目錄。
語法:
mkdir \[選項(xiàng)] 目錄名...
常用選項(xiàng):
-p:遞歸創(chuàng)建多級目錄-m:設(shè)置目錄權(quán)限模式(類似chmod)-v:顯示詳細(xì)的創(chuàng)建過程信息
實(shí)例代碼:
mkdir testdir # 創(chuàng)建單級目錄testdir mkdir -p project/src/main # 遞歸創(chuàng)建多級目錄project/src/main mkdir -m 755 logs # 創(chuàng)建權(quán)限為rwxr-xr-x的logs目錄
注釋:
-p選項(xiàng)非常實(shí)用,可一次性創(chuàng)建多級目錄,避免因父目錄不存在而報錯- 默認(rèn)權(quán)限為 rwxr-xr-x,可通過
-m選項(xiàng)自定義權(quán)限 - 權(quán)限模式中,r 表示讀,w 表示寫,x 表示執(zhí)行
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目開發(fā)中,我們經(jīng)常需要創(chuàng)建特定結(jié)構(gòu)的目錄。例如,使用mkdir -p project/src/main/java/com/demo創(chuàng)建符合 Maven 標(biāo)準(zhǔn)的項(xiàng)目目錄結(jié)構(gòu)
2.2 rmdir 命令:刪除空目錄
rmdir(Remove Directory)命令用于刪除空目錄。
語法:
rmdir \[選項(xiàng)] 目錄名...
常用選項(xiàng):
-p:遞歸刪除目錄及其空的父目錄--ignore-fail-on-non-empty:忽略因目錄非空導(dǎo)致的錯誤-v:顯示詳細(xì)的刪除過程信息
實(shí)例代碼:
rmdir testdir # 刪除空目錄testdir rmdir -p project/src/main/java/com/example # 遞歸刪除多級空目錄
注釋:
rmdir只能刪除空目錄,非空目錄無法刪除- 若要刪除非空目錄,需使用
rm -r命令 -p選項(xiàng)會遞歸刪除目錄,如果父目錄在刪除子目錄后變?yōu)榭漳夸?,也會一并被刪除
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目清理時,使用rmdir命令可以刪除不需要的空目錄。例如,刪除測試生成的空目錄:
rmdir build/test-reports
2.3 rm 命令:刪除文件或目錄
rm(Remove)命令用于刪除文件或目錄。
語法:
rm \[選項(xiàng)]... 文件或目錄...
常用選項(xiàng):
-f:強(qiáng)制刪除,忽略不存在的文件和警告,不提示確認(rèn)-i:交互式刪除,刪除前提示確認(rèn)-r或-R:遞歸刪除目錄及其內(nèi)容-d:刪除空目錄(類似rmdir)-v:顯示詳細(xì)操作信息
實(shí)例代碼:
rm file.txt # 刪除文件file.txt rm -r project # 遞歸刪除目錄project及其內(nèi)容 rm -rf old\_files # 強(qiáng)制遞歸刪除目錄old\_files,不提示確認(rèn)
注釋:
-r選項(xiàng)用于遞歸刪除目錄,是刪除非空目錄的必要選項(xiàng)-f選項(xiàng)強(qiáng)制刪除,不會提示確認(rèn),使用時需謹(jǐn)慎- 組合使用
-rf時要特別小心,因?yàn)樗鼤f歸強(qiáng)制刪除,沒有恢復(fù)機(jī)會
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目構(gòu)建過程中,經(jīng)常需要刪除舊的編譯結(jié)果或臨時文件。例如,使用rm -rf target命令刪除 Maven 項(xiàng)目的 target 目錄
三、文件與目錄操作命令
3.1 cp 命令:復(fù)制文件或目錄
cp(Copy)命令用于復(fù)制文件或目錄。
語法:
cp \[選項(xiàng)]... 源文件 目標(biāo)文件
cp \[選項(xiàng)]... 源文件... 目標(biāo)目錄
常用選項(xiàng):
-a:歸檔模式,相當(dāng)于-dR --preserve=all-i:覆蓋前提示確認(rèn)-n:不覆蓋已存在文件-r:遞歸復(fù)制目錄-u:只復(fù)制源文件中更新時間較新的文件-v:顯示復(fù)制過程-p:保留原始文件的屬性(權(quán)限、時間戳等)
實(shí)例代碼:
cp file.txt backup.txt # 復(fù)制文件file.txt為backup.txt cp -r project project\_backup # 遞歸復(fù)制目錄project為project\_backup cp -v \*.java src/main/java # 復(fù)制所有.java文件到src/main/java目錄,并顯示過程
注釋:
- 復(fù)制目錄時必須使用
-r選項(xiàng),否則會提示 "omitting directory" -v選項(xiàng)顯示復(fù)制過程,讓操作更透明-p選項(xiàng)保留文件屬性,在備份配置文件時特別有用
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目開發(fā)中,經(jīng)常需要復(fù)制配置文件或模板文件。例如,使用cp application.properties application-dev.properties復(fù)制開發(fā)環(huán)境配置文件
3.2 mv 命令:移動或重命名文件 / 目錄
mv(Move)命令用于移動文件或目錄,也可用于重命名。
語法:
mv \[選項(xiàng)]... 源文件 目標(biāo)文件
mv \[選項(xiàng)]... 源文件... 目標(biāo)目錄
常用選項(xiàng):
-i:覆蓋前提示確認(rèn)-n:不覆蓋已存在文件-v:顯示詳細(xì)操作信息-u:只移動源文件中更新時間較新的文件-f:強(qiáng)制覆蓋已存在文件
實(shí)例代碼:
mv oldname.txt newname.txt # 重命名文件 mv file.txt documents/ # 移動文件file.txt到documents目錄 mv -v project/ backup/ # 移動目錄project到backup目錄,并顯示過程
注釋:
mv命令既可以移動文件 / 目錄,也可以重命名文件 / 目錄- 移動文件時,如果目標(biāo)路徑是目錄,源文件將被移動到該目錄下
- 重命名文件時,目標(biāo)路徑應(yīng)為新的文件名,而非目錄
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目重構(gòu)時,經(jīng)常需要重命名文件或移動目錄。例如,使用mv com/example/oldpackage com/example/newpackage重命名包目錄
四、高級目錄操作命令
4.1 tree 命令:以樹形結(jié)構(gòu)顯示目錄內(nèi)容
tree命令用于以樹形結(jié)構(gòu)顯示目錄下的內(nèi)容,直觀展示目錄結(jié)構(gòu)。
語法:
tree \[選項(xiàng)] \[目錄]
常用選項(xiàng):
-a:顯示所有文件(包括隱藏文件)-d:只顯示目錄-l:顯示鏈接文件的原始文件-f:顯示完整目錄路徑-i:不以階梯形式顯示文件或目錄名稱-q:將控制字符以?字符代替-N:直接顯示文件或目錄的名稱-p:顯示每個文件的權(quán)限信息
實(shí)例代碼:
tree # 以樹形結(jié)構(gòu)顯示當(dāng)前目錄內(nèi)容 tree -d # 只顯示目錄結(jié)構(gòu) tree -L 2 # 顯示目錄下兩層內(nèi)容 tree -f # 顯示完整路徑的樹形結(jié)構(gòu)
注釋:
- 默認(rèn)情況下,
tree命令需要單獨(dú)安裝,不是系統(tǒng)預(yù)裝命令 - 使用
-d選項(xiàng)可以只顯示目錄,隱藏文件 -L選項(xiàng)指定顯示的層級深度,避免內(nèi)容過多-f選項(xiàng)顯示完整路徑,便于識別文件位置
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目開發(fā)中,使用tree命令可以快速查看項(xiàng)目目錄結(jié)構(gòu),確認(rèn)文件是否正確放置。例如,檢查 Maven 項(xiàng)目結(jié)構(gòu)是否符合標(biāo)準(zhǔn):
tree -d src/main
4.2 find 命令:查找文件或目錄
find命令用于在文件系統(tǒng)中查找符合條件的文件或目錄。
語法:
find \[路徑] \[選項(xiàng)] \[條件] \[操作]
常用選項(xiàng):
-name:按文件名查找-type:按文件類型查找(f 表示普通文件,d 表示目錄)-size:按文件大小查找-mtime:按修改時間查找-perm:按權(quán)限查找-exec:對找到的文件執(zhí)行指定命令
實(shí)例代碼:
find . -name "\*.java" # 查找當(dāng)前目錄下所有.java文件 find /opt/java -type d -name "maven\*" # 查找/opt/java目錄下所有名稱以maven開頭的目錄 find . -size +100M # 查找當(dāng)前目錄下大于100MB的文件 find . -mtime -7 # 查找最近7天內(nèi)修改過的文件
注釋:
.表示當(dāng)前目錄,是find命令最常用的起始路徑- 使用
-name選項(xiàng)時,支持通配符(如*.java表示所有以.java 結(jié)尾的文件) -type選項(xiàng)中,f表示普通文件,d表示目錄,l表示符號鏈接-exec選項(xiàng)可以對找到的文件執(zhí)行命令,格式為-exec command {} \;
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目維護(hù)中,經(jīng)常需要查找特定類型的文件。例如,查找項(xiàng)目中所有未提交的測試文件:
find . -name "Test\*.java" -not -path "./.git/\*"
五、Java 開發(fā)中的實(shí)用目錄操作技巧
5.1 項(xiàng)目目錄結(jié)構(gòu)管理
在 Java 開發(fā)中,良好的目錄結(jié)構(gòu)管理至關(guān)重要。以下是一些實(shí)用技巧:
創(chuàng)建標(biāo)準(zhǔn) Maven 項(xiàng)目結(jié)構(gòu):
mkdir -p project/src/{main,test}/{java,resources}
清理項(xiàng)目臨時文件:
rm -rf target # 刪除Maven項(xiàng)目的target目錄 find . -name "\*.class" -delete # 刪除所有.class文件
5.2 日志文件管理
在 Java 應(yīng)用程序的運(yùn)維中,日志文件管理是重要工作:
查找最近修改的日志文件:
ls -lt /var/log | head -n 5 # 顯示最近修改的5個日志文件
按大小排序日志文件:
du -sh /var/log/\* | sort -rh | head -n 10 # 顯示最大的10個日志文件
清理舊日志文件:
find /var/log -type f -name "\*.log" -mtime +30 -delete # 刪除30天以上的日志文件
5.3 項(xiàng)目部署與發(fā)布
在 Java 項(xiàng)目部署過程中,以下命令非常實(shí)用:
打包項(xiàng)目目錄:
tar -czvf project.tar.gz project # 打包項(xiàng)目目錄為project.tar.gz
解壓到指定目錄:
tar -xzvf project.tar.gz -C /opt/deploy # 解壓到/opt/deploy目錄
創(chuàng)建發(fā)布目錄結(jié)構(gòu):
mkdir -p /opt/apps/myapp/{current,previous,logs}
六、總結(jié)與最佳實(shí)踐
6.1 命令速查表
| 命令 | 作用 | 常用選項(xiàng) |
|---|---|---|
| ls | 查看目錄內(nèi)容 | -l, -a, -h, -R |
| cd | 切換目錄 | -, ~, .. |
| pwd | 顯示當(dāng)前目錄 | -P |
| mkdir | 創(chuàng)建目錄 | -p, -m |
| rmdir | 刪除空目錄 | -p |
| rm | 刪除文件或目錄 | -r, -f |
| cp | 復(fù)制文件或目錄 | -r, -p, -v |
| mv | 移動或重命名 | -i, -v |
| tree | 樹形顯示目錄結(jié)構(gòu) | -d, -L, -f |
| find | 查找文件或目錄 | -name, -type, -size |
6.2 最佳實(shí)踐建議
1.安全刪除:使用rm命令時,特別是rm -rf,一定要確認(rèn)目標(biāo)路徑正確,避免誤刪系統(tǒng)文件。
2.路徑管理:
- 盡量使用絕對路徑,避免路徑混亂
- 使用
cd -在最近兩個目錄間快速切換 - 善用 Tab 鍵自動補(bǔ)全路徑,減少拼寫錯誤
3.命令組合:
- 使用管道符
|組合命令,例如ls -l | grep .log - 結(jié)合
find和xargs執(zhí)行批量操作
4.腳本編寫:
- 在腳本中使用
pwd -P獲取物理路徑,避免符號鏈接干擾 - 使用
mkdir -p創(chuàng)建多級目錄,確保目錄存在 - 使用
rm -rf前先檢查目錄是否存在
5.權(quán)限管理:
- 使用
chmod命令設(shè)置合適的文件和目錄權(quán)限 - 避免使用
chmod 777,應(yīng)根據(jù)需要設(shè)置具體權(quán)限
七、附錄:常見錯誤及解決方法
7.1 權(quán)限相關(guān)錯誤
錯誤信息:
rm: cannot remove 'file.txt': Permission denied
原因:當(dāng)前用戶沒有刪除該文件的權(quán)限。
解決方法:
- 使用
ls -l查看文件權(quán)限 - 使用
sudo rm file.txt以管理員權(quán)限刪除 - 或使用
chmod修改文件權(quán)限后再刪除
7.2 目錄操作錯誤
錯誤信息:
cp: omitting directory 'dir'
原因:嘗試復(fù)制目錄時未使用-r選項(xiàng)。
解決方法:
使用cp -r dir dir_copy遞歸復(fù)制目錄。
7.3 文件查找問題
錯誤信息:
find: paths must precede expression
原因:find命令的參數(shù)順序錯誤。
解決方法:
確保路徑參數(shù)在條件參數(shù)之前,例如find /path -name "*.txt"。
7.4 符號鏈接問題
錯誤信息:
pwd: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
原因:當(dāng)前目錄是符號鏈接,且基礎(chǔ)目錄不可訪問。
解決方法:
使用pwd -P獲取物理路徑,或確保符號鏈接指向的目錄可訪問。
到此這篇關(guān)于Linux中基本目錄操作命令詳解的文章就介紹到這了,更多相關(guān)Linux目錄操作命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于SSH 遠(yuǎn)程執(zhí)行命令你要知道的二三事
SSH 是 Linux 下進(jìn)行遠(yuǎn)程連接的基本工具,但是如果僅僅用它來登錄那可是太浪費(fèi)啦!SSH 命令可是完成遠(yuǎn)程操作的神器啊,下面這篇文章主要給大家介紹了關(guān)于SSH 遠(yuǎn)程執(zhí)行命令的一些相關(guān)資料,需要的朋友可以參考下。2017-07-07
Shell腳本實(shí)現(xiàn)服務(wù)器多臺免密登錄操作
本文介紹了auto_ssh_batch.sh腳本,用于在多臺RHEL/CentOS7主機(jī)之間快速配置SSH免密登錄,并支持遠(yuǎn)程傳輸腳本/文件及執(zhí)行命令,腳本通過pass文件提供統(tǒng)一認(rèn)證憑據(jù),nodes文件定義目標(biāo)主機(jī)列表,實(shí)現(xiàn)批量自動化操作,感興趣的朋友一起看看吧2025-03-03

