歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux學習-7.Linux文件與目錄操作

linux學習-7.Linux文件與目錄操作

日期:2017/3/1 13:37:05   编辑:關於Linux
linux文件與目錄管理
1.對目錄的代表:
.代表此層目錄
..代表上層目錄
-代表一個工作目錄
~代表當前用戶身份,也就是當前登錄的用戶的默認主文件夾
~account代表 account這個用戶的主文件夾


2.目錄的操作
cd:切換目錄
pwd:顯示當前目錄 - print working directory,連接文件(目錄),顯示的是當前連接文件目錄,如果pwd -P 顯示的是連接文件連接到的文件目錄。
mkdir:新建一個目錄 mkdir -p /www/ddd/eee ,如果ddd不存在,那麼新建eee的時候會報錯:cannot create directory,加上參數p就不會報錯了。
rmdir:刪除一個空的目錄,如果目錄非空,就會報錯,如果多個目錄嵌套,而且為空,那麼rmdir -p 一次清空所有空目錄。
3
切換目錄 cd - change directory的縮寫
目錄需要x的可執行權限
4
執行文件路徑的變量$PATH
顯示變量值 echo $PATH
注意:文件路徑變量,是和用戶對應的,不同的用戶對應的$PATH變量的值是不同的。
可以通過su切換用戶試試。
如果一個命令在PATH中存在2個,那麼先執行優先查到的那個,所以會有一定的不准確性,使用絕對路徑執行是最准確的。
例子;添加$PATH(把/www添加到$PATH中):
PATH="$PATH":/www


5
查看文件和目錄:ls
5.1參數 :
-a:列出全部文件,包括隱藏文件(開頭為.的文件)
-d:僅列出目錄,不包含目錄內的文件數據
-l:列出長數據串,包含文件的屬性和權限等數據。
5.2
ls --color
5.3顯示全名
ls --full-name 目錄名稱


6
目錄文件的操作:復制,刪除,移動(cp,rm,mv)
6.1
cp 源文件 目標文件
-a 相當於pdr三個參數的組合,作用:復制連接文件屬性而非文件本身,復制文件連同屬性一起復制過去,而非使用默認屬性(備份常用),遞歸持續復制。
-f 強制復制
-u 目標文件和源文件有差異後才復制。


把/www 復制到當前目錄
cp /www .
默認情況下,cp的源文件和目標文件的權限是不同的,目標文件的所有者通常會使命令操作者本身,
因此在復制的時候,對於一些特殊權限文件,例如密碼文件和一些特殊配置文件,一定要加上-a
6.2
rm
-f force
-r 遞歸
-i 互動刪除
對於-開頭的文件,譬如 rm -aaa-,會報錯,系統會認為這是一個錯誤參數,正確方法:rm ./-aaa-
6.3
mv - 移動文件與目錄,或者更名
mv 源文件 目標文件
-f 強制
-i 若目標文件存在,就會詢問是否覆蓋
-u 若目標文件存在,而且source比較新,才會更新。


7 取得路徑的文件名與目錄名稱
取得文件名:basename /www/etc =>etc
取得目錄名:dirname /www/etc =>/www


8 文件內容檢閱
最常使用的顯示文件內容的目錄cat more less
cat:由第一行開始顯示文件內容
tac:由最後一行開始顯示文件內容
nl:顯示的時候輸出行號
more:一頁一頁的顯示文件內容
less:與more類似,但是比more更好的是,它可以向前翻譯
head:只看頭幾行
tail:只看結尾幾行
od:以二進制的方式讀取文件內容


9 修改文件時間或創建新文件 touch
文件的三個參數:
modification time(mtime)當文件的內容修改了就會更新這個時間,內容是表示這個文件的內容數據,而不是文件的屬性或權限
status time (ctime)當文件的權限和屬性更改後就會更新這個時間,也就是文件的狀態更改時間
access time (atime)當這個文件的內容被取用時,就會更新這個時間。
在ls的時候,顯示的默認為mtime
ls -l --time=atime /etc/man.config
ls -l 的縮寫命令 ll
多個文件顯示可以:ll ba; ll bb; ll cc;


--------------
設計到文件的移動等操作:1.操作文件 2.操作文件所有者, 3設置權限,4設置隱藏權限
10 文件和目錄的默認權限和隱藏權限
10.1文件的默認權限umask
umask就是 當前用戶在新建文件或目錄時的權限默認值。
得知umask
#umask
0022
#umask -S
u=rwx,g=rx,o=rx
umask是默認值需要減去的權限,r,w,x 分別為4,2,1,也就是說輸入2就是拿掉寫的權限,如果輸入4就是拿掉讀的權限,輸入1就是拿掉執行的權限,


用戶創建文件默認沒有可執行的權限,也就是666 -rw-rw-rw-
新建文件的默認是777 drwxrwxrwx
如果umask的默認值為022,那麼
新建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- 也就是644
新建目錄時:(-rwxrwxrwx)- (-----w--w-) ==> -rwxr-xr-x 也就是 755
直接相減是不行的 譬如666 - 003 =663 ,實際是662,因為一開始x的權限已經去掉了,這裡有一個方法快速計算,結果值如果是奇數,那麼減一即可,因為4,2,1只有執行是奇數
所以這個是多余的,直接去掉即可。


11
文件隱藏屬性 chattr lsattr
設置文件的隱藏屬性chattr
chattr 文件或目錄名稱
-a 設置a後,這個文件只能增加數據,不能刪除和修改,只有root才能設置這個屬性,一般用來log日志文件
-i 設置i後,這個文件不能一個文件不能刪除,改名設置連接也無法寫入或添加數據,對系統安全有很大幫助,只有root才能設置這個屬性
-d 設置這個屬性後,當程序dump時可以不被執行
-s 設置這個屬性後,如果這個文件刪除,就完全從磁盤空間中刪除
-u 這個和s相反,如果刪除後,還是可以刪除的
-A 設置這個屬性後,若訪問這個文件和目錄,他的訪問時間atime不會修改,可以避免I/O較慢的機器過度訪問磁盤,對速度較慢的計算機有幫助,
-S 一般文件都是一步寫入磁盤的,如果架上S這個屬性時,進行的任何對文件的修改,都會同步到磁盤中
-c設置屬性設置後,文件都會先壓縮後存儲,讀取的時候都會自動解壓縮


加上i 屬性
chattr +i attrtest
取消i屬性
chattr -i attrtest
查看屬性
lsattr attrtest


12
文件的特殊權限:SUID,SGID,SBIT
SetUID:SUID
當文件的所有者的x位置為s的時候,此時就成為Set UID,簡稱SUID的特殊權限,SUID的權限對於一個文件的特殊功能是:
SUID僅對二進制文件有效,(binary file)
執行者對該文件具有x的權限
執行者僅在執行該程序的過程中有效
執行者將具有程序所有者的權限(owner)
譬如:root新建的二進制文件權限為:-rwsr-xr-x ,那麼其他用戶在執行這個二進制文件時具有x的權限,而且執行這個文件的時候相當於owner為root


SetGID:SGID
和SetUID差不多,獲取的是用戶組的身份。
SBIT - Sticky Bit 只針對目錄有效,SBIT對目錄的作用是:
當加上SBIT屬性後,在該目錄下的文件,只有文件所有人對文件或目錄進行刪除,重命名,移動,而無法操作其他人的文件。
SUID/SGID/SBIT的權限設置:
SUID 4
SGID 2
SBIT 1


13
查看文件類型
file 例如查看文件屬於ASCII 或者是data文件,或者是binary,且其中有沒有使用到動態數據庫等信息,可以用file這個命令查看
file ~/.bashrc
結果:/root/.bashrc:ASCII text 告訴我們是ASCII的純文本文件
file /usr/bin/passwd
file /var/lib/mlocate
通過這個命令可以判斷文件是那種類型。


14
命令與文件的查詢
14.1:腳本文件名的查詢
which 尋找執行文件
-a 將所有由PATH目錄中可以找到的命令均列出,而不止第一個找到的命令名稱。
有一些命令是找不到的,譬如bash內置的命令cd等,這些命令不需要寫到path中,因此,用which是找不到的
14.2
文件名的查找 whereis 尋找特定文件
-b 只找二進制的文件
-m 只找在說明文件manual路徑下的文件
-s只找source源文件
-u查找不在上述三個選項當中的其他特殊文件
whereis和locate都是查找命令,
locate
-i 忽略大小寫的差異
-r 後面可接正則表達式的顯式方式。
locate尋找的數據是由以創建的數據庫 /var/lib/mlocate裡面的數據所查找到的,所以速度快,但是存在延遲
手動更新數據庫的命令updatedb,updatedb這個命令會讀取/etc/updatedb.conf這個配置文件的配置,再去硬盤進行查找文件名的操作,然後更新整個數據庫文件,
14.3
find
1.與時間有關的參數:共有 -atime,-ctime,-mtime下面以-mtime說明, find / -mtime 0 那個0是重點,也就是現在到24小時之前的時間
-mtime n 為數字,代表在N天之前的一天之內被更改過的文件
-mtime +n為n天之前被更改過的文件
-mtime -n為n天之內被修改的的文件
2.與用戶和用戶組有關的參數, -uid n :n為參數,這個數字為賬戶的id,即UID,這個uid記錄在/etc/passwd裡面與賬號名稱對應的數字,
-gid n n為數字,這個n是用戶組名的id,即GID,這個GID記錄在/etc/group中,
-user name:name為賬戶名稱
-group name:name為用戶組名,
-nouser 尋找文件的所有者不存在於 /etc/passwd的人
-nogroup尋找文件的所有用戶組
3.與文件權限及名稱有關的參數
-name 查找文件名為filename文件
-size [+-]查找比size大(+)或小(-)的文件,這個size的規格有c:代表byte,k代表kb
-type TYPE 查找文件類型為TYPE的,類型主要有:一般正規文件(f),設備文件(b,c),目錄(d),連接文件(l),socket(s),以及FIFO(p)屬性
-perm mode查找文件權限剛好等於mode的文件,這個mode為類似chmod的屬性值
-perm -mode查找文件權限“必須要全部包含mode的權限”的文件也就是值要比這個大
-perm +mode查找文件權限“包含任一mode權限文件”


4.其他可以進行的操作:
-exec command
-print 將結果打印到屏幕上,這個操作時默認操作。
findde 特殊功能就是可以做額外的事情,
例子:
find / -perm +7000 -exec ls -l {}\;
解釋:{}代表由find找到的內容,find的額外命令的開始(-exec)到“\;”結束, 因為;在bash是有特殊含義的,所有用\轉義。





Copyright © Linux教程網 All Rights Reserved