1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
常用文件管理命令有:ls、mkdir、cd、pwd、cp、rm、mv、touch、cat、more、less、head、tail等
(1)ls命令:列出目錄內容
ls [OPTION]... [FILE]... -a:顯示全部文件,包括隱藏文件 -d:僅列出目錄本身,不列出目錄內的文件數據 -l:列出文件的屬性與權限等數據 [root@testmin ~]# ls -l total 36 -rw-r--r--. 1 root root 3568 Jun 18 22:02 123.txt -rw-------. 1 root root 1128 Jun 8 07:59 anaconda-ks.cfg -rw-r--r--. 1 root root 9458 Jun 8 07:59 install.log -rw-r--r--. 1 root root 3161 Jun 8 07:58 install.log.syslog -rw-r--r--. 1 root root 9192 Jun 18 20:09 used to configure the kernel-resident network interfaces
(2)mkdir命令:創建目錄
mkdir[OPTION]... DIRECTORY... -m:配置文件的權限,直接配置,不需要看默認權限 -p:直接將所需要的目錄(包含上一級目錄)遞歸創建 [root@testmin ~]# mkdir -p /adb/123/456 [root@testmin ~]# tree adb adb └── 123 └── 456
(3)cd命令:變化工作目錄
cd[相對路徑或絕對路徑] [root@testmin ~]# ls adb anaconda-ks.cfg install.log install.log.syslog [root@testmin ~]# cd adb [root@testmin adb]# ls 123 [root@testmin adb]# cd [root@testmin ~]# cd /root/adb [root@testmin adb]#
(4)pwd:顯示當前工作目錄
pwd[OPTION]... -p:顯示區確實的路徑,而非使用link路徑 [root@testmin ~]# pwd /root
(5)cp命令:復制文件和目錄
cp[OPTION]...SOURCE DEST -a 盡可能將檔案狀態權限等資料都照原狀予以復制 -r 若 source 中含有目錄名則將目錄下之檔案亦皆依序拷貝至目的地 -f 若目的地已經有相同檔名的檔案存在則在復制前先予以刪除再行復制 -P: 復制符號鏈接文件本身,而非其指向的目標文件 [root@testmin ~]# ls adb anaconda-ks.cfg install.log install.log.syslog [root@testmin ~]# tree adb adb └── 123 └── 456 2 directories, 0 files [root@testmin ~]# cp -r adb abc [root@testmin ~]# ls abc adb anaconda-ks.cfg install.log install.log.syslog [root@testmin ~]# tree abc abc └── 123 └── 456 2 directories, 0 files
(6)rm命令:刪除文件或目錄
rm [OPTION]... FILE... -f:忽略不存在的文件,不會出現警告信息 -i:互動模式,在刪除前會詢問使用者是否動作 -r:遞歸刪除,常用在目錄的刪除(非常危險的選項) 一般常用rm -rf刪除全部文件或目錄,使用需謹慎 [root@testmin ~]# tree adb adb └── 123 └── 456 2 directories, 0 files [root@testmin ~]# rm -rf adb [root@testmin ~]# ls abc anaconda-ks.cfg install.log install.log.syslog
(7)mv命令:移動文件
mv [OPTION]... SOURCE DEST -f:如果目標文件已存在,不會詢問直接覆蓋 -i:若目標文件已存在,就會詢問是否覆蓋 [root@testmin ~]# mv -i abc /home mv: overwrite `/home/abc'?
(8)touch命令:改變文件的時間戳
touch [OPTION]... FILE... 如果FILE不存在,默認會創建一個空文件 -a:僅修改access time -c:僅修改文件的時間,若文件不存在則不創建新文件 -m:僅修改mtime -t:后面可以接欲修改的時間格式為[[CC]YY]MMDDhhmm[.ss] modification time (mtime): 當該文件的“內容數據”變更時,就會升級這個時間!內容數據指的是文件的內容,而不是文件的屬性或權限喔 status time (ctime): 當該文件的“狀態 (status)”改變時,就會升級這個時間,舉例來說,像是權限與屬性被更改了,都會升級這個時間啊。 access time (atime): 當“該文件的內容被取用”時,就會升級這個讀取時間 (access)。舉例來說,我們使用cat去讀取/etc/rc.local,就會升級該文件的 atime 了 [root@testmin ~]# stat a.txt File: `a.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1442014 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-24 19:57:39.034679240 +0800 Modify: 2016-06-24 19:52:27.490673485 +0800 Change: 2016-06-24 19:57:39.034679240 +0800 [root@testmin ~]# touch -a a.txt [root@testmin ~]# stat a.txt File: `a.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1442014 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-24 19:59:16.942680244 +0800 Modify: 2016-06-24 19:52:27.490673485 +0800 Change: 2016-06-24 19:59:16.942680244 +0800
(9)cat命令:連接并顯示文本文件內容
cat [OPTION]... [FILE]... -E:將結尾的斷行字符$顯示出來 -n:顯示行號,連同空白行也會有行號 -b:列出行號,僅針對非空白行做行號顯示,空白行不標行號 [root@testmin ~]# cat -n install.log 1 Installing libgcc-4.4.7-4.el6.x86_64 2 warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 3 Installing setup-2.8.14-20.el6_4.1.noarch 4 Installing filesystem-2.4.30-3.el6.x86_64 5 Installing basesystem-10.0-4.el6.noarch 6 Installing ncurses-base-5.7-3.20090208.el6.x86_64 7 Installing tzdata-2013g-1.el6.noarch 8 Installing glibc-common-2.12-1.132.el6.x86_64 9 Installing nss-softokn-freebl-3.14.3-9.el6.x86_64 10 Installing glibc-2.12-1.132.el6.x86_64 11 Installing ncurses-libs-5.7-3.20090208.el6.x86_64 12 Installing bash-4.1.2-15.el6_4.x86_64 13 Installing libattr-2.4.44-7.el6.x86_64 14 Installing libcap-2.16-5.5.el6.x86_64 15 Installing zlib-1.2.3-29.el6.x86_64 16 Installing info-4.13a-8.el6.x86_64 17 Installing audit-libs-2.2-2.el6.x86_64 18 Installing popt-1.13-7.el6.x86_64 19 Installing chkconfig-1.3.49.3-2.el6_4.1.x86_64
(10)more命令:是一個基于vi編輯器的文本過濾器,以全屏的方式按頁顯示文本的內容,支持vi中的關鍵字定位操作
more [OPTIONS...] FILE... -d:顯示翻頁及退出提示 -c:不進行滾屏操作,每次刷新這個屏幕 -s:將多個空行壓縮成一行顯示 -u:禁止下劃線 +數字:從指定數字的行開始顯示 [root@testmin ~]# more install.log Installing libgcc-4.4.7-4.el6.x86_64 warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Installing setup-2.8.14-20.el6_4.1.noarch Installing filesystem-2.4.30-3.el6.x86_64 Installing basesystem-10.0-4.el6.noarch Installing ncurses-base-5.7-3.20090208.el6.x86_64 Installing tzdata-2013g-1.el6.noarch Installing glibc-common-2.12-1.132.el6.x86_64 Installing nss-softokn-freebl-3.14.3-9.el6.x86_64 [root@testmin ~]# more +3 install.log Installing setup-2.8.14-20.el6_4.1.noarch Installing filesystem-2.4.30-3.el6.x86_64 Installing basesystem-10.0-4.el6.noarch Installing ncurses-base-5.7-3.20090208.el6.x86_64
(11)less命令:作用與more十分相似,不同的是less允許用戶向前或向后瀏覽文件,more只能向前瀏覽
less [OPTIONS...] FILE... -e:文件內容顯示完畢后,自動退出; -f:強制顯示文件; -g:不加亮顯示搜索到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度; -l:搜索時忽略大小寫的差異; -N:每一行行首顯示行號; -s:將連續多個空行壓縮成一行顯示; -S:在單行顯示較長的內容,而不換行顯示; -x<數字>:將TAB字符顯示為指定個數的空格字符 [root@testmin ~]# less -N install.log 1 Installing libgcc-4.4.7-4.el6.x86_64 2 warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: 2 NOKEY 3 Installing setup-2.8.14-20.el6_4.1.noarch 4 Installing filesystem-2.4.30-3.el6.x86_64 5 Installing basesystem-10.0-4.el6.noarch 6 Installing ncurses-base-5.7-3.20090208.el6.x86_64 7 Installing tzdata-2013g-1.el6.noarch
(12)head命令:用于顯示文件的開頭的內容,默認顯示頭10行內容
head [OPTION]... [FILE]... -n<數字>:指定顯示頭部內容的行數; -c<字符數>:指定顯示頭部內容的字符數; -v:總是顯示文件名的頭信息; -q:不顯示文件名的頭信息。
(13)tail命令:用于輸入文件中的尾部內容,默認顯示指定文件的末尾10行
tail [OPTION]... [FILE]... -c #: 指定獲取后#字節 -n #: 指定獲取后#行 -f: 跟蹤顯示文件新追加的內容; [root@testmin ~]# tail -c 10 install.log CKAGES ***[root@testmin ~]# tail install.log Installing iwl4965-firmware-228.61.2.24-2.1.el6.noarch Installing rt61pci-firmware-1.2-7.el6.noarch Installing iwl3945-firmware-15.32.2.9-4.el6.noarch Installing ql2200-firmware-2.02.08-3.1.el6.noarch Installing rt73usb-firmware-1.8-7.el6.noarch Installing ipw2100-firmware-1.3-11.el6.noarch Installing ql23xx-firmware-3.03.27-3.1.el6.noarch Installing ipw2200-firmware-3.1-4.el6.noarch Installing rootfiles-8.1-6.1.el6.noarch *** FINISHED INSTALLING PACKAGES ***[root@testmin ~]#
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
(1)命令的執行結果狀態 成功 失敗 bash使用特殊變量$?保存最近一條命令的執行狀態結果: 0:成功 1-255:失敗 程序執行有兩類結果: 程序的返回值; 程序的執行狀態結果; (2)命令行展開 ~:展開為用戶的主目錄 ~USERNAME:展開為指定用戶的主目錄 {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑 /tmp/{a,b}=/tmp/a,/tmp/b /tmp/{tom,jerry}/hi=/tmp/tom/hi,/tmp/jerry/hi
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@testmin ~]# touch /tmp/{a,b}_{c,d} [root@testmin ~]# ls /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
[root@testmin tmp]# mkdir -p /tmp/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}} [root@testmin tmp]# tree 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
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
(1)文件的元素信息有:文件名、文件大小、文件權限、文件屬組、屬主、access time、modify time、change time等
(2)stat /PATH/TO/SOMEFILE:獲取指定文件的元數據
[root@testmin ~]# stat 123.txt File: `123.txt' Size: 3568 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768dInode: 1572878 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-18 22:02:11.185993594 +0800 Modify: 2016-06-18 22:02:11.185993594 +0800 Change: 2016-06-18 22:02:11.185993594 +0800
(3)touch命令:改變文件的時間戳
touch [OPTION]... FILE... -a: only atime -m: only mtime -t STAMP: [[CC]YY]MMDDhhmm[.ss] -c: 如果文件不存,則不予創建 [root@testmin ~]# stat 123.txt File: `123.txt' Size: 3568 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1572878 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-18 22:02:11.185993594 +0800 Modify: 2016-06-18 22:02:11.185993594 +0800 Change: 2016-06-18 22:02:11.185993594 +0800 [root@testmin ~]# touch 123.txt [root@testmin ~]# stat 123.txt File: `123.txt' Size: 3568 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1572878 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-26 22:54:19.238004986 +0800 Modify: 2016-06-26 22:54:19.238004986 +0800 Change: 2016-06-26 22:54:19.238004986 +0800
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
(1)alias:顯示當前shell進程所有可用的命令別名
alias NAME='VALUE'定義別名NAME,其相當于執行命令VALUE; 在命令行中定義的別名,僅對當前shell進程有效;如果想永久有效,要定義在配置文件中; 僅對當前用戶:~/.bashrc 對所有用戶有效:/etc/bashrc [root@testmin ~]# alias NAME='VALUE' [root@testmin ~]# alias alias NAME='VALUE' alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
(2)引用另一個命令的執行結果可以用管道符號
COMMAND1 | COMMAND2 | COMMAND3 |... [root@testmin ~]# ls /tmp | tr 'a-z' 'A-Z' A_C A_D B_C B_D MYLINUX WHO.OUT
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@testmin ~]#ls -d /var/l*[0-9]*[[:lower:]]
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@testmin ~]#ls -d /etc/[0-9]*[^0-9]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@testmin ~]#ls /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@testmin ~]# touch /tmp/tfile-"$(date +%F-%H-%M-%S)" [root@testmin ~]# ls /tmp a_c a_d b_c b_d mylinux tfile-2016-06-27-01-39-43 who.out
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@testmin ~]#cp -a /etc/p*[^0-9] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@testmin ~]#cp -a /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@testmin ~]#cp -a /etc/[1mn]*.conf /tmp/mytest3
原創文章,作者:7oup,如若轉載,請注明出處:http://www.www58058.com/18784
寫的很好,排版也很漂亮,加油