主頁 > 後端開發 > 鳥哥的Linux私房菜基礎學習篇 第6章的重點探索

鳥哥的Linux私房菜基礎學習篇 第6章的重點探索

2021-02-28 10:55:57 後端開發

目錄

  • 前言
  • 一、目錄與路徑
    • 1.目錄的相關操作
    • 2.執行檔案路徑的變數: $PATH
  • 二、檔案與目錄管理及檔案內容查看
    • 1.常見命令
    • 2.檔案內容的直接查看與翻頁查看
    • 3.修改檔案時間或創建新檔案
  • 三、默認權限與隱藏權限
    • 1.檔案默認權限
    • 2.檔案隱藏屬性
    • 3.檔案特殊權限:SUID、SGID、SBIT
      • (1)SUID(Set UID)(-rwsr-xr-x):
      • (2)SGID(Set UID)(-rwx--s--x):
      • (3)SBIT(Sticky Bit)(drwxrwxrwt):
      • (4)如何設定
    • 4.觀察檔案型別:file
  • 四、命令與檔案的查找
    • 1.常見命令:
    • 2.多功能的find
  • 總結

前言

續上一篇所述進入到更加精彩的第6章,各種命令幫助大家熟悉針對檔案與目錄的操作,這篇也幫大家列出了鳥哥書里的不少實體供大家鞏固練習,當然肯定不如man命令查找來的更全面,

一、目錄與路徑

1.目錄的相關操作

先回顧一下上一章的絕對路徑與相對路徑,一般來說句對路徑的正確度要比較好,再寫程式(shell腳本)來管理系統的條件下,務必使用絕對路徑,但相對路徑寫法更為簡便,
除了常用的.和…,-:代表前一個作業目錄,即上一條命令執行時所在目錄,~:代表目前使用者身份所在的家目錄(其后跟賬號名稱即代表這個賬號的家目錄),

根目錄的上一層與根目錄自己是同一個目錄,

常見的命令:
1.cd(change directory)切換目錄:

[root@study ~]# cd ~
#表示回到自己的家目錄
[root@study ~]# cd 
#不加任何路徑,依然是回到自己的家目錄
[root@study ~]# cd -
#回到剛剛的目錄,就是/root
[root@study ~]# cd /var/spool/mail
#絕對路徑直接指定要去的完整路徑名稱
[root@study ~]# cd ../postfix
#體會相對路徑,即訪問/var/spool/postfix,不記得準確的目錄路徑時,記得搭配tab鍵自動補齊

2.pwd(Print Working Directory)顯示目前所在的目錄:

[root@study ~]# cd /var/mail
[root@study ~]# pwd
/var/mail
#列出目前的作業目錄
[root@study ~]# pwd -P
/var/spool/mail
#加了-P這個選項后,會顯示出真正的路徑,而非使用鏈接(link)l路徑,想查看這樣的鏈接關系可用 ls -d /var/mail

由于許多軟體所使用的目錄名稱相同,如/usr/local/etc和/etc,為避免搞錯目錄,所以用pwd查看,
3.mkdir(make directory)建立新目錄:

[root@study ~]# cd /tmp
[root@study tmp]# mkdir test1/test2/test3/test4
mkdir:cannot create directory ……
#上次目錄沒建之前,下層也建不了
[root@study tmp]# mkdir -p test1/test2/test3/test4
#加上-p選項可以直接遞回創建,上次目錄也一并創建出來了,即便該目錄已經存在,也不會顯示錯誤資訊
[root@study tmp]# mkdir -m 711 test2
#不使用默認權限(umask),而用自己設定的權限創建目錄,不適用-m時創建的目錄會是系統默認的新建目錄權限,詳見下 

4.rmdir(remove directory)洗掉“空”的目錄:

[root@study tmp]# rmdir test
#剛例子里創建的,可以直接刪掉
[root@study tmp]# rmdir test1
rmdir:failed to remove……
#里面尚有內容,刪不掉
[root@study tmp]# rmdir -p test1test2/test3/test4
#使用-p,有點像遞回洗掉,把test4之上的空目錄全部刪掉了

如果要將所有目錄下的東西都洗掉,必須使用rm -r test,用rmdir更安全,

2.執行檔案路徑的變數: $PATH

這個就是環境變數了,為什么在任何目錄下都可以執行ls這個命令,它明明放在/bin/ls這里,是因為輸入ls,系統會按照PATH的設定去欸個PATH定義的目錄下查找檔案名為ls的可執行檔案,先查找到的同名命令先被執行,

