1. 查看目錄文件命令:
查看以f開頭的文件:ll f*
查看/usr/local目錄下的文件:ll /usr/local
按最後的修改的時間順序,列出:ll -t */f* 時間反序:ll -tr */f*
文件以大小順序顯示:ll -Sh 大小反序:ll -Shr
列出/home/peidachang文件夾下的所有文件和目錄的詳細資料:ls -l -R /home/peidachang
計算當前目錄下的文件數和目錄數:
ls -l * |grep "^-"|wc -l ---文件個數
ls -l * |grep "^d"|wc -l ---目錄個數
2. cd 進入當前用戶目錄
3. 目錄連接鏈接時,pwd -P 顯示出實際路徑,而非使用連接(link)路徑;pwd顯示的是連接路徑
4. 通過 mkdir 命令可以實現在指定位置創建以 DirName(指定的文件名)命名的文件夾或目錄。要創建文件夾或目錄的用戶必須對所創建的文件夾的父文件夾具有寫權限。
並且,所創建的文件夾(目錄)不能與其父目錄(即父文件夾)中的文件名重名,即同一個目錄下不能有同名的(區分大小寫)。
5. mkdir -p 創建多層目錄
6. cat -n fileName // 顯示文件,攜帶行號
cat -n file1 file2 // 同時打開file1,file2
cat -b fileName // 顯示文件內容,攜帶行號,行號忽略空行
7. nl fileName // 顯示文件內容,攜帶行號,行號忽略空行
nl -n fileName //顯示文件內容,攜帶行號,行號不忽略空行
8. history | cat // 查看cat的使用歷史
9. 列一個目錄下的文件,由於內容太多,我們應該學會用more來分頁顯示。這得和管道 | 結合起來 :ls -l | more -5
10. head 用來顯示檔案的開頭至標准輸出中,默認head命令打印其相應文件的開頭10行。可以加 -n 參數,指定顯示的行數
11. tail 命令從指定點開始將文件寫到標准輸出.使用tail命令的-f選項可以方便的查閱正在改變的日志文件,
tail -f filename會把filename裡最尾部的內容顯示在屏幕上,並且不斷刷新, 使你看到最新的文件內容.
12. 1). which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底
是哪一個位置的命令。
2). whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。和find相比,
whereis查找的速度非常快,這是因為linux系統會將 系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和下面即將介紹的locate時,會從數據庫中查找數據,而不是像find命令那樣,
通過遍歷硬盤來查找,效率自然會很高。 但是該數據庫文件並不是實時更新,默認情況下時一星期更新一次,因此,我們在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者
剛剛建立文件,卻無法查找到,原因就是因為數據庫文件沒有被更新。
3). locate命令可以在搜尋數據庫時快速找到檔案,數據庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,
但較差勁的是locate所找到的檔案若是最近才建立或剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab) locate指定用在搜尋
符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”*” 或”?”等)來指定范本樣式,如指定范本為kcpa*ner, locate
會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會列出該目錄下包括 子目錄在內的所有檔案。
locate指令和find找尋檔案的功能類似,但locate是透過update程序將硬盤中的所有檔案和目錄資料先建立一個索引數據庫,在執行loacte時直接找該索引,查詢速度會較快,索引數據庫一般
是由操作系統管理,但也可以直接下達updatedb強迫系統立即修改索引數據庫。
4). Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了相當多的查找條件,功能很強大。由於find具有強大的功能,所以它的選項也很多,其中大部分選項都值
得我們花時間來了解一下。
find 命令格式:find pathname -options [-print -exec -ok ...]
常用命令參數:pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
常用命令選項:-name 按照文件名查找文件。 // find . -name "*.log"
-mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
另外:
-amin n 查找系統中最後N分鐘訪問的文件
-atime n 查找系統中最後n*24小時訪問的文件 //超找48小時內修改過的文件:find -atime -2
-cmin n 查找系統中最後N分鐘被改變文件狀態的文件
-ctime n 查找系統中最後n*24小時被改變文件狀態的文件
-mmin n 查找系統中最後N分鐘被改變文件數據的文件
-mtime n 查找系統中最後n*24小時被改變文件數據的文件
5). find是我們很常用的一個Linux命令,但是我們一般查找出來的並不僅僅是看看而已,還會有進一步的操作,這個時候exec的作用就顯現出來了。
exec解釋:
-exec 參數後面跟的是command命令,它的終止是以;為結束標志的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜槓。
{} 花括號代表前面find查找出來的文件名。使用find時,只要把想要的操作寫在一個文件裡,就可以用exec來配合find查找,很方便的。在有些操作系統中只允許-exec選項
執行諸如l s或ls -l這樣的命令。大多數用戶使用這一選項是為了查找舊文件並刪除它們。建議在真正執行rm命令刪除文件之前,最好先用ls命令看一下,確認它們是所要刪除
的文件。 exec選項後面跟隨著所要執行的命令或腳本,然後是一對兒{ },一個空格和一個\,最後是一個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一
下find命令,會發現該命令只輸出從當前路徑起的相對路徑及文件名。
find命令匹配到了當前目錄下的所有普通文件,並在-exec選項中使用ls -l命令將它們列出 : find . -type f -exec ls -l {} \;
find命令在當前目錄中查找所有文件名以.log結尾、更改時間在5日以上的文件,並刪除它們,只不過在刪除之前先給出提示。 按y鍵刪除文件,按n鍵不刪除 :
find . -name "*.log" -mtime +5 -ok rm {} \;
用exec選項執行cp命令 :find . -name "*.log" -exec cp {} test3 \;
6). xargs命令過於復雜,先了解:
在使用 find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,
這樣在find命令運行幾分鐘之後,就會出現溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
7). find命令還可以根據時間、文件大小、權限等查找。find命令可以使用正則表達式:
例如:如果想在當前目錄查找文件名以一個個小寫字母開頭,最後是4到9加上.log結束的文件: 命令:find . -name "[a-z]*[4-9].log" -print
13. 根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統修復等動作有關。 由於系統開機時需要特定的
開機軟件、核心文件、開機所需程序、 函式庫等等文件數據,若系統出現錯誤時,根目錄也必須要包含有能夠修復文件系統的程序才行。 因為根目錄是這麼的重要,
所以在FHS的要求方面,他希望根目錄不要放在非常大的分區, 因為越大的分區內你會放入越多的數據,如此一來根目錄所在分區就可能會有較多發生錯誤的機會。
因此FHS標准建議:根目錄(/)所在分區應該越小越好, 且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好。 如此不但效能較佳,
根目錄所在的文件系統也較不容易發生問題。說白了,就是根目錄和Windows的C盤一個樣。
14. 要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分區則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與
開機過程有關的目錄, 就不能夠與根目錄放到不同的分區去。那哪些目錄不可與根目錄分開呢?有底下這些:
/etc:配置文件
/bin:重要執行檔
/dev:所需要的裝置文件
/lib:執行檔所需的函式庫與核心所需的模塊
/sbin:重要的系統執行文件
這五個目錄千萬不可與根目錄分開在不同的分區。請背下來啊。
15. /usr不是user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是Unix操作系統軟件資源所放置的目錄,而不是用戶的數據啦。這點要注意。 FHS建議所有軟件開發者,
應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目錄。
16. /usr/local/ : 系統管理員在本機自行安裝自己下載的軟件(非distribution默認提供者),建議安裝到此目錄, 這樣會比較便於管理。
17. 如果/usr是安裝時會占用較大硬盤容量的目錄,那麼/var就是在系統運作後才會漸漸占用硬盤容量的目錄。 因為/var目錄主要針對常態性變動的文件,包括緩存(cache)、
登錄檔(log file)以及某些軟件運作所產生的文件, 包括程序文件(lock file, run file),或者例如MySQL數據庫的文件等等。
18. / (root, 根目錄):與開機系統有關;/usr (unix software resource):與軟件安裝/執行有關;/var (variable):與系統運作過程有關。
19. 在linux系統中,一切皆文件
20. 通過ln -s 源文件名 新文件名 // 建立鏈接文件
21. 基本上,Linux的文件是沒有所謂的擴展名的,一個Linux文件能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關系也沒有。這個觀念跟Windows的情況不相同喔!
在Windows底下, 能被執行的文件擴展名通常是 .com .exe .bat等等,而在Linux底下,只要你的權限當中具有x的話,例如[ -rwx-r-xr-x ] 即代表這個文件可以被執行。不過,
可以被執行跟可以執行成功是不一樣的
22. 雖然如此,不過我們仍然希望可以藉由擴展名來了解該文件是什麼東西,所以,通常我們還是會以適當的擴展名來表示該文件是什麼種類的。
23. 你在網絡上下載一個可執行文件,但是偏偏在你的 Linux系統中就是無法執行!呵呵!那麼就是可能文件的屬性被改變了。不要懷疑,從網絡上傳送到你的 Linux系統中,文件的
屬性與權限確實是會被改變的。
24. 我們希望Linux的文件名可以一看就知道該文件在干嘛的, 所以檔名通常是很長很長。
25. 命令下顯示的時間表示:最後訪問或修改時間;
26. 將文件file1改名為file2,即使file2存在,也是直接覆蓋掉:mv -f log3.txt log2.txt ;-f 這是個危險的選項,使用的時候一定要保持頭腦清晰,一般情況下最好不用加上它。
如果有詢問:mv -i log1.txt log2.txt
27. 文件被覆蓋前做簡單備份,前面加參數-b:mv log1.txt -b log2.txt
28. 查閱上述 tar包內有哪些文件:tar -ztvf log.tar.gz
只將 /tar 內的 部分文件解壓出來:tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
29. 打tar包傳輸文件有三個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。三是保證文件權限屬性等。