第一題:Linux上的文件管理類命令都有哪些,其常用的使用方法及相關示例演示。
文件管理類的命令有:
cd,ls,touch,mldir,cp,mv,rm,rmdir,pwd,tree
使用方法
(1),cd命令用來切換工作目錄至dirname。其中dirName表示法可為絕對路徑或相對路徑。
常用格式:
cd #進入用戶家目錄 cd~ #進入用戶家目錄 cd- #返回進入此目錄之前的目錄 cd.. #返回上級目錄 cd../.. #返回上兩級目錄
(2),ls:
ls命令就是list的縮寫,缺省下ls用來顯示出當前目錄的清單,如果ls指定其他目錄,那么就會顯示指定目錄里的文件及文件夾清單。通過ls
命令不僅可以查看linux文件夾包含的文件而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。
ls #顯示目錄下的文件
[root@localhost tmp]# ls / bin dev home lib64 mnt proc run srv test usr boot etc lib media opt root sbin sys tmp var [root@localhost tmp]# -a #顯示目錄下的隱藏文件 [root@localhost ~]# ls [root@localhost ~]# ls -a . .bash_history .bash_profile .cache .cshrc .tcshrc .. .bash_logout .bashrc .config .local .viminfo [root@localhost ~]# -A #同-a,但不列出“.”(表示當前目錄)和“..”(表示當前目錄的父目錄) [root@localhost ~]# ls -a . .bash_history .bash_profile .cache .cshrc .tcshrc .. .bash_logout .bashrc .config .local .viminfo [root@localhost ~]# ls -A .bash_history .bash_profile .cache .cshrc .tcshrc .bash_logout .bashrc .config .local .viminfo [root@localhost ~]#
-l #長格式顯示文件,顯示文件的詳細屬性信息,屬主、屬組、文件大小、權限等
[root@localhost ~]# ls -l / total 32 lrwxrwxrwx. 1 root root 7 Jun 22 19:56 bin -> usr/bin dr-xr-xr-x. 4 root root 4096 Jun 24 21:30 boot drwxr-xr-x. 20 root root 3320 Jul 9 02:07 dev drwxr-xr-x. 144 root root 8192 Jul 9 02:06 etc drwxr-xr-x. 5 root root 39 Jul 4 10:43 home lrwxrwxrwx. 1 root root 7 Jun 22 19:56 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Jun 22 19:56 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Aug 12 2015 media drwxr-xr-x. 2 root root 6 Aug 12 2015 mnt drwxr-xr-x. 4 root root 28 Jul 5 06:55 opt dr-xr-xr-x. 437 root root 0 Jul 9 02:06 proc dr-xr-x---. 5 root root 4096 Jul 9 02:28 root drwxr-xr-x. 39 root root 1180 Jul 9 02:07 run lrwxrwxrwx. 1 root root 8 Jun 22 19:56 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Aug 12 2015 srv dr-xr-xr-x. 13 root root 0 Jul 9 02:06 sys drwxr-xr-x. 2 root root 20 Jun 27 10:03 test rwxrwt. 10 root root 4096 Jul 9 03:23 tmp r-xr-x. 13 root root 4096 Jun 22 19:56 usr r-xr-x. 21 root root 4096 Jul 9 02:06 var [root@localhost ~]#
-h # –human-readable ,配合 -l 使用 , 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
t@localhost ~]# ls -lh / l 32K wx. 1 root root 7 Jun 22 19:56 bin -> usr/bin r-xr-x. 4 root root 4.0K Jun 24 21:30 boot r-xr-x. 20 root root 3.3K Jul 9 02:07 dev r-xr-x. 144 root root 8.0K Jul 9 02:06 etc r-xr-x. 5 root root 39 Jul 4 10:43 home rwxrwx. 1 root root 7 Jun 22 19:56 lib -> usr/lib rwxrwx. 1 root root 9 Jun 22 19:56 lib64 -> usr/lib64 r-xr-x. 2 root root 6 Aug 12 2015 media r-xr-x. 2 root root 6 Aug 12 2015 mnt drwxr-xr-x. 4 root root 28 Jul 5 06:55 opt r-xr-x. 437 root root 0 Jul 9 02:06 proc r-x---. 5 root root 4.0K Jul 9 02:28 root r-xr-x. 39 root root 1.2K Jul 9 02:07 run rwxrwx. 1 root root 8 Jun 22 19:56 sbin -> usr/sbin r-xr-x. 2 root root 6 Aug 12 2015 srv r-xr-x. 13 root root 0 Jul 9 02:06 sys r-xr-x. 2 root root 20 Jun 27 10:03 test rwxrwt. 10 root root 4.0K Jul 9 03:23 tmp r-xr-x. 13 root root 4.0K Jun 22 19:56 usr r-xr-x. 21 root root 4.0K Jul 9 02:06 var t@localhost ~]#
-d # –directory,配合 -l 使用,顯示目錄本身屬性而非其內部的文件列表
t@localhost tmp]# ls -ld rwxrwt. 10 root root 4096 Jul 9 03:35 . t@localhost tmp]# ls -ld /usr/ r-xr-x. 13 root root 4096 Jun 22 19:56 /usr/ t@localhost tmp]#
-r # 逆序顯示
t@localhost ~]# ls / bin dev home lib64 mnt proc run srv test usr boot etc lib media opt root sbin sys tmp var [root@localhost ~]# ls -r / var tmp sys sbin root opt media lib etc boot usr test srv run proc mnt lib64 home dev bin [root@localhost ~]#
-R # 遞歸顯示
[root@localhost tmp]# ls -R /tmp/ /tmp/: mylinux /tmp/mylinux: bin boot dev etc lib lib64 proc sbin sys tmp usr var /tmp/mylinux/bin: /tmp/mylinux/boot: grub /tmp/mylinux/boot/grub: /tmp/mylinux/dev: /tmp/mylinux/etc: rc.d sysconfig /tmp/mylinux/etc/rc.d: init.d /tmp/mylinux/etc/rc.d/init.d: /tmp/mylinux/etc/sysconfig: network-soripts
(3),touch :創建新的空文件或者修改文件的訪問時間和修改時間為當前時間
touch #創建一個新的空文件
-c #知道文件路徑不存在時不予創建新的文件
[root@localhost ~]# ls [root@localhost ~]# touch test.txt [root@localhost ~]# ls test.txt [root@localhost ~]# cat test.txt [root@localhost ~]#
-a #修改文件的訪問時間
[root@localhost ~]# stat test.txt File: ‘test.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 73007616 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2017-07-09 04:22:05.044609937 -0400 Modify: 2017-07-09 04:20:21.910628548 -0400 Change: 2017-07-09 04:22:05.044609937 -0400 Birth: - [root@localhost ~]#
-m #修改文件的修改時間
[root@localhost ~]# stat test.txt File: ‘test.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 73007616 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2017-07-09 04:22:05.044609937 -0400 Modify: 2017-07-09 04:20:21.910628548 -0400 Change: 2017-07-09 04:22:05.044609937 -0400 Birth: - [root@localhost ~]# touch -m test.txt [root@localhost ~]# stat test.txt File: ‘test.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 73007616 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2017-07-09 04:22:05.044609937 -0400 Modify: 2017-07-09 04:22:41.660248300 -0400 Change: 2017-07-09 04:22:41.660248300 -0400 Birth: - [root@localhost ~]#
-t STAMP #修改文件的指定時時間,改參數是修改修改時間的地址
(4),mkdir :建立新目錄
mkdir #創建新目錄
[root@localhost ~]# ls test.txt text [root@localhost ~]# mkdir test [root@localhost ~]# ls test test.txt text [root@localhost ~]# -p #創建遞歸目錄, 可一次創建多層目錄 [root@localhost ~]# rm -rf * [root@localhost ~]# ls [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# mkdir -p ./a/b/c/d/e/f [root@localhost ~]# tree . └── a └── b └── c └── d └── e └── f 6 directories, 0 files [root@localhost ~]# ^C [root@localhost ~]#
-m #指定創建文件的權限
[root@localhost ~]# mkdir -m 222 test [root@localhost ~]# ll total 0 drwxr-xr-x. 3 root root 14 Jul 9 04:34 a d-w--w--w-. 2 root root 6 Jul 9 04:36 test [root@localhost ~]#
(5),cp :復制命令
cp 用法格式
~]# cp [-adfilprsu] 源文件(source) 目的文件(destination) ~]# cp [options] source1 source2 source3 .... directory
-a :相當于 -pdr 的意思,用于實現歸檔
[root@localhost ~]# cp -a /etc/ /tmp/ [root@localhost ~]# ls /tmp/etc/ abrt gssproxy profile adjtime hba.conf profile.d aliases highlight protocols aliases.db host.conf pulse alsa hostname purple alternatives hosts python amanda hosts.allow qemu-ga anacrontab hosts.deny qemu-kvm asound.conf hp radvd.conf at.deny idmapd.conf rc0.d at-spi2 init.d rc1.d audisp inittab rc2.d audit inputrc rc3.d autofs.conf ipa rc4.d autofs_ldap_auth.conf iproute2 rc5.d auto.master ipsec.conf rc6.d
-d :若來源文件為鏈接文件的屬性(link file),則復制鏈接文件屬性而非檔案本身;
-f :為強制 (force) 的意思,若有重復或其他疑問時,不會詢問使用者,而強制復制;
-i :若目的文件(destination)已經存在時,在覆蓋時會先詢問是否真的動作!
-l :進行硬式連結 (hard link) 的連結文件建立,而非復制文件本身;
-p :連同文件的屬性一起復制過去,而非使用默認屬性;
-r :遞歸持續復制,用于目錄的復制行為;
[root@localhost ~]# cp -r abc/ /tmp/ [root@localhost ~]# tree /tmp/abc /tmp/abc ├── abc.txt └── abc.txtls 0 directories, 2 files [root@localhost ~]# tree abc/ abc/ ├── abc.txt └── abc.txtls 0 directories, 2 files [root@localhost ~]#
(6),mv :移動文件
-f #force 強制的意思,強制直接移動而不詢問;
-i #若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u #若目標文件已經存在,且 source 比較新,才會更新 (update)
移動文件
[root@localhost ~]# mv abc.txt /tmp/ [root@localhost ~]# ls /tmp/ abc.txt [root@localhost ~]# ls a [root@localhost ~]#
文件改名
[root@localhost tmp]# ls abc.txt [root@localhost tmp]# mv abc.txt test.txt [root@localhost tmp]# ls test.txt [root@localhost tmp]#
(7),rm :刪除文件
-f #就是 force 的意思,強制移除;
[root@localhost tmp]# touch abc.txt [root@localhost tmp]# ls abc.txt [root@localhost tmp]# rm -f abc.txt [root@localhost tmp]# mkdir test [root@localhost tmp]# rm -rf test/ [root@localhost tmp]# ls [root@localhost tmp]#
-i #互動模式,在刪除前會詢問使用者是否動作
[root@localhost tmp]# rm -i abc.txt rm: remove regular empty file ‘abc.txt’? n [root@localhost tmp]# ls abc.txt [root@localhost tmp]# rm -i abc.txt rm: remove regular empty file ‘abc.txt’? y [root@localhost tmp]# ls [root@localhost tmp]#
-r #遞歸刪除!最常用在目錄的刪除了
[root@localhost tmp]# tree . └── a └── b └── c └── d └── e └── f 6 directories, 0 files [root@localhost tmp]# rm -r a/ rm: descend into directory ‘a/’? y rm: descend into directory ‘a/b’? y rm: descend into directory ‘a/b/c’? y rm: descend into directory ‘a/b/c/d’? y rm: descend into directory ‘a/b/c/d/e’? y rm: remove directory ‘a/b/c/d/e/f’? y rm: remove directory ‘a/b/c/d/e’? y rm: remove directory ‘a/b/c/d’? y rm: remove directory ‘a/b/c’? y rm: remove directory ‘a/b’? y rm: remove directory ‘a/’? y [root@localhost tmp]# y failed to load config file: No such file or directory bash: y: command not found... [root@localhost tmp]# ls [root@localhost tmp]#
(8),rmdir :僅可以刪除空目錄
[root@localhost ~]# tree a/ a/ └── b └── c └── d └── e └── f 5 directories, 0 files [root@localhost ~]# rmdir a/ rmdir: failed to remove ‘a/’: Directory not empty [root@localhost ~]# rmdir a/b/c/d/e/f [root@localhost ~]# tree a/ a/ └── b └── c └── d └── e 4 directories, 0 files [root@localhost ~]#
-p #刪除上級空目錄
[root@localhost ~]# tree . ├── a │ └── b │ └── c │ └── d │ └── e └── test 6 directories, 0 files [root@localhost ~]# rmdir -p a/b/c/d/e/ [root@localhost ~]# ls test [root@localhost ~]#
(9),pwd :顯示當前的所工作的路徑
pwd #查看當前所在的路徑
[root@localhost Desktop]# pwd /home/danry/Desktop [root@localhost Desktop]#
-P #顯當前所在位置的完整的路徑
[root@localhost mail]# pwd -P /var/spool/mail [root@localhost mail]# ls -l /var/mail lrwxrwxrwx. 1 root root 10 Jun 22 19:56 /var/mail -> spool/mail [root@localhost mail]# (10),tree
第二題: bash的工作特性之命令執行狀態的返還值和命令行展開所涉及到的內容及示例演示。
命令或程序的返還值:
命令執行狀態返回值范圍:0-255
其中0代表命令執行結果的正確,1-255代表命令執行結果的錯誤
[root@localhost tmp]# ls [root@localhost tmp]# echo $? 0 [root@localhost tmp]# asdf failed to load config file: No such file or directory bash: asdf: command not found... [root@localhost tmp]# echo $? 127 [root@localhost tmp]#
命令行展開;
以某些bash能夠解釋的符號來代替命令中的某些參數。
~:展開為用戶的家目錄;
例:切換至家目錄
cd ~;pwd
/root
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑;
例:在/tmp/d目錄下創建f1,f2,f3三個文件
ttouch /tmp/d/f{1,2,3}
[root@localhost tmp]# touch /tmp/d/f{1,2,3} [root@localhost tmp]# tree . └── d ├── f1 ├── f2 └── f3 1 directory, 3 files [root@localhost tmp]#
第三題:請使用一下命令行展開功能來完成一下聯系:
(1)、創建/tmp目錄下的: a_c,a_d,b_c,b_d
mkdir -v /tmp/{a,b}_{c,d}
[root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d} mkdir: created directory ‘/tmp/a_c’ mkdir: created directory ‘/tmp/a_d’ mkdir: created directory ‘/tmp/b_c’ mkdir: created directory ‘/tmp/b_d’ [root@localhost ~]# tree /tmp/ /tmp/ ├── a_c ├── a_d ├── b_c └── b_d 4 directories, 0 files [root@localhost ~]#
(2)、創建、tmp/mylinux目錄下的:
mylinux ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-soripts ├── lib │ └── modiles ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── log ├── look └── run
mkdir -p
/tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-soripts},lib/modiles,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{look,log,run}}
[root@localhost ~]# mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-soripts},lib/modiles,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{look,log,run}} [root@localhost ~]# tree /tmp/ /tmp/ └── mylinux ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-soripts ├── lib │ └── modiles ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── log ├── look └── run 25 directories, 0 files [root@localhost ~]#
第四題:文件的數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
元數據包括:文件的大小,權限,屬主屬組,時間戳,inode等屬性。
stat #查看元數據信息
[root@localhost tmp]# stat d/f1 File: ‘d/f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 170 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ UNKNOWN) Gid: ( 0/ UNKNOWN) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2017-07-09 10:03:13.648705432 +0000 Modify: 2017-07-09 10:03:13.648705432 +0000 Change: 2017-07-09 10:03:13.648705432 +0000 Birth: - [root@localhost tmp]#
access time:訪問時間,atime,即:通過cat,more等讀取其內容。
modify time:修改時間,mtime,即:改變文件內容。
change time:改變時間,ctime,即:元數據發生改變。
原創文章,作者:N27_Danry,如若轉載,請注明出處:http://www.www58058.com/79627
不錯,非常認真,再接再勵。