[root@study ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#從左往右,哪個目錄先被查詢,哪個目錄下的命令被先執行
[root@study ~]# exit
[xxxx@study ~]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xxxx/.local/bin:/home/xxxx/bin
#echo:可以在螢屏上顯示任何資訊
[root@study ~]# mv /bin/ls /root
#mv為移動,可將檔案在不同的目錄之間進行移動操作,接下來不論在哪個目錄下輸入ls,都無法查找,
[root@study ~]# /root/ls
[root@study ~]# ./ls
#只有使用絕對路徑與相對路徑,確切的指向這個執行檔案,才能夠執行成功,這時把/root目錄也加入環境變數便也可以執行成功了
[root@study ~]# PATH="${PATH}:/root"
#記得一定要將ls移回/bin目錄
[root@study ~]# mv /root/ls /bin
#移回后輸入ls依然不行,可能是指向引數被快取了,只需要注銷再登錄即可

${PATH}查找的目錄不加入本目錄.是因為用戶的作業目錄不固定,切換目錄后能夠執行的命令會有變動,再一個是防止大量竊取用戶資料事件的發生,這一點與Windows的習慣不同,
要點:
1.不同身份用戶默認的PATH不同
2.PATH是可以修改的
3.使用絕對路徑或相對路徑之間指定某個命令的檔案名來執行,會比查找PATH來到正確
4.命令要放置到正確的目錄下以便執行
5.本目錄勿放到PATH中

二、檔案與目錄管理及檔案內容查看

1.常見命令

1.檔案與目錄的查看:ls
執行ls,默認顯示的只有:非隱藏檔案的檔案名、以檔案名進行排序及檔案名代表的顏色(藍色顯示目錄,白色顯示一般檔案),但ls有非常多的選項,
Bash shell的alias功能還將ll設定成ls -l的意思,

[root@study ~]# ls [-aAdfFhilnrRSt] 檔案名或目錄名稱
#常用的有:-a(全部的檔案連同隱藏檔案一并列出)
#-d(僅列出目錄本身而不是列出目錄內的檔案資料)
#-l(詳細資訊顯示,包含檔案的屬性與權限等資料,是多個檔案一次列舉,用空格隔開)
#其他操作常需要配合-a,因為非隱藏檔案可能過于普通了,不能表現一些特質,
#引數輸入時無所謂先后順序
[root@study ~]# ls [--color={never,auto,always}] 檔案名或目錄名稱,不顯示顏色后,會在目錄后加上/表示這是目錄
[root@study ~]# ls [--full-time] 檔案名或目錄名稱
#ls -al列出的時間時目前短格式的時間,借由--full-time可以查看到比較未正確的完整時間格式

在這里插入圖片描述

2.復制:cp
cp除了單純的復制之外還可以建立鏈接檔案(快捷方式),比對兩檔案的新舊而予以更新,以及復制整個目錄等的功能,

[root@study ~]# cp [-adfilprsu] 源檔案1 源檔案2…… 目標檔案
#cp常用的選項有:-a(相當于-dr --preserve=all 的意思,區別-p,--preserve=all指除了-p的權限相關引數外,還加入了SELinux的屬性,links、xattr等也復制)
#-p(連同檔案的屬性,包括權限、用戶、時間一起復制過去,而非使用默認屬性,這也是備份時常用的)
#-i:若目標檔案已經存在,會先詢問再覆寫
#-r:遞回復制,用于目錄都復制操作
#-u:目標檔案與源檔案有差時復制,備份常用
[root@study tmp]# cp -s bashrc bashrc_slink
[root@study tmp]# cp -l bashrc bashrc_hlink
#使用-s或-l都會建立所謂的鏈接檔案,但-s是我們熟悉的快捷方式,-l則建立的是硬鏈接,與bashrc的屬性與權限完全一樣,執行后,ls -l后的第二欄link數會+1
[root@study tmp]# cp -d bashrc_slink bashrc_slink_2
#不加選項復制快捷方式不能生成快捷方式,只會把原始檔案復制一份,而加了-d可以復制鏈接檔案的屬性,復制出來的是快捷方式

在不加任何選項時,檔案復制過去屬性和權限可能會變,默認條件下,cp之后檔案的擁有者通常會是命令操作者本身,密碼檔案(/etc/shadow)以及一些組態檔不能直接以cp來復制必須要加上-a或-p這樣可以完整復制檔案權限的選項才行,
想要復制檔案給其他用戶,也要注意權限,不然其他人無法針對給予的檔案進行自定義操作,
注意多個源檔案復制時,最后一個得是目標“目錄”,
不同身份執行此命令也有不同結果,用自己的賬號cp -a時發現并不能隨意修改檔案的擁有者與用戶組,因此只能夠復制檔案的相關權限與時間等屬性,
使用要點:是否需要完整保留源檔案資訊,源檔案是否為符號鏈接檔案(s),是否為特殊檔案,是否為目錄
3.洗掉檔案或目錄:rm

[root@study ~]# rm [-fir] 檔案或目錄 
-f:force,忽略不存在的檔案,不會出現警告資訊
-i:互動模式,使用root時默認帶這個選項
-r:遞回洗掉,常用于目錄,非常危險的選項
[root@study tmp]# rm -r /tmp/etc
rm:descend into directory `/tmp/etc'?y
rm:renove regular file `/tmp/etc/fstab'?y
rm:……?
……
#每刪一個檔案,需要一次詢問,按下ctrl+c退出
[root@study tmp]# \rm -r /tmp/etc
#加上\,可以忽略掉alias的設定

用-做檔案名執行命令時容易誤判,這時還有兩種操作可以避免誤會,如洗掉檔案-foo,可以rm ./-foo 或rm – -foo,
4.移動目錄與檔案或重命名:mv

[root@study tmp]# mv [-fiu] source1 source2 …… directory/destination
-f:force,若目標檔案已存在不詢問直接覆寫
-i:若目標檔案已存在詢問
-u:若目標檔案已存在,且source更新,才會更新
[root@study tmp]# mkdir mvtest
[root@study tmp]# mv mvtest mvtest2
#起到了重命名的作用
#rename命令也可以重命名,但它是對一組檔案進行編號,并且修復extension of your html files

注意多個源檔案移動時,最后一個得是目標“目錄”,
5.獲取路徑的檔案名于目錄名稱:basename與dirname

[root@study ~]# basename /etc/sysconfig/network
network 
[root@study tmp]#  dirname /etc/sysconfig/network
/etc/sysconfig

2.檔案內容的直接查看與翻頁查看

1.cat(concatenate):
主要功能是將一個檔案的內容連續列印在螢屏上面,加上-n或-b(非空白行),每一行還會加上行號,但當檔案內容的行數超過40行以上,根本來不及在螢屏上看到結果,配合more或less更好,一般的DOS檔案可能需要留意特殊符號,用上-A,

[root@study ~]# cat [-AbEnTv] 
[root@study ~]# cat -n /etc/issue
1  \S
2  Kernel \r on an \m
3
#-n選項可以列印出行號,這對于大檔案要找某個特定的行時很有用
#-A:相當于vET,可列出一些特殊字符而不是空白,區別檔案里使用了tab和使用了空格的地方,tab鍵會以^I顯示,換行符會以$顯示

2.tac(反向顯示):
cat是由第一行寫道最后一行連續顯示在螢屏上,而tac則是從最后一行到第一行反向在螢屏上顯示
3.nl(添加行號列印):

[root@study ~]# nl /etc/issue
#同cat -b
[root@study ~]# nl -b a /etc/issue
#同cat -n,-b t不列出空行行號
[root@study ~]# nl -b a -n rz /etc/issue
#行號在自己欄位最右邊顯示,行號前面自動補0,-n rz行號在自己欄位的最右方顯示,且不加0,-n ln行號在螢屏的最左方顯示
[root@study ~]# nl -b a -n rz -w 3 /etc/issue 
#更改行號默認欄位數

4.more(一頁一頁向下翻):
more運行中的操作:
空格鍵-向下翻一頁
Enter-向下翻一行
/字串-在這個顯示的內容當中,向下查找字串這個關鍵詞
:f-立刻顯示出檔案名以及目前顯示的行數
q-立刻離開more,不再顯示該檔案內容
b或ctrl+b-往回翻頁,支隊檔案有用,對管道無用
5.less(一頁一頁翻動):
less比more更好用,more只能下翻,less可以用pageup、pagedown前后翻,另外還有操作:?字串-向上查找字串、n-重復前一個查找(與/或?有關)、N-反向的重復前一個查找(與/或?有關)、g-前進到這個資料的第一行、G-前進到這個資料的最后一行,
事實上,man這個命令就是呼叫less來顯示內容的,
6.資料截取head(取出前面幾)和tail(取出后面幾):

[root@study ~]# head 檔案
#默認顯示前面十行
[root@study ~]# head -n number 檔案
#顯示前面number行
[root@study ~]# head -n -number 檔案
#除后面number行不顯示之外,前面的都顯示
[root@study ~]# tail 檔案
#默認顯示最后的十行
[root@study ~]# tail -n number 檔案
#顯示最后的number行
[root@study ~]# tail +number 檔案
#除前面100行不顯示之外,后面的都顯示
[root@study ~]# tail -f 檔案
#持續檢測檔案內容,指導按下ctrl+c才結束執行,它可以一直重繪顯示檔案內容,比如/var/log/messages隨時會有資料寫入,需要重繪顯示,
[root@study ~]# head -n 20 /etc/man_db.conf | tail -n 10
#顯示第11行到第20行
[root@study ~]# cat -n /etc/man_db.conf | head -n 20 | tail -n 10
#顯示第11行到第20行加行號

顯示第11行到第20行需要用到管道,管道(|)是指前面的命令所輸出的資訊,通過管道交由后續的命令繼續使用,即在前一個命令的基礎上執行下一個命令,前一個命令不輸出到螢屏,
7.針對非純文本檔案od:
執行檔案通常是二進制檔案,用cat這些命令會產生亂碼般的資料,要用特定的od,

[root@study ~]# od [-t TYPE] 檔案
a:利用默認的字符來輸出
c:使用ASCII來輸出
C:對齊用,兩種輸出方式下觀察對應關系,如輸入oCc,一定要按照這樣的順序,若前面對照有多種輸出方式如oxCc,離c近的有對其效果
d{size}:利用十進制來輸出資料,每個整數占用size Bytes
f{size}:利用浮點數值來輸出資料
o{size}:利用八進制輸出
x{size}:利用十六進制輸出

3.修改檔案時間或創建新檔案

1.三個時間:
修改時間(modification time)mtime:檔案內容資料變更時更新
狀態時間(status time)ctime:檔案狀態(權限、屬性)改變時更新
讀取時間(access time)atime:檔案內容被讀取時更新
默認情況下ls顯示出來的時間是mtime,輸入ls -l --time=atime或ctime可以讀到另外兩個時間
2.touch:

[root@study ~]# touch [-acdmt] 檔案
-a:僅自定義access time
-c:僅修改檔案的時間,不新建檔案
-d:自定義日期
-m:僅修改mtime
-t:接自定義時間[YYYYMMDDhhmm]

比較時間的顯示時,為了把資訊列印在一起,選擇在一行命令下輸入幾個命令,用分號隔開,這些命令會依次執行,
touch主要還是用于建立一個空檔案,和將某個檔案日期自定義為目前,
我們常關心mtime,即這個檔案的內容是什么時候被修改,
復制的檔案,ctime是這個檔案復制完成的時間,atime與mtime是原本檔案的,事實上復制一個檔案,復制所有屬性,也沒有辦法復制ctime,

[root@study tmp]# touch -d "2 days ago" bashrc
#會改變bashrc的atime和mtime,但ctime只會把分鐘重繪到現在,日期不會變 

三、默認權限與隱藏權限

1.檔案默認權限

umask:指定目前用戶在建立檔案或目錄時候的權限默認值
,輸入umask命令會有四組數字,第一組是特殊權限的,后面三組分別對應第五章的擁有者、用戶組、其他人,用戶一般檔案建立時默認沒有x(可執行)權限,即-rw-rw-rw-,建立目錄時需要x,即drwxrwxrwx,有了umask,相當于在這個基礎上設定建立檔案和目錄時還要拿掉的權限,比如設定umask為0022,即針對擁有者,不拿掉默認權限,針對用戶組,拿掉可寫權限,針對其他人,拿掉可寫權限,
umask的設定:

[root@study ~]# umask 002
#一般為了安全性,不太建議修改,root的umask是022,一般用戶是002

2.檔案隱藏屬性

九個權限之外的對檔案的一些特殊保護,
1.chattr(組態檔隱藏屬性):

[root@study ~]# chattr [+-=] [ASacdistu] 檔案或目錄名稱
#常用的有a:這個檔案只能增加資料,而不能洗掉也不能修改,只有root可設定這個屬性,logfile就很需要
#i:可以讓一個檔案不能被洗掉、改名、設定鏈接也無法寫入或新增資料,具有相當強的保護屬性,只有root可設
#s:檔案如被洗掉會完全從硬碟洗掉無法恢復
#u:檔案如被洗掉資料依然在硬碟中,可以用來恢復該檔案

2.lsattr(顯示檔案隱藏屬性):

[root@study ~]# lsattr [-adR] 檔案或目錄
-a:將隱藏檔案的屬性也顯示出來
-d:接的是目錄則僅列出目錄本身的屬性而非目錄內的檔案名
-R:遞回列出的感覺,連同子目錄的資料一并列出

3.檔案特殊權限:SUID、SGID、SBIT

(1)SUID(Set UID)(-rwsr-xr-x):

1.相關限制:
SUID權限僅對二進制程式(binary program)有效
執行者對于該程式需要具有x的權限
本權限僅在執行該程式的程序中有效(run-time)
執行者將具有該程式擁有者(owner)的權限
2.例:一般用戶可以修改自己的密碼,但我們知道存放密碼資訊的檔案/etc/shadow屬性是---------,應該只有root可寫,但可執行檔案passwd的權限是-rwsr-xr-x,它的擁有者是root,用戶輸入這個命令后會暫時獲得root的權限,從而可以針對/etc/shadow操作了,
3.注意:SUID僅可用在二進制程式是,不能夠用在shell腳本上,shell腳本只是呼叫很多二進制程式,它的權限還是要看它呼叫的那些程式本身;SUID針對目錄無效;針對user,區別于下面的SGID,針對group

(2)SGID(Set UID)(-rwx–s--x):

1.相關限制:
SGID對二進制程式有用
程式執行者對于該程式來說,需具備x的權限
執行者在執行的程序中將獲得該程式用戶組的支持
2.功能:(類似SUID理解)
用戶若對于此目錄具有r與x的權限時,該用戶能夠進入此目錄
用戶在此目錄下的有效用戶組(effective group)將會變成該目錄的用戶組
若用戶在此目錄下具有w的權限(可以新建檔案),則用戶所建立的新檔案,該新檔案的用戶組與此目錄的用戶組相同
3.例:很多時候多用戶在一個目錄(770)下作業,雖然這個目錄屬于用戶組,多個用戶也屬于用戶組,但僅對于目前某個用戶在目錄中創建的檔案并不能為其他隊友改動,該檔案的用戶與用戶組都是他本人,其他隊友只能洗掉而已,為了方便,不讓這個用戶每建一個檔案都要去chgrp,使大家都能用,我們會直接更改目錄的第四位權限改成2,即2770,這樣每個用戶再創建的檔案用戶組都會變更成整個團隊隸屬的用戶組,

(3)SBIT(Sticky Bit)(drwxrwxrwt):

1.相關限制:
針對目錄有效
2.功能:當用戶對于此目錄具有w、x權限,即具有寫入的權限時,若干用戶在該目錄下建立檔案或目錄,便僅有自己與root才有權力洗掉該檔案,進行更名、移動等操作,用戶組內的他人無法洗掉檔案,換句話是檔案受到上層目錄的t權限限制,具有了更強的保護性,

(4)如何設定

1.SUID-4,SGID-2,SBIT-1,權限設定里的第四個數,如chmod 4755 filename,
除了數字法還有常見的符號法,如 chmod g+s,o+t test,u和g可針對s操作,o可針對t操作

2.出現大寫的情況:

[root@study ~]# chmod 7666 test;ls -l test
-rwSrwSrwT 1 root root 0 ……
#具有空的SUID/SGID權限,因為它們的6意味著沒有x權限,根本無從執行,何談特殊權限

4.觀察檔案型別:file

想要知道某個檔案的基本資訊,例如是屬于ASCII或是資料檔案或是二進制檔案,且其中有沒有使用到元件(share library)等資訊,通過file可以查看,目前先看檔案格式,將來還有看壓縮方式等,

四、命令與檔案的查找

1.常見命令:

1.which(查找【執行檔案】):
這個命令是根據PATH這個環境變數所規范的路徑,去查找執行檔案的檔案名,所以,重點是找出執行檔案,找不到PATH之外的命令,這個要用type命令,它也是通過PATH來查找檔案名,

[root@study ~]# which [-a] command
-a:將所有由PATH目錄中可以找到的命令均列出,而不止第一個被找到的命令名稱

輸入which which后可看到which的命令別名,含“alias”,即輸入which等于輸入后面那一堆,
2.whereis(由一些特定的目錄中查找檔案):
比find快,因為它只查找特定目錄,沒有全系統查找,但這樣它查詢目錄有限,某些檔案很有可能就查不到了,

[root@study ~]# whereis [-blmsu] 檔案或目錄名
-l:可以列出whereis會去查詢的幾個主要目錄
-b:只找binary格式的檔案
-m:只找說明檔案manual路徑下的檔案
-s:只找source源檔案
-u:查找不再上述三個專案當中的其他特殊檔案

3.locate/updatedb:
locate查找資料特別快,因為locate尋找的資料是由已建立的資料庫/var/lib/mlocate里面的資料所查,不用再去硬碟中讀資料,檔案名中包含輸入內容的都會被查到,但有時候新建立的檔案查不到,這時需要更新資料庫updatedb,它根據/etc/updatedb.conf的設定去查找系統硬碟內的檔案,并更新資料庫檔案,
locate也不會實際查找檔案系統,

[root@study ~]# locate [-ir] keyword
-i:忽略大小寫的差異
-c:不輸出檔案名,僅計算找到的檔案數量
-l:僅輸出幾行,如輸出5行是-l 5
-S:輸出locate所使用的資料庫檔案的相關資訊,包括該資料庫記錄的檔案/目錄數量等
-r:后面可解正則運算式的顯示方式

2.多功能的find

1.與時間有關:

[root@study ~]# find [PATH] [option] [action]
-mtime n:n天之前的某天被修改過內容的檔案
-mtime +n:列出n天之前(不含n天本身)被修改過內容的檔案
-mtime -n:列出在n天之內(含n天本身)被修改過內容的檔案
-newer file:file為一個存在的檔案,列出比file還要新的檔案
[root@study ~]# find /etc -newer /etc/passwd

以4為例說明time
在這里插入圖片描述

2.與用戶或用戶組有關:

-uid n:n為使用者的賬號ID,亦即UID,是數字,記錄在/etc/passwd
-gid n:n為用戶組的名稱ID,亦即GID,是數字,記錄在/etc/group
-user name:name是使用者賬號名稱
-group name:name是用戶組名稱
-nouser:查找檔案的擁有者不在/etc/passwd中
-nogroup:查找檔案的用戶組不存在于/etc/group中
#自行安裝的軟體其屬性很容易出現上面這兩種情況

3.與檔案權限及名稱有關:

-name filename:查找檔案名稱為filename的檔案
-size [+-]SIZE:查找比SIZE還要大(+)或小(-)的檔案(SIZE的規格:c-Bytes,k-1024Bytes)
-type TYPE:查找檔案的型別為TYPE(f-一般檔案,b/c-設備檔案,d-目錄,l-鏈接檔案,s-socket,p-FIFO)
-perm mode:查找檔案權限剛好等于mode
-perm -mode:查找檔案權限必須囊括mode
-perm /mode:查找檔案權限含任一mode的權限
[root@study ~]# find / -perm /7000
#只要含有s或t就列出
[root@study ~]# find / -perm -7000
#同時含有s、s、t才列出

4.額外操作:

-exec command:接額外的命令來處理前面查找到的結果,這里的command不支持命令別名
-print:將結果列印到螢屏上,這個是默認操作
[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
#可以列出找到的檔案,-exec一直到\;都是關鍵詞,代表find額外操作的開始和結束,其中的額外操作具體是指 ls -l {},
[root@study ~]# find /etc -name *httpd* 

注意find本來就是會查找子目錄的,
所找檔案具有特殊屬性,如SUID、檔案擁有者、檔案大小,用find會滿足你的各種要求,
find還可以利用通配符(*/?)來查找檔案名,
find查找相當小號硬碟資源,沒事不要用,

總結

筆者通篇挪列下來感覺是鞏固了不少的,搬一遍重點也相當于再學了一遍,也許有很多小例子作業時派不上用場,但同樣會在成功練習后帶來喜悅,希望大家都有所識訓,一同進步!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264494.html

標籤:python

上一篇:徹底解決pip下載pytorch慢的問題

下一篇:4、python分析酷我音樂

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more