1.Linux文件管理類命令
命令 | 功能 | 命令 | 功能 |
---|---|---|---|
pwd | 顯示當前目錄 | ls | 顯示目錄下的內容 |
cd | 改變所在目錄 | cat | 顯示文件的內容 |
grep | 在文件中查找字符串 | cp | 復制文件 |
touch | 創建文件 | mv | 移動文件 |
rm | 刪除文件 | rmdir | 刪除目錄 |
1.1 pwd命令 該命令的英文解釋為print working directory(打印工作目錄)。輸入pwd命令,Linux會輸出當前目錄。 1.2 cd命令 cd命令用來改變所在目錄。 cd / 轉到根目錄中 cd ~ 轉到/home/user用戶目錄下 cd /usr 轉到根目錄下的usr目錄中-------------絕對路徑 cd test 轉到當前目錄下的test子目錄中-------相對路徑 1.3 ls命令
ls選項 | 含義 |
---|---|
-a | 列舉目錄中的全部文件,包括隱藏文件 |
-l | 列舉目錄中的細節,包括權限、所有者、組群、大小、創建日期、文件是否是鏈接等 |
-f | 列舉的文件顯示文件類型 |
-r | 逆向,從后向前地列舉目錄中內容 |
-R | 遞歸,該選項遞歸地列舉當前目錄下所有子目錄內的內容 |
-s | 大小,按文件大小排序 |
-h | 以人類可讀的方式顯示文件的大小,如用K、M、G作單位 |
ls -l examples.doc | 列舉文件examples.doc的所有信息 |
1.4 cat命令 cat命令可以用來合并文件,也可以用來在屏幕上顯示整個文件的內容。 cat snow.txt 該命令顯示文件snow.txt的內容,ctrl+D退出cat。 1.5 grep命令 grep命令的最大功能是在一堆文件中查找一個特定的字符串。 grep money test.txt 以上命令在test.txt中查找money這個字符串,grep查找是區分大小寫的。 1.6 touch命令 touch命令用來創建新文件,他可以創建一個空白的文件,可以在其中添加文本和數據。 touch newfile 該命令創建一個名為newfile的空白文件。 1.7 cp命令 cp命令用來拷貝文件,要復制文件,輸入命令: cp <source filename> <target filename> cp t.txt Document/t 該命令將把文件t.txt復制到Document目錄下,并命名為t。
cp選項 | 含義 |
---|---|
-i | 互動:如果文件將覆蓋目標中的文件,他會提示確認 |
-r | 遞歸:這個選項會復制整個目錄樹、子目錄以及其他 |
-v | 詳細:顯示文件的復制進度 |
1.8 mv命令 mv命令用來移動文件。
mv選項 | 說明 |
---|---|
-i | 互動:如果選擇的文件會覆蓋目標中的文件,他會提示確認 |
-f | 強制:它會超越互動模式,不提示地移動文件,屬于很危險的選項 |
-v | 詳細:顯示文件的移動進度 |
mv t.txt Document 把文件t.txt 移動到目錄Document中。 1.9 rm命令 rm命令用來刪除文件。
rm選項 | 說明 |
---|---|
-i | 互動:提示確認刪除 |
-f | 強制:代替互動模式,不提示確認刪除 |
-v | 詳細:顯示文件的刪除進度 |
-r | 遞歸:將刪除某個目錄以及其中所有的文件和子目錄 |
rm t.txt 該命令刪除文件t.txt
1.10 rmdir命令
rmdir命令用來刪除目錄。
2.bash的工作特性,相關示例
2.1.bash特性之一:命令別名
#alias NAME='COMMAND'
2.2.bash的特性之二:命令歷史
命令語法格式: history [-c] [-d OFFSET] [n] history -anrw [FILENAME] history -ps VALUE [VALUE…] 常用參數 -c: 清空命令歷史; -d offset(偏移量):刪除指定命令歷史,offset為history顯示出來的命令數字; -r: 從文件讀取命令歷史至歷史列表中; -w:把歷史列表中的命令追加至歷史文件中; history #:顯示最近的#條命令;
2.3.bash特性之三:快捷鍵
Ctrl+a:跳轉至命令行行首; Ctrl+e:跳轉至命令行行尾; Ctrl+u:刪除行首至光標所在處之間的所有字符; Ctrl+k:刪除光標所在處至行尾的所有字符; Ctrl+l:清屏,相當于clear;
2.4.bash的特性之四:命令補全和路徑補全
1.命令查找和補全機制: (1) 查找內部命令; (2) 根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名; (3) 給定開頭的部分字符串如果能惟一標識某命令程序文件,則直接補全; 不能惟一標識某命令程序文件,再擊tab鍵一次,會給出列表; 2.路徑補全: 在給定起始路徑下,以對應路徑下的打頭字串逐一匹配起始路徑下每個文件: TAB按鍵;如果能惟一標識,則直接補全;否則,再一次tab,給出列表; 3.命令行展開 ~:自動展開為用戶的家目錄,或指定的用戶的家目錄; {}:花括號展開??沙休d一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
2.5.bash的特性之五:命令行展開:
1)、命令行展開; 以某些bash能夠解釋的符號來代替命令中的某些參數。 ~:展開為用戶的家目錄; 例1:切換至家目錄 cd ~;pwd /root {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑; 例2:在/tmp/d目錄下創建f1,f2,f3三個文件 touch /tmp/d/f{1,2,3} bash
2.6.bash特性之六:命令的執行狀態結果:
1)、bash的基礎特性之狀態值返回:在bash中使用一個特殊的變量$?來保存上一個命令的執行狀態結果。 0表示成功, 1-255表示失敗
3. 使用命令行展開功能實現習題
3.1.創建tmp目錄下的:a_c,a_d,b_c,b_d;
[root@localhost ~]# touch {a,b}{_c,_d} [root@localhost ~]# ll total 165716 -rw-r--r--. 1 root root 369 Nov 29 16:11 ab.lua -rw-r--r--. 1 root root 0 Dec 10 10:20 a_c -rw-r--r--. 1 root root 0 Dec 10 10:20 a_d -rw-------. 1 root root 1048 Nov 23 10:05 anaconda-ks.cfg -rw-r--r--. 1 root root 0 Dec 10 10:20 b_c -rw-r--r--. 1 root root 0 Dec 10 10:20 b_d
3.2.創建/tmp/mylinux目錄下的以下目錄
├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib6 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run [root@localhost home]# mkdir -p /tmp/mylinux/{bin,boot/grup,dev,etc/{rc.d/init.d,sysconfig/network- scripts},lib/modules,lib6,proc,sbin,sys,tmp,usr/local/{bin,sbin},var,lock,log,run} [root@localhost home]# tree /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grup ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib6 ├── lock ├── log ├── proc ├── run ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var
4. 文件的元數據信息有哪些?分別代表什么含義?如何查看?如何修改時間戳信息?
元數據信息:文件名稱、屬主屬組、文件訪問權限、uid、gid、三個時間戳(centos7是四個)、inode號等等 訪問時間access time:讀一次這個文件的內容,這個時間就會更新。比如對這個文件運用 more、cat等命令。ls、stat命令都不會修改文件的訪問時間。 修改時間modify time:修改時間是文件內容最后一次被修改時間。比如:vi后保存文件。ls -l列出的時間就是這個時間。 狀態改變時間change time:是該文件的i節點最后一次被修改的時間,通過chmod、chown命令修改一次文件屬性,這個時間就會更新。 查看命令:stat filename [root@localhost home]# stat /tmp/mylinux/ File: ‘/tmp/mylinux/’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 137816826 Links: 17 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-12-10 10:45:11.942457078 +0800 Modify: 2016-12-10 10:43:07.978456374 +0800 Change: 2016-12-10 10:43:07.978456374 +0800 Birth: - 修改時間戳信息:touch [option] filename touch命令: touch – change file timestamps touch [OPTION]… FILE… -c: 指定的文件路徑不存在時不予創建; -a: 僅修改access time; -m:僅修改modify time; -t 指定時間:[[CC]YY]MMDDhhmm[.ss] [root@localhost home]# touch -a /tmp/mylinux/ ---//修改訪問時間 [root@localhost home]# stat /tmp/mylinux/ File: ‘/tmp/mylinux/’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 137816826 Links: 17 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-12-10 10:50:46.963458981 +0800 ---//訪問時間已被修改 Modify: 2016-12-10 10:43:07.978456374 +0800 Change: 2016-12-10 10:50:46.963458981 +0800 Birth: - [root@localhost home]# touch -m /tmp/mylinux/ ---//修改文件編輯時間 [root@localhost home]# stat /tmp/mylinux/ File: ‘/tmp/mylinux/’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 137816826 Links: 17 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-12-10 10:50:46.963458981 +0800 Modify: 2016-12-10 10:54:34.479460274 +0800 ---/文件編輯時間已被修改 Change: 2016-12-10 10:54:34.479460274 +0800 Birth: -
5文件別名的定義,如何在命令中引用另一個命令的執行結果。
alias NAME='COMMAND' //只對當前shell進程有效,結束后得重新來再次定義 unalias NAME //撤銷別名 例如: [root@localhost home]# alias cat='tac' [root@localhost ~]# cat ab.lua end print("not c") -->output:not c else print("c") --這個沒有執行 if c then end print("not b") --這個沒有執行 else print("b") -->output:b if b then end print("not a") --這個沒有執行 else print("a") -->output:a if a then local c = nil local b = 0 local a = true ab.lua 撤銷別名cat之后我們再嘗試 [root@localhost ~]# unalias cat [root@localhost ~]# cat ab.lua ab.lua local a = true local b = 0 local c = nil if a then print("a") -->output:a else print("not a") --這個沒有執行 end if b then print("b") -->output:b else print("not b") --這個沒有執行 end if c then print("c") --這個沒有執行 else print("not c") -->output:not c end 可以發現ab.lua在cat別名為tac生效時是以倒序列出文件內容的。
6.exercise
6.1顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一個數字(可以有其他字符)的文件或目錄 ls -d /var/l*[0-9]*[[:lower:]] 6.2顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄 ll -d /etc/[0-9]*[^0-9] 6.3顯示/etc目錄下,以非字母開頭,后面跟一個字母及其它任意長度任意字符的文件或目錄 ll -d /etc/[^[:alpha:][:alpha:]]* 6.4在/tmp目錄下創建以tfile開頭,后跟當前日期或時間的文件,文件名形如:tfile-2016-05-27-9-32-22 touch /tmp/tfile-$(date +%F-%H-%M-%S) 6.5復制/etc目錄下,所有以p開頭,以非數字結尾的文件或目錄至/tmp/mytest1目錄 cp -a /etc/p*^[0-9] /tmp/mytest1 6.6復制/etc目錄下,所有以.d結尾的文件或目錄至/tmp/mytest2目錄下 cp -a /etc/*.d /tmp/mytest2 6.7復制/etc目錄下,所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄下 cp -a /etc/[l,m,n]*.conf /tmp/mytest3
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/63589
贊,整體看下來都很棒~~加油~