linux指令之文件的創建、查詢、修改


導航:

mkdir(make directory)

rmdir(remove directory)

mv

查看文檔的指令有哪些?以及各自的特點?

如何新建文檔?

umask的使用?

如何設置文檔的隱藏屬性?

如何查看隱藏屬性?

如何修改文檔權限?

如何搜索文檔?

小結:

mkdir(make directory)

功能:創建目錄
案例:
mkdir test
點評:將創建一個目錄名為test的目錄



rmdir(remove directory)

功能:刪除目錄
案例:
rmdir test
點評:將刪除目錄test

 

mv

功能:移動目錄
范例一:
mv mvtest test
點評:將目錄mvtest 移動到目錄test下面

范例二:
mv mvtest mvtest2
點評:更名的效果

范例三:
mv test test2 mvtest
點評:將目錄test test2 一並移動到mvtest下面

 

查看文檔的指令有哪些?以及各自的特點?

cat 由第一行開始顯示檔案內容

tac 由最后一行開始顯示,內容顛倒過來了

nl 顯示的時候,順道輸出行號

more 一頁一頁的顯示檔案內容(Enter向下翻一行,空格向下翻一頁,q離開more模式)

less 與more類似,但是比more更好,可以往前翻頁(可以通過PageUp PageDown來進行翻頁,空格向下翻一頁,q離開)

head 只看頭幾行(head -n 跟數字可以指定顯示多少行)

tail 只看尾幾行 (tail -n 跟數字可以指定顯示多少行)

od 以二進制的方式讀取檔案內容

 

如何新建文檔?

用touch指令來實現

touch指令不僅可以新建文檔,還可以修改文檔日期

案例:

ll是ls -l 的別名,其實是一個意思

touch -d "2 days ago" testtouch
功能:將文件testtouch日期修改提前兩天,其中-d表示天數

touch testtouch
功能:創建文件testtouch

touch -t 1307030202 testtouch
功能:將文件testtouch的日期修改為2013年7月3日2點2分,-t是一種時間格式

 

umask的使用?

umask對於檔案的預設管理很有關系。

比如umask的值為0022

那么新建文件和文件夾的權限為

 我們新建一個文件和文件夾來看看

root@ubuntu:~/tmp# touch test1
root@ubuntu:~/tmp# mkdir test2

-rw-r--r--  1 root       root          0 2013-06-05 16:15 test1
drwxr-xr-x  2 root       root       4096 2013-06-05 16:15 test2

果然如想象的一樣

那么我們重新設置一下umask為0002看看

umask 0002

root@ubuntu:~/tmp# rm test1
root@ubuntu:~/tmp# rmdir test2

root@ubuntu:~/tmp# touch test1
root@ubuntu:~/tmp# mkdir test2

-rw-rw-r--  1 root       root          0 2013-06-05 16:22 test1
drwxrwxr-x  2 root       root       4096 2013-06-05 16:20 test2/

這時候,只去除了一個w

 

如何設置文檔的隱藏屬性?

答:用chattr
+ 增加一個特殊參數
- 移除一個特殊參數
= 僅有后面接的參數
A 設定了A這個屬性,這個檔案或目錄的存取時間atime(access)將不可被修改。
S 將數據寫入磁盤當中避免數據流失
a 設置a之后,這個檔案只能增加數據,不能刪除數據
c 設置這個屬性之后,將會自動壓縮文檔
i 可以讓一個檔案不能被刪除、改名、設定連結也無法寫入或新增資料。
等等..
比較常用的是a和i

案例:

