1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
常用的命令:ls, cd, pwd, mkdir, cp, rm, mv, touch, cat, more, less, head, tail, du, wc
ls: -A :列出當前目錄全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄 -d :僅列出目錄本身,而不是列出目錄內的文件數據 -h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來 -i :列出 inode 號碼,inode 的意義下一章將會介紹 -l :長數據串列出,包含文件的屬性與權限等等數據 -R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來 cd: 例子 [root@localhost ~]# cd /home/ #切換到home目錄 [root@localhost home]# cd - #返回切換到home前的目錄 /root [root@localhost ~]# cd ../ #切換到上一級目錄 [root@localhost /]# cd ~ #切換當前用戶的home目錄 pwd: pwd 顯示當前目錄 -L:顯示當前目錄 -P:顯示當前目錄的實際物理地址 例子 [root@bogon bxx]# pwd /opt/bxx [root@bogon bxx]# pwd -P /home/bss #pwd -P顯示的是真實的物理地址,而不是軟連接創建的 mkdir: -m:設置權限模式(類似chmod),而不是rwxrwxrwx 減umask -p:需要時創建目標目錄的上層目錄,但即使這些目錄已存在也不當作錯誤處理 -v:每次創建新目錄都顯示信息 例子 [root@localhost ~]# mkdir rice #創建目錄 [root@localhost ~]# mkdir -m a=rw rice #創建指定屬性的目錄 [root@localhost ~]# mkdir -p 111/rice/backup #這裏我個人是將其理解爲,遞歸創建目錄
rm: rm [-fir] 文件或目錄 選項與參數: -f:就是 force 的意思,忽略不存在的文件,不會出現警告信息 -i:互動模式,在刪除前會詢問使用者是否動作 -r:遞迴刪除啊!最常用在目錄的刪除了(這是非常危險的選項) 例子 [root@localhost ~]# rm rice.php #刪除文件需要確認 [root@localhost ~]# rm -f rice.php #強制刪除文件不確認 [root@localhost ~]# rm -rfv ./rice #強制刪除當前的test目錄,並顯示刪除的詳細過程 mv: mv [-fiu] source destination 選項與參數: -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋 -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋 -u :若目標文件已經存在,且 source 比較新,纔會升級 (update) 注:mv還有一種用法就是重命名,日常用的也是最多的 例子 [root@linux ~]# mv abc abc.php #將abc移動成abc.php [tank@localhost ~]$ mv /home/rice.txt /database #將rice.txt移動到database目錄下 touch: -a :僅修訂 access time -c :僅修改文件的時間,若該文件不存在則不創建新文件 -d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間" -m :僅修改 mtime -t :後面可以接欲修訂的時間而不用目前的時間,格式爲[YYMMDDhhmm] 例子 [root@linux ~]# touch test.php #將test.php的檔案時間改爲,當前時間,文件不存在建之 [root@linux ~]# touch -c -t 05071803 test.php #將檔案時間改爲,5月7日18點3分 [root@linux ~]# touch -r abc.php test.php #將test.php檔案改成根abc.php一樣 [root@linux ~]# touch -d "2 days ago" test.php #將test.php日期修改爲2天以前
cat: cat [-AbEnTv] 選項與參數: -A :相當於-vET 的整合選項,可列出一些特殊字符而不是空白而已 -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號 -E :將結尾的斷行字節 $ 顯示出來 -n :列印出行號,連同空白行也會有行號,與 -b 的選項不同 (常用) -T :將 [tab] 按鍵以 ^I 顯示出來 -v :列出一些看不出來的特殊字符 more: more (一頁一頁翻動查看) 常用的快捷鍵: 空白鍵 (space):代表向下翻一行 Enter :代表向下翻一行 /字串 :代表在這個顯示的內容當中,向下搜尋字串這個關鍵字 :f :立刻顯示出檔名以及目前顯示的行數 q :代表退出 b 或 Ctrl+b :代表往回翻頁,不過這動作只對文件有用
less: less (一頁一頁翻動) less與more區別: 在 more 的時候,我們並沒有辦法向前面翻, 只能往後面看,但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往後翻看文件 常用的快捷鍵: 空白鍵 :向下翻動一頁 [pagedown]:向下翻動一頁 [pageup] :向上翻動一頁 /字串 :向下搜尋字串的功能 ?字串 :向上搜尋字串的功能 n :重複前一個搜尋 (與 / 或 ? 有關!) N :反向的重複前一個搜尋 (與 / 或 ? 有關!) q :離開 less 這個程序 head: head [-n number] 文件 選項與參數: -n :後面接數字,代表顯示幾行的意思 (默認是前10行) tail: tail [-n number] 文件 選項與參數: -n :後面接數字,代表顯示幾行的意思 (默認後10行) -f :表示持續查看後面所接的文件,要等到按下Ctrl+c纔會結束tail的查看 (tail –f 非常有用,當我們看某些經常更新的日誌時,例: tail -f /var/log/maillog)
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
bshell中的特性: 命令補全 命令歷史 查看命令歷史:history -c:清空命令歷史 -d: 刪除指定位置的命令 -w:保存命令歷史至歷史文件中 命令別名 alias CMDALIAS='COMMAND [options] [arguments]' 在shell中定義的別名僅在當前shell生命週期中有效;別名的有效範圍僅爲當前shell進程; 命令行編輯 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u: 刪除光標至命令行首的內容 Ctrl+k: 刪除光標至命令行尾的內容
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
mkdir -p /tmp/{a_c,a_d,b_c,b_d}
(2)、創建/tmp/mylinux目錄下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
mkdir -p /mylinux/{bin,boot,dev,etc,lib,lib64,proc,sbin,sys,tmp,usr,var,lock,log,run} mkdir -p /mylinux/boot/grub mkdir -p /mylinux/etc/{rc.d,sysconfig} mkdir -p /mylinux/etc/rc.d/init.d/ mkdir -p /mylinux/etc/rc.d/sysconfig/network-scripts mkdir -p /mylinux/lib/modules mkdir -p /mylinux/usr/local/{bin,sbin}
4、文件的元數據信息有哪些,分別表示什麼含義,如何查看?如何修改文件的時間戳信息。
答:
Access:最後訪問時間 Modify:最後修改時間 Change:狀態更改時間(由系統維護,無法隨意修改) touch -a :僅更新Access time(同時更新Change爲current time) touch -m:僅更新Modify time(同時更新Change爲current time) touch -c:不創建新文件 touch -t:使用指定的時間更新時間戳 例:touch -t [[CC]YY]MMDDhhmm[.ss] filename
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
(1)[root@Blackghost ~] alias dir='ls -ar' #設置別名可以是命令帶參數 (2)可以定義環境變量,或者將其寫成一個shell的腳本,去調用。
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
find /var/ -maxdepth 1 -name "l*[0-9]*[a-z]"
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
find /etc/ -maxdepth 1 -name "[0-9]*[!0-9]"
8、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字符的文件或目錄。
find /etc/ -maxdepth 1 -name "[0-9]*[a-z-A-Z]*"
9、在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-08-06-09-32-22。
touch tfile-`date +"%Y-%m-%d-%H-%M-%S"`
10、複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
ls /etc/ | grep "^p[^0-9]*$" | xargs -i cp -r {} /tmp/mytest1
11、複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
find /etc -maxdepth 1 -name "*.d" | xargs cp -r /tmp/mytest2/
12、複製/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
find /etc/ -type f -name "[lmn]*conf" |xargs cp -rf /tmp/mytest3/