Linux常用命令(二)
Linux文件管理
Linux的文件層次標(biāo)準(zhǔn)
Filesystem Hierarchy Standard(FHS)根據(jù)FHS的官方文件指出晰甚,該標(biāo)準(zhǔn)主要是為了用戶了解已安裝程序通常放置在哪個(gè)目錄下娇哆,同時(shí)希望獨(dú)立的開發(fā)商樱拴、系統(tǒng)開發(fā)者和用戶都遵循這個(gè)標(biāo)準(zhǔn)。
典型的目錄 | 可分享的 | 不可分享的 |
---|---|---|
不可改變的 |
/usr (軟件存放處) |
/etc (配置文件) |
不可改變的 |
/opt (第三方軟件) |
/boot (開機(jī)與內(nèi)核) |
可以改變的 |
/var/mail (郵件) |
/var/run (程序相關(guān)) |
可以改變的 |
/var/spool/news (新聞) |
/var/lock (程序相關(guān)) |
Linux 目錄樹如下所示:
├── bin -> usr/bin # bin是Binary的縮寫, 這個(gè)目錄存放著最經(jīng)常使用的命令。
├── boot # 這里存放的是啟動(dòng)Linux時(shí)使用的一些核心文件,包括一些連接文件以及鏡像文件。
├── dev # dev是Device(設(shè)備)的縮寫, 該目錄下存放的是Linux的外部設(shè)備屈扎,在Linux中訪問設(shè)備的方式和訪問文件的方式是相同的。
├── etc # 這個(gè)目錄用來存放所有的系統(tǒng)管理所需要的配置文件和子目錄撩匕。
├── home # 用戶的主目錄鹰晨,在Linux中,每個(gè)用戶都有一個(gè)自己的目錄止毕,一般該目錄名是以用戶的賬號(hào)命名的模蜡。
├── lib -> usr/lib # 這個(gè)目錄里存放著系統(tǒng)最基本的動(dòng)態(tài)連接共享庫,其作用類似于Windows里的DLL文件扁凛。幾乎所有的應(yīng)用程序都需要用到這些共享庫忍疾。
├── lib64 -> usr/lib64 #
├── lost+found # 這個(gè)目錄一般情況下是空的,當(dāng)系統(tǒng)非法關(guān)機(jī)后谨朝,這里就存放了一些文件卤妒。
├── media # linux系統(tǒng)會(huì)自動(dòng)識(shí)別一些設(shè)備,例如U盤叠必、光驅(qū)等等荚孵,當(dāng)識(shí)別后,linux會(huì)把識(shí)別的設(shè)備掛載到這個(gè)目錄下纬朝。
├── mnt # 系統(tǒng)提供該目錄是為了讓用戶臨時(shí)掛載別的文件系統(tǒng)的,我們可以將光驅(qū)掛載在/mnt/上骄呼,然后進(jìn)入該目錄就可以查看光驅(qū)里的內(nèi)容了共苛。
├── opt # 這是給主機(jī)額外安裝軟件所擺放的目錄。比如你安裝一個(gè)ORACLE數(shù)據(jù)庫則就可以放到這個(gè)目錄下蜓萄。默認(rèn)是空的隅茎。
├── proc # 這個(gè)目錄是一個(gè)虛擬的目錄,它是系統(tǒng)內(nèi)存的映射嫉沽,我們可以通過直接訪問這個(gè)目錄來獲取系統(tǒng)信息辟犀。
| # 這個(gè)目錄的內(nèi)容不在硬盤上而是在內(nèi)存里,我們也可以直接修改里面的某些文件绸硕,比如可以通過下面的命令來屏蔽主機(jī)的ping命令堂竟,
| # 使別人無法ping你的機(jī)器:
| # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
├── root # 該目錄為系統(tǒng)管理員魂毁,也稱作超級(jí)權(quán)限者的用戶主目錄。
├── run # 是一個(gè)臨時(shí)文件系統(tǒng)出嘹,存儲(chǔ)系統(tǒng)啟動(dòng)以來的信息席楚。
| # 當(dāng)系統(tǒng)重啟時(shí),這個(gè)目錄下的文件應(yīng)該被刪掉或清除税稼。如果你的系統(tǒng)上有 /var/run 目錄烦秩,應(yīng)該讓它指向 run。
├── sbin -> usr/sbin # s就是Super User的意思郎仆,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序只祠。
├── selinux # 這個(gè)目錄是Redhat/CentOS所特有的目錄,Selinux是一個(gè)安全機(jī)制扰肌,類似于windows的防火墻铆农。
| # 但是這套機(jī)制比較復(fù)雜,這個(gè)目錄就是存放selinux相關(guān)的文件的狡耻。
├── srv # 該目錄存放一些服務(wù)啟動(dòng)之后需要提取的數(shù)據(jù)墩剖。
├── sys # 這是linux2.6內(nèi)核的一個(gè)很大的變化。該目錄下安裝了2.6內(nèi)核中新出現(xiàn)的一個(gè)文件系統(tǒng) sysfs 夷狰。
├── tmp # 這個(gè)目錄是用來存放一些臨時(shí)文件的岭皂。
├── usr # 這是一個(gè)非常重要的目錄,用戶的很多應(yīng)用程序和文件都放在這個(gè)目錄下沼头,類似于windows下的program files目錄爷绘。
| ├── bin -> usr/bin # 系統(tǒng)用戶使用的應(yīng)用程序。
| ├── include # C/C++header Files
| ├── lib -> usr/lib # 應(yīng)用程序庫文件
| ├── lib64 -> usr/lib64 #
| ├── local # 一些自行安裝的應(yīng)用程序文件目錄
| ├── sbin -> usr/sbin # 超級(jí)用戶使用的比較高級(jí)的管理程序和系統(tǒng)守護(hù)程序进倍。
| ├── share # 一些共享文件
| ├── src # 內(nèi)核源代碼默認(rèn)的放置目錄土至。
| ├── tmp #
| └── var #
└── var # 這個(gè)目錄中存放著在不斷擴(kuò)充著的東西,我們習(xí)慣將那些經(jīng)常被修改的目錄放在這個(gè)目錄下猾昆。包括各種日志文件陶因。
| ├── cache # 程序執(zhí)行緩存(暫存)文件
| ├── lib # 應(yīng)用產(chǎn)生的數(shù)據(jù)文件放置目錄
| ├── local #
| ├── lock -> ../run/lock # 鎖定程序或設(shè)備使用
| ├── log # 放置系統(tǒng)日志記錄文件
| ├── run -> ../run # 執(zhí)行PID
| ├── spool # 存放數(shù)據(jù)序列,如mail等
| └── www # 預(yù)設(shè)網(wǎng)頁放置目錄
常用文件管理命令
目錄相關(guān)命令
場(chǎng)景 | 命令 | 描述 |
---|---|---|
切換目錄 | cd |
cd {目標(biāo)目錄} 切換至目標(biāo)目錄文件 |
顯示目錄 | pwd |
pwd 顯示當(dāng)前所在目錄 |
新建目錄 | mkdir |
mkdir {目標(biāo)目錄} 創(chuàng)建目標(biāo)目錄 |
刪除目錄 | rmdir |
rmdir {目標(biāo)目錄} 刪除目標(biāo)目錄 |
樹形目錄 | tree |
tree -L {目錄層次深度垂蜗,如:1} 顯示從當(dāng)前目錄直到指定目錄深度下的所有文件楷扬,1代表當(dāng)前目錄tree -d 僅顯示目錄tree -a 同時(shí)顯示隱藏文件tree -i -f 不使用縮進(jìn)線(-i ),而是使用完整路徑(-f )贴见,使用-N 不對(duì)空白以及特殊字符轉(zhuǎn)義tree -s -h 在每個(gè)節(jié)點(diǎn)后面顯示其大小(-s )烘苹,以方便閱讀的形式展示(-h 顯示1k 而不是1024 )tree -N 使用-N 不對(duì)空白以及特殊字符轉(zhuǎn)義tree -P {{*.txt}} 使用通配符(glob)來過濾文件tree -l {{*.txt}} 忽略匹配通配符的項(xiàng)目 |
# a 顯示隱藏文件
# f 顯示完整路徑
# s 顯示文件目錄大小
# h 顯示1k而不是1024
# L 顯示目錄層次深度為 2,1 表示當(dāng)前目錄
tree -afshL 2
## 顯示結(jié)果
└── [ 40] ./download
└── [186M] ./download/jdk-8u251-linux-x64.tar.gz
復(fù)制片部、移動(dòng)以及移動(dòng)(重命名)
場(chǎng)景 | 命令 | 描述 |
---|---|---|
創(chuàng)建文件 | touch |
touch 文件名稱 創(chuàng)建文件 |
復(fù)制 | cp |
cp {源文件地址} {目標(biāo)文件地址} 復(fù)制文件 |
刪除 | rm |
rm {文件名稱/文件路徑} 只能刪除任意位置文件rm -r {目錄名稱/目錄路徑} 遞歸刪除目錄以及其子目錄rm -rf {目錄名稱/目錄路徑} 強(qiáng)制遞歸刪除目錄以及其子目錄rm -i {目錄名稱/目錄路徑} 刪除前逐一詢問是否刪除確認(rèn)rm -v {目錄名稱/目錄路徑} 用冗長模式刪除文件镣衡,每刪除一個(gè)文件打印一條信息 |
移動(dòng) | mv |
mv {源文件/目錄} {目標(biāo)文件/目錄} |
軟連接命令
所謂軟連接,類似windows中的快捷方式。
語法 | 說明 | 描述 |
---|---|---|
ln {源文件或目錄} {目標(biāo)文件或目錄} |
創(chuàng)建硬連接 | |
ln -s {源文件或目錄} {目標(biāo)文件或目錄} |
創(chuàng)建軟連接 | |
ln –snf {新的源文件或目錄} {目標(biāo)文件或目錄} |
修改軟連接 |
文件查看命令
命令 | 說明 | 描述 |
---|---|---|
cat | 由第一行開始顯示內(nèi)容 |
cat {文件名稱} 標(biāo)準(zhǔn)輸出一個(gè)文件內(nèi)容cat {文件1名稱} {文件2名稱} > {目標(biāo)文件} 將多個(gè)文件(的內(nèi)容)連接成一個(gè)目標(biāo)文件cat {文件1名稱} {文件2名稱} >> {目標(biāo)文件} 將多個(gè)文件(的內(nèi)容)追加到一個(gè)目標(biāo)文件末尾cat -n {文件名稱} 給所有輸出行編號(hào) |
tac | 由最后一行開始顯示內(nèi)容 | 從名字上來看與cat 是完全相反的廊鸥,和cat輸出的比較望浩,完全是倒過來的。 |
nl | 顯示黍图,同時(shí)顯示行號(hào) |
-b 指定行號(hào)指定的方式曾雕,主要有兩種:-b a 表示不論是否為空行,也同樣列出行號(hào)(類似 cat -n)助被;-b t 如果有空行剖张,空的那一行不要列出行號(hào)(默認(rèn)值);-n 列出行號(hào)表示的方法揩环,主要有三種:-n ln 行號(hào)在螢?zāi)坏淖钭蠓斤@示搔弄;-n rn 行號(hào)在自己欄位的最右方顯示,且不加0丰滑;-n rz 行號(hào)在自己欄位的最右方顯示顾犹,且加0;-w 行號(hào)欄位的占用的位數(shù)褒墨。-p 在邏輯定界符處不重新開始計(jì)算炫刷。 |
more | 一頁一頁的顯示內(nèi)容 |
more {目標(biāo)文件} 打開文件。more -dc {目標(biāo)文件} 顯示文件內(nèi)容之前先清屏郁妈,并在屏幕下方顯示百分比more -c 10 {目標(biāo)文件} 顯示文件內(nèi)容浑玛,每10行顯示一次。<space> 空格鍵噩咪,進(jìn)行“下一頁”操作顾彰。/{查找內(nèi)容} 搜索字符串,按n 跳轉(zhuǎn)到下一個(gè)匹配項(xiàng)胃碾。q 退出 |
less | 類似more涨享,交互式讀取文件 |
less {文件名稱} 打開文件<space> 空格鍵,進(jìn)行“下一頁”操作仆百;b 向上翻一頁厕隧。/{查找內(nèi)容} 向前搜索字符串,按n 跳轉(zhuǎn)到前一個(gè)匹配項(xiàng)儒旬。?{查找內(nèi)容} 向后搜索字符串栏账,按n 跳轉(zhuǎn)到后一個(gè)匹配項(xiàng)。g(start) 到達(dá)文件開頭栈源;G(end) 到達(dá)文件末尾。q 退出竖般。F 跟隨當(dāng)前已打開的文件輸出甚垦。v 在編輯器中打開當(dāng)前文件。 |
head | 只看頭幾行 |
head -n {count of lines} {文件名稱} 輸出文件的開頭部分內(nèi)容,-n 指定輸出的行數(shù)艰亮。head -c {size of bytes} {文件名稱} 輸出文件開始的一些字節(jié)闭翩。head -n -{count of lines} {文件名稱} 輸出文件的最后幾行以外的所有內(nèi)容文件的最后幾個(gè)字節(jié)以外的所有內(nèi)容head -c -{size of bytes} {文件名稱} 輸出文件中除最后幾個(gè)字節(jié)外的所有內(nèi)容。 |
tail | 只看尾部幾行 |
tail -f {文件名稱} 保持查看文件內(nèi)容迄埃。tail -n {number} {文件名稱} 顯示文件最后number 行疗韵。tail -n +{number} {文件名稱} 從number 行開始顯示文件的全部內(nèi)容。tail -c {number} {文件名稱} 顯示文件最后的number 個(gè)字節(jié)侄非。tail -F {文件名稱} 持續(xù)顯示閱讀文件的內(nèi)容蕉汪,知道按住Ctrl+C ,即使文件在翻頁 |
重定向(>逞怨、>>以及>!)命令
命令 | 示例 | 說明 |
---|---|---|
> |
echo abc > test |
輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來的文件 |
>! |
echo abc >! test |
輸出重定向到一個(gè)文件或設(shè)備 強(qiáng)制覆蓋原來的文件 |
>> |
echo abc >> test |
輸出重定向到一個(gè)文件或設(shè)備 追加原來的文件 |
下面舉個(gè)兩個(gè)列子
################## 第一個(gè)例子 輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來的文件
# 輸出一個(gè)結(jié)果并重定向至test.log文件中
echo "你好者疤,世界" > test.log
# 列出當(dāng)前目錄信息
ls -al
總用量 190576
-rw-r--r--. 1 root root 0 4月 27 21:26 !
drwxr-xr-x. 3 root root 4096 4月 27 21:55 .
drwxr-xr-x. 3 root root 4096 4月 25 19:02 ..
drwxr-xr-x. 3 root root 4096 4月 27 21:03 jdk-8u251-linux-x64
-rw-r--r--. 1 root root 195132576 4月 21 13:21 jdk-8u251-linux-x64.tar.gz
-rw-r--r--. 1 root root 16 4月 27 21:55 test.log
# 打印文本信息
cat -n test.log
1 你好,世界
################## 第二個(gè)例子 輸出重定向到一個(gè)文件或設(shè)備 覆蓋原來的文件
# 輸出一個(gè)文本信息并追加至test.log中
echo "你好叠赦,帥哥驹马!" >> test.log
# 查看文本信息
cat -n test.log
1 你好,世界
2 你好除秀,帥哥糯累!
關(guān)于>!
強(qiáng)制覆蓋命令。本人在centos7以及centos8都未使用成功册踩!所以此處暫不聚該例子泳姐。下面是在centos8中使用>!
重定向命令
$ echo "帥哥" > test.log
$ ls -al
總用量 12
drwxr-xr-x. 2 ermao ermao 4096 4月 27 10:03 .
drwx------. 15 ermao ermao 4096 4月 27 09:53 ..
-rw-rw-r--. 1 ermao ermao 7 4月 27 10:03 test.log
$ cat -n test.log
1 帥哥
$ echo "世界" >! test.log
$ cat -n test.log
1 帥哥
$ echo "世界" >> test.log
$ cat -n test.log
1 帥哥
2 世界
查找文件命令
常用查找文件的命令有兩個(gè):
-
find
命令,主要用于查找文件以及目錄棍好。 -
whereis
命令仗岸,主要用于查找二進(jìn)制文件以及man手冊(cè)等,linux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫文件中借笙,whereis
則主要查找這個(gè)文件 -
which
命令扒怖,which
主要查找PATH
變量中的二進(jìn)制文件是否存在。簡(jiǎn)單理解就是從$PATH
中查詢命令是否存在业稼。
下面簡(jiǎn)單介紹上面三個(gè)命令盗痒。
Find 命令
find path -option [-print]
-
path
查找的路徑,如:/
低散、~
俯邓、/etc
等等 -
option
選項(xiàng) -
[-print]
參數(shù)
option
的選項(xiàng)有很多,下面介紹幾個(gè)常見的選項(xiàng)
選項(xiàng) | 選項(xiàng)說明 | 示例 |
---|---|---|
-name |
指定字符串作為尋找文件或目錄的范本樣式 可以使用通配符號(hào)熔号。如果沒有通配符號(hào)則是精確查找稽鞭。 |
find / -name 'test.log' |
-type |
查找指定類型的文件 |
find . -type f 將目前目錄其其下子目錄中所有一般文件列出 |
-atime -ctime -mtime
|
用戶最近一次訪問時(shí)間(-atime 天 ,-amin 分鐘 )引镊。文件數(shù)據(jù)元(例如權(quán)限等)最后一次 修改時(shí)間( -ctime 天 朦蕴,-cmin 分鐘 )篮条。文件最后一次修改時(shí)間( -mtime 天 ,-mmin 分鐘 )吩抓。 |
find -ctime -20 將目前目錄及其子目錄下所有最近 20 天內(nèi)更新過的文件列出 |
-exec |
-exec <執(zhí)行指令> 涉茧,假設(shè)find指令的回傳值為True,就執(zhí)行該指令疹娶; |
find .-type f -user root -exec chown tom {} \; {} 用于與-exec選項(xiàng)結(jié)合使用來匹配所有文件伴栓,然后會(huì)被替換為相應(yīng)的文件名。 |
示例
# 搜索等于10KB的文件
find . -type f -size 10k
# 搜索結(jié)果
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/com.jrockit.mc.rjmx.ui.zh_CN_5.5.2.174165.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/com.jrockit.mc.rjmx.ui.ja_5.5.2.174165.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20140827-1444.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/plugins/org.eclipse.e4.ui.workbench3_0.12.0.v20140227-2118.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.equinox.p2.rcp.feature_1.2.0.v20140523-0116/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.emf.ecore_2.10.1.v20140901-1043/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.emf.common_2.10.1.v20140901-1043/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.help_2.0.102.v20141007-2301/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.rcp_4.4.0.v20141007-2301/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.equinox.p2.core.feature_1.3.0.v20140523-0116/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.e4.rcp_1.3.100.v20141007-2033/feature.properties
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/platform/modules/locale/org-netbeans-modules-autoupdate-ui_zh_CN.jar
./download/jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/profiler/modules/org-netbeans-modules-profiler-utilities.jar
Find中-exec與其他命令結(jié)合使用
找當(dāng)前目錄下所有.txt文件并把他們的內(nèi)容拼接起來寫入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt
-
find
命令執(zhí)行-exec命令時(shí)雨饺,需要將{} \;
結(jié)合使用钳垮,{}
代表find
找到的匹配項(xiàng),\;
則代表結(jié)束符號(hào)沛膳。
查找.txt
結(jié)尾的文件扔枫,并將其輸出只test.log
中
# 查找`.txt`結(jié)尾的文件,并將其輸出只`test.log`中
find ./ -name "*.txt" -exec ls -al {} \;> test.log
# 查看是否存在test.log文件
ls -al
總用量 190576
drwxr-xr-x. 3 root root 4096 4月 28 18:06 .
drwxr-xr-x. 3 root root 4096 4月 27 23:06 ..
drwxr-xr-x. 3 root root 4096 4月 27 21:03 jdk-8u251-linux-x64
-rw-r--r--. 1 root root 195132576 4月 21 13:21 jdk-8u251-linux-x64.tar.gz
-rw-r--r--. 1 root root 1599 4月 28 18:06 test.log
## 查看輸出結(jié)果
cat -n test.log
1 -rw-r--r--. 1 10143 10143 117369 4月 28 17:37 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/THIRDPARTYLICENSEREADME-JAVAFX.txt
2 -r--r--r--. 1 10143 10143 169571 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/THIRDPARTYLICENSEREADME.txt
3 -rw-r--r--. 1 10143 10143 4226 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/lib/jvm.hprof.txt
4 -rw-r--r--. 1 10143 10143 1423 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/jre/lib/amd64/server/Xusage.txt
5 -rw-r--r--. 1 10143 10143 117365 3月 12 11:25 ./jdk-8u251-linux-x64/jdk1.8.0_251/THIRDPARTYLICENSEREADME-JAVAFX.txt
6 -r--r--r--. 1 10143 10143 169571 3月 12 14:33 ./jdk-8u251-linux-x64/jdk1.8.0_251/THIRDPARTYLICENSEREADME.txt
7 -rw-r--r--. 1 10143 10143 30275 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/THIRDPARTYLICENSEREADME.txt
8 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.httpclient4.feature_3.9.1.v20140827-1444/asl-v20.txt
9 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature_1.0.0.v20140827-1444/asl-v20.txt
10 -rw-r--r--. 1 10143 10143 11358 12月 8 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.feature_3.9.0.v20140827-1444/asl-v20.txt
11 -rw-r--r--. 1 10143 10143 42 1月 15 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/platform/VERSION.txt
12 -rw-r--r--. 1 10143 10143 42 1月 15 2017 ./jdk-8u251-linux-x64/jdk1.8.0_251/lib/visualvm/profiler/VERSION.txt
注意:如果需要將查詢結(jié)果直接重定向至一個(gè)文本锹安,則直接使用重定向命令而不需要再添加-exec
命令來執(zhí)行短荐,否則將提示權(quán)限不足的錯(cuò)誤信息!如下所示:
find ./ -name "*.txt" > test.log
whereis命令
whereis命令用來定位指令的二進(jìn)制程序叹哭、源代碼文件和man手冊(cè)頁等相關(guān)文件的路徑忍宋。
whereis命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)风罩、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)糠排。如果省略參數(shù),則返回所有信息超升。
和find相比入宦,whereis查找的速度非常快室琢,這是因?yàn)閘inux系統(tǒng)會(huì)將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫文件中乾闰,當(dāng)使用whereis和下面即將介紹的locate時(shí),會(huì)從數(shù)據(jù)庫中查找數(shù)據(jù)盈滴,而不是像find命令那樣涯肩,通 過遍歷硬盤來查找,效率自然會(huì)很高巢钓。
whereis [選項(xiàng)] [參數(shù)]
-
[選項(xiàng)]
參見選項(xiàng)說明病苗; -
[參數(shù)]
參見參數(shù)說明;
選項(xiàng)說明
選項(xiàng) | 說明 |
---|---|
-b |
只查找二進(jìn)制文件症汹; |
-B [目錄] |
只在設(shè)置的目錄下查找二進(jìn)制文件硫朦; |
-f |
不顯示文件名前的路徑名稱; |
-m |
只查找說明文件背镇; |
-M [目錄] |
只在設(shè)置的目錄下查找說明文件阵幸; |
-s |
只查找原始代碼文件花履; |
-S |
目錄>只在設(shè)置的目錄下查找原始代碼文件芽世; |
-u |
查找不包含指定類型的文件挚赊。 |
參數(shù)說明
要查找的二進(jìn)制程序、源文件和man手冊(cè)頁的指令名济瓢。
示例:
# 查詢 git 相關(guān)二進(jìn)制程序以及幫助手冊(cè)
whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
# /usr/bin/git 為 git 的二進(jìn)制程序
# /usr/share/man/man1/git.1.gz 為 git 的 man 手冊(cè)地址
which命令
which
命令用于查找并顯示給定命令的絕對(duì)路徑荠割,環(huán)境變量PATH
中保存了查找命令時(shí)需要遍歷的目錄。which指令會(huì)在環(huán)境變量$PATH
設(shè)置的目錄里查找符合條件的文件旺矾。也就是說蔑鹦,使用which
命令,就可以看到某個(gè)系統(tǒng)命令是否存在箕宙,以及執(zhí)行的到底是哪一個(gè)位置的命令嚎朽。
which [選項(xiàng)] [參數(shù)]
-
[選項(xiàng)]
參見選項(xiàng)說明; -
[參數(shù)]
參見參數(shù)說明柬帕;
選項(xiàng)說明
選項(xiàng) | 說明 |
---|---|
-n [文件名長度] |
制定文件名長度哟忍,指定的長度必須大于或等于所有文件中最長的文件名; |
-p [文件名長度] |
與-n參數(shù)相同陷寝,但此處的<文件名長度>包含了文件的路徑锅很; |
-w |
指定輸出時(shí)欄位的寬度; |
-V |
顯示版本信息凤跑。 |
參數(shù)說明
指令名:指令名列表爆安。
示例:
[root@localhost ~]# which pwd
/bin/pwd
[root@localhost ~]# which adduser
/usr/sbin/adduser
文件打包、壓縮以及解壓操作
tar命令
語法:tar [選項(xiàng)] [參數(shù)]
示例命令 | 說明 |
---|---|
tar –cvf /tmp/etc.tar /etc |
僅打包仔引,不壓縮 |
tar –zcvf /tmp/etc.tar.gz /etc |
打包以gzip壓縮 |
tar –xzvf /tmp/etc.tar.gz |
解壓 |
參數(shù)簡(jiǎn)單說明:
選項(xiàng) | 說明 | 選項(xiàng) | 說明 |
---|---|---|---|
c |
建立一個(gè)打包文件 | f |
給出文檔名 |
x |
解壓縮 | z |
壓縮gzip |
v |
有提示信息 | ||
f |
指定備份文件 | ||
z 或--gzip
|
通過gzip指令處理備份文件 |
常用命令說明:
- 打包文件
-
tar -cf {target.tar} {file1 file2 file3}
從文件創(chuàng)建歸檔扔仓。 -
tar -czf {target.tar.gz} {file1 file2 file3}
創(chuàng)建一個(gè)壓縮的歸檔。 -
tar -caf {target.tar.xz} {file1 file2 file3}
創(chuàng)建一個(gè)壓縮的歸檔文件咖耘,使用歸檔文件的后綴來確定使用的壓縮程序翘簇。
-
- 解壓提取文件
-
tar -xf {source.tar} -C {folder}
提取source文檔至folder目錄中。 -
tar -xzf {source.tar.gz}
將gzip壓縮的source壓縮文檔提取當(dāng)前目錄中鲤看。 -
tar -xzvf {source.tar.gz} -C {target folder}
將gzip壓縮的source壓縮文檔提取target目錄中并列舉解壓信息缘揪。 -
tar -xjf {source.tar.bz2}
將bzip壓縮的source壓縮文檔提取當(dāng)前目錄中。 -
tar -tvf {source.tar} {file1 file2 file3}
列出歸檔文件的內(nèi)容义桂。 -
tar -xf {source.tar} --wildcard {'*.html'}
提取與模式匹配的文件找筝。
-
軟件包管理命令
RPM命令
rpm [選項(xiàng)] [參數(shù)]
選項(xiàng)
選項(xiàng) | 描述 |
---|---|
-a |
查詢所有套件; |
-b <完成階段> <套件檔>+ -t <完成階段> <套件檔>+
|
設(shè)置包裝套件的完成階段慷吊,并指定套件檔的文件名稱袖裕; |
-c |
只列出組態(tài)配置文件,本參數(shù)需配合-l 參數(shù)使用溉瓶; |
-d |
只列出文本文件急鳄,本參數(shù)需配合-l 參數(shù)使用谤民; |
-e <套件檔> --erase <套件檔>
|
刪除指定的套件; |
-f <文件>+ |
查詢擁有指定文件的套件疾宏; |
-h --hash
|
套件安裝時(shí)列出標(biāo)記张足; |
-i |
顯示套件的相關(guān)信息; |
-i <套件檔> --install <套件檔>
|
安裝指定的套件檔坎藐; |
-l |
顯示套件的文件列表为牍; |
-p <套件檔>+ |
查詢指定的RPM套件檔; |
-q |
使用詢問模式岩馍,當(dāng)遇到任何問題時(shí)碉咆,rpm指令會(huì)先詢問用戶; |
-R |
顯示套件的關(guān)聯(lián)性信息蛀恩; |
-s |
顯示文件狀態(tài)疫铜,本參數(shù)需配合"-l"參數(shù)使用; |
-U <套件檔> --upgrade <套件檔>
|
升級(jí)指定的套件檔双谆; |
-v |
顯示指令執(zhí)行過程壳咕; |
-vv |
詳細(xì)顯示指令執(zhí)行過程,便于排錯(cuò)佃乘。 |
參數(shù)
軟件包:指定要操縱的rpm軟件包囱井。
下面是幾個(gè)示例
# rpm軟件包的安裝可以使用程序rpm來完成。執(zhí)行下面的命令
rpm -ivh your-package.rpm
如何安裝.src.rpm軟件包
有些軟件包是以.src.rpm結(jié)尾的趣避,這類軟件包是包含了源代碼的rpm包庞呕,在安裝時(shí)需要進(jìn)行編譯。這類軟件包有兩種安裝方法:
方法一:
rpm -i your-package.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp your-package.specs #一個(gè)和你的軟件包同名的specs文件
cd /usr/src/redhat/BUILD/your-package/ #一個(gè)和你的軟件包同名的目錄
./configure #這一步和編譯普通的源碼軟件一樣程帕,可以加上參數(shù)
make
make install
方法二:
rpm -i you-package.src.rpm
cd /usr/src/redhat/SPECS
此包需要的一些軟件你沒有安裝可以用rpm --nodeps -i
來忽略此信息住练,也就是說rpm -i --force --nodeps
可以忽略所有依賴關(guān)系和文件問題,什么包都能安裝上愁拭,但這種強(qiáng)制安裝的軟件包不能保證完全發(fā)揮功能讲逛。
卸載rpm軟件包
使用命令rpm -e包名,包名可以包含版本號(hào)等信息岭埠,但是不可以有后綴.rpm盏混,比如卸載軟件包proftpd-1.2.8-1,可以使用下列格式:
rpm -e proftpd-1.2.8-1
rpm -e proftpd-1.2.8
rpm -e proftpd-
rpm -e proftpd
不可以是下列格式:
rpm -e proftpd-1.2.8-1.i386.rpm
rpm -e proftpd-1.2.8-1.i386
rpm -e proftpd-1.2
rpm -e proftpd-1
** 這說明這個(gè)軟件被其他軟件需要惜论,不能隨便卸載许赃,可以用rpm -e --nodeps
強(qiáng)制卸載**
查詢安裝包
rpm -qa 講列出所有安裝過的包
或者利用管道
rpm -qa | grep sql
查詢安裝包全名
rpm -q mysql
可以獲得系統(tǒng)中安裝的mysql軟件包全名,從中可以獲得當(dāng)前軟件包的版本等信息馆类。這個(gè)例子中可以得到信息mysql-3.23.54a-11
查詢安裝包安裝的位置
rpm -ql 包名
注意這里的是不包括.rpm后綴的軟件包的名稱混聊,也就是說只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可執(zhí)行程序放到那里去了乾巧,也可以用which句喜,比如:
which mysql