root@ubuntu:~/tmp# touch attrtest
root@ubuntu:~/tmp# chattr +i attrtest
root@ubuntu:~/tmp# rm attrtest
rm: cannot remove `attrtest': Operation not permitted

 

如何查看隱藏屬性?
答:通過lsattr指令
案例:

root@ubuntu:~/tmp# lsattr attrtest
-----a-----------e- attrtest
root@ubuntu:~/tmp# chattr -a attrtest
root@ubuntu:~/tmp# lsattr attrtest
-----------------e- attrtest

 

如何修改文檔權限?

 答:通過執行chmod來修改

案例:

root@ubuntu:~/tmp# touch attrtest
root@ubuntu:~/tmp# chmod 777 attrtest
root@ubuntu:~/tmp# ll
total 16
drwxrwxr-x  4 jiqing9006 jiqing9006 4096 2013-06-05 17:03 ./
drwxr-xr-x 26 jiqing9006 jiqing9006 4096 2013-06-05 15:21 ../
-rwxrwxrwx  1 root       root          0 2013-06-05 17:03 attrtest*
drwxrwxr-x  5 jiqing9006 jiqing9006 4096 2013-06-04 15:24 mvtest/
-rw-rw-r--  1 root       root          0 2013-06-05 16:22 test1
drwxrwxr-x  2 root       root       4096 2013-06-05 16:20 test2/
-rw-r--r--  1 root       root          0 2013-07-03 02:02 testtouch

 

如何搜索文檔?

答:通常先使用whereis或者locate來檢查,如果真的找不到,才以find來搜索。whereis和locate是利用數據庫來搜索數據,所以相當的快,而且沒有實際的搜索硬盤,比較省時間。

而find速度慢,也操作硬盤了。

案例:

which搜尋執行檔

root@ubuntu:~/tmp# which passwd
/usr/bin/passwd
root@ubuntu:~/tmp# which passwd -a
/usr/bin/passwd

whereis搜尋特定檔案

root@ubuntu:~/tmp# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz

-b只找binary檔案

-m只找manual下面的檔案

-s只找source

root@ubuntu:~/tmp# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
root@ubuntu:~/tmp# whereis -m passwd
passwd: /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz

tips:

基本上 Linux 每天會針對 Linux 主機上所有檔案的所在進行搜尋數據庫的更新, 更新的程序就是
updatedb。當然,也可以直接使用 /usr/bin/updatedb 來更新數據庫檔案呢!

locate

root@ubuntu:~/tmp# locate passwd
/etc/passwd
../var/lib/dpkg/info/passwd.postinst
/var/lib/dpkg/info/passwd.preinst

find 查詢硬盤了

root@ubuntu:~/tmp# find /home/jiqing9006 -mtime 0
/home/jiqing9006
/home/jiqing9006/file
/home/jiqing9006/.viminfo
/home/jiqing9006/tmp
/home/jiqing9006/tmp/test2
/home/jiqing9006/tmp/mvtest/demo
../home/jiqing9006/.cache/zeitgeist/daemon.log.2013-06-04
/home/jiqing9006/.cache/zeitgeist/daemon.log
find: `/home/jiqing9006/.gvfs': Permission denied

上述指令表示查詢24小時內更改的文件,0表示從當前到24小時前。

find / -mtime 3 表示三天前的24小時內。

找出檔名為 passwd 這個檔案
[root@linux ~]# find / -name passwd
# 利用這個 -name 可以搜尋檔名啊!

找出系統中,大於 1MB 的檔案
[root@linux ~]# find / -size +1000k
# 雖然在 man page 提到可以使用 M 與 G 分別代表 MB 與 GB,
# 不過,俺卻試不出來這個功能~所以,目前應該是僅支持到 c 與 k 吧! 

 

小結:
什么是絕對路徑與相對路徑? 

絕對路徑的寫法為由 / 開始寫,至於相對路徑則不由 / 開始寫!此外,相對路徑為相對於目前
工作目錄的路徑! 


如何更改一個目錄的名稱?例如由 /home/test 變為 /home/test2  

mv /home/test /home/test2  


PATH 這個環境變量的意義?  

這個是用來指定執行檔執行的時候,檔案搜尋的目錄路徑。  


umask 有什么用處與優點?  

umask 可以拿掉一些屬性,因此,適當的定義 umask 有助於系統的安全, 因為他可以用來建立
預設的目錄或檔案的權限。  
當一個使用者的 umask 分別為 033 與 044 他所建立的檔案與目錄的權限為何?  
在 umask 為 033 時,則預設是拿掉 group 與 other 的 w(2)x(1) 權限,因此權限就成為『檔
案 -rw-r--r-- , 目錄 drwxr--r-- 』而當 umask 044 時,則拿掉 r 的屬性,因此就成為『檔
案 -rw--w--w-,目錄 drwx-wx-wx』  


什么是 SUID ?  

當一個指令具有 SUID 的功能時,則當其它人使用這個指令時,該程序將具有指令擁有者的權限。

 

當我要查詢 /usr/bin/passwd 這個檔案的一些屬性時,可以使用什么指令來查詢?  

ls -al, file, lsattr  


嘗試用 find 找出目前 linux 系統中,所有具有 SUID 的檔案有哪些?  

find / -type f -perm -4000 -print  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM