Linux中基本目錄操作命令詳解
簡介
在Java開發(fā)和運(yùn)維中,我們經(jīng)常需要與Linux文件系統(tǒng)進(jìn)行交互。掌握基本的目錄操作命令可以幫助我們高效地管理項(xiàng)目文件、查看目錄結(jié)構(gòu)、部署應(yīng)用程序等。本文將介紹Java程序員必須掌握的Linux目錄操作命令,分為以下幾個(gè)部分:
- 基礎(chǔ)目錄操作命令(ls, cd, pwd)
- 目錄創(chuàng)建與刪除命令(mkdir, rmdir, rm)
- 文件與目錄操作命令(cp, mv)
- 高級(jí)目錄操作命令(tree, find)
- Java開發(fā)中的實(shí)用目錄操作技巧
一、基礎(chǔ)目錄操作命令
1.1 ls 命令:查看目錄內(nèi)容
ls
命令用于列出當(dāng)前或指定目錄下的文件和子目錄。
語法:
ls \[選項(xiàng)] \[路徑]
常用選項(xiàng):
-l
:長格式顯示文件詳情-a
:顯示隱藏文件(以.
開頭的文件)-h
:人性化顯示文件大?。ㄗ詣?dòng)轉(zhuǎn)換單位)-R
:遞歸顯示子目錄內(nèi)容-t
:按修改時(shí)間排序(最新文件排在前面)
實(shí)例代碼:
ls -l # 長格式顯示當(dāng)前目錄內(nèi)容 ls -a # 顯示當(dāng)前目錄下的所有文件,包括隱藏文件 ls -lh # 長格式顯示并以易讀方式顯示文件大小 ls -R /etc # 遞歸顯示/etc目錄下的所有內(nèi)容
注釋:
- 長格式顯示的信息包括文件類型與權(quán)限、硬鏈接數(shù)、所有者、所屬組、文件大小、修改時(shí)間和文件名
- 文件類型以第一個(gè)字符表示:
-
表示普通文件,d
表示目錄,l
表示符號(hào)鏈接 - 使用
-h
選項(xiàng)可以將文件大小以 KB、MB、GB 等單位顯示,更直觀 -R
選項(xiàng)適合查看整個(gè)目錄結(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)目錄是符號(hào)鏈接,切換到符號(hào)鏈接的目錄(默認(rèn)行為)-P
:如果目標(biāo)目錄是符號(hào)鏈接,切換到它指向的物理位置目錄
實(shí)例代碼:
cd \~ # 切換到用戶主目錄 cd .. # 切換到上級(jí)目錄 cd /etc/yum.repos.d # 切換到絕對路徑目錄 cd - # 返回上一次訪問的目錄
注釋:
~
表示用戶主目錄,cd
或cd ~
可快速回到用戶主目錄.
表示當(dāng)前目錄,cd .
沒有變化;..
表示父目錄cd -
是快速在兩個(gè)目錄間切換的高效方式- 使用 Tab 鍵可以自動(dòng)補(bǔ)全目錄名,避免拼寫錯(cuò)誤
Java 開發(fā)應(yīng)用場景:
在 Java 開發(fā)中,我們經(jīng)常需要在不同項(xiàng)目目錄之間切換。例如,使用cd /home/projects/spring-boot-demo
切換到 Spring Boot 項(xiàng)目目錄,然后使用cd -
回到上一個(gè)工作目錄
1.3 pwd 命令:顯示當(dāng)前工作目錄
pwd
(Print Working Directory)命令用于顯示當(dāng)前工作目錄的完整路徑。
語法:
pwd \[選項(xiàng)]
常用選項(xiàng):
-P
:顯示當(dāng)前工作目錄的物理位置,而非符號(hào)鏈接路徑
實(shí)例代碼:
pwd # 顯示當(dāng)前工作目錄的完整路徑 pwd -P # 顯示當(dāng)前工作目錄的物理路徑(不包含符號(hào)鏈接)
注釋:
- 默認(rèn)情況下,
pwd
顯示的是邏輯路徑,可能包含符號(hào)鏈接 - 使用
-P
選項(xiàng)可以獲取物理路徑,避免符號(hào)鏈接的干擾 - 在腳本中,
pwd
命令可用于確定腳本的當(dāng)前工作目錄
Java 開發(fā)應(yīng)用場景:
在編寫 Java 項(xiàng)目的部署腳本時(shí),使用pwd
命令可以動(dòng)態(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)建多級(jí)目錄-m
:設(shè)置目錄權(quán)限模式(類似chmod
)-v
:顯示詳細(xì)的創(chuàng)建過程信息
實(shí)例代碼:
mkdir testdir # 創(chuàng)建單級(jí)目錄testdir mkdir -p project/src/main # 遞歸創(chuàng)建多級(jí)目錄project/src/main mkdir -m 755 logs # 創(chuàng)建權(quán)限為rwxr-xr-x的logs目錄
注釋:
-p
選項(xiàng)非常實(shí)用,可一次性創(chuàng)建多級(jí)目錄,避免因父目錄不存在而報(bào)錯(cuò)- 默認(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)常需要?jiǎ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)致的錯(cuò)誤-v
:顯示詳細(xì)的刪除過程信息
實(shí)例代碼:
rmdir testdir # 刪除空目錄testdir rmdir -p project/src/main/java/com/example # 遞歸刪除多級(jí)空目錄
注釋:
rmdir
只能刪除空目錄,非空目錄無法刪除- 若要?jiǎng)h除非空目錄,需使用
rm -r
命令 -p
選項(xiàng)會(huì)遞歸刪除目錄,如果父目錄在刪除子目錄后變?yōu)榭漳夸洠矔?huì)一并被刪除
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目清理時(shí),使用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)制刪除,不會(huì)提示確認(rèn),使用時(shí)需謹(jǐn)慎- 組合使用
-rf
時(shí)要特別小心,因?yàn)樗鼤?huì)遞歸強(qiáng)制刪除,沒有恢復(fù)機(jī)會(huì)
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目構(gòu)建過程中,經(jīng)常需要?jiǎng)h除舊的編譯結(jié)果或臨時(shí)文件。例如,使用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ù)制源文件中更新時(shí)間較新的文件-v
:顯示復(fù)制過程-p
:保留原始文件的屬性(權(quán)限、時(shí)間戳等)
實(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ù)制目錄時(shí)必須使用
-r
選項(xiàng),否則會(huì)提示 "omitting directory" -v
選項(xiàng)顯示復(fù)制過程,讓操作更透明-p
選項(xiàng)保留文件屬性,在備份配置文件時(shí)特別有用
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目開發(fā)中,經(jīng)常需要復(fù)制配置文件或模板文件。例如,使用cp application.properties application-dev.properties
復(fù)制開發(fā)環(huán)境配置文件
3.2 mv 命令:移動(dòng)或重命名文件 / 目錄
mv
(Move)命令用于移動(dòng)文件或目錄,也可用于重命名。
語法:
mv \[選項(xiàng)]... 源文件 目標(biāo)文件
mv \[選項(xiàng)]... 源文件... 目標(biāo)目錄
常用選項(xiàng):
-i
:覆蓋前提示確認(rèn)-n
:不覆蓋已存在文件-v
:顯示詳細(xì)操作信息-u
:只移動(dòng)源文件中更新時(shí)間較新的文件-f
:強(qiáng)制覆蓋已存在文件
實(shí)例代碼:
mv oldname.txt newname.txt # 重命名文件 mv file.txt documents/ # 移動(dòng)文件file.txt到documents目錄 mv -v project/ backup/ # 移動(dòng)目錄project到backup目錄,并顯示過程
注釋:
mv
命令既可以移動(dòng)文件 / 目錄,也可以重命名文件 / 目錄- 移動(dòng)文件時(shí),如果目標(biāo)路徑是目錄,源文件將被移動(dòng)到該目錄下
- 重命名文件時(shí),目標(biāo)路徑應(yīng)為新的文件名,而非目錄
Java 開發(fā)應(yīng)用場景:
在 Java 項(xiàng)目重構(gòu)時(shí),經(jīng)常需要重命名文件或移動(dòng)目錄。例如,使用mv com/example/oldpackage com/example/newpackage
重命名包目錄
四、高級(jí)目錄操作命令
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
:顯示每個(gè)文件的權(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)指定顯示的層級(jí)深度,避免內(nèi)容過多-f
選項(xiàng)顯示完整路徑,便于識(shí)別文件位置
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
:按修改時(shí)間查找-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)時(shí),支持通配符(如*.java
表示所有以.java 結(jié)尾的文件) -type
選項(xiàng)中,f
表示普通文件,d
表示目錄,l
表示符號(hào)鏈接-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)目臨時(shí)文件:
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個(gè)日志文件
按大小排序日志文件:
du -sh /var/log/\* | sort -rh | head -n 10 # 顯示最大的10個(gè)日志文件
清理舊日志文件:
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 | 移動(dòng)或重命名 | -i, -v |
tree | 樹形顯示目錄結(jié)構(gòu) | -d, -L, -f |
find | 查找文件或目錄 | -name, -type, -size |
6.2 最佳實(shí)踐建議
1.安全刪除:使用rm
命令時(shí),特別是rm -rf
,一定要確認(rèn)目標(biāo)路徑正確,避免誤刪系統(tǒng)文件。
2.路徑管理:
- 盡量使用絕對路徑,避免路徑混亂
- 使用
cd -
在最近兩個(gè)目錄間快速切換 - 善用 Tab 鍵自動(dòng)補(bǔ)全路徑,減少拼寫錯(cuò)誤
3.命令組合:
- 使用管道符
|
組合命令,例如ls -l | grep .log
- 結(jié)合
find
和xargs
執(zhí)行批量操作
4.腳本編寫:
- 在腳本中使用
pwd -P
獲取物理路徑,避免符號(hào)鏈接干擾 - 使用
mkdir -p
創(chuàng)建多級(jí)目錄,確保目錄存在 - 使用
rm -rf
前先檢查目錄是否存在
5.權(quán)限管理:
- 使用
chmod
命令設(shè)置合適的文件和目錄權(quán)限 - 避免使用
chmod 777
,應(yīng)根據(jù)需要設(shè)置具體權(quán)限
七、附錄:常見錯(cuò)誤及解決方法
7.1 權(quán)限相關(guān)錯(cuò)誤
錯(cuò)誤信息:
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 目錄操作錯(cuò)誤
錯(cuò)誤信息:
cp: omitting directory 'dir'
原因:嘗試復(fù)制目錄時(shí)未使用-r
選項(xiàng)。
解決方法:
使用cp -r dir dir_copy
遞歸復(fù)制目錄。
7.3 文件查找問題
錯(cuò)誤信息:
find: paths must precede expression
原因:find
命令的參數(shù)順序錯(cuò)誤。
解決方法:
確保路徑參數(shù)在條件參數(shù)之前,例如find /path -name "*.txt"
。
7.4 符號(hào)鏈接問題
錯(cuò)誤信息:
pwd: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
原因:當(dāng)前目錄是符號(hào)鏈接,且基礎(chǔ)目錄不可訪問。
解決方法:
使用pwd -P
獲取物理路徑,或確保符號(hào)鏈接指向的目錄可訪問。
到此這篇關(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-07Shell腳本實(shí)現(xiàn)服務(wù)器多臺(tái)免密登錄操作
本文介紹了auto_ssh_batch.sh腳本,用于在多臺(tái)RHEL/CentOS7主機(jī)之間快速配置SSH免密登錄,并支持遠(yuǎn)程傳輸腳本/文件及執(zhí)行命令,腳本通過pass文件提供統(tǒng)一認(rèn)證憑據(jù),nodes文件定義目標(biāo)主機(jī)列表,實(shí)現(xiàn)批量自動(dòng)化操作,感興趣的朋友一起看看吧2025-03-03