一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
cp:復制命令,copy的簡稱
復制選項詳解:
1、交互式復制:root用戶默認添加-i參數,普通用戶默認使用命令本身,root用戶也想使用命令本身需在命令前增加"\"
[root@bogon ~]# ls /tmp/ newfile [root@bogon ~]# cp -i /etc/fstab /tmp/newfile cp: overwrite ‘/tmp/newfile’? y [root@bogon ~]# cp /etc/fstab /tmp/newfile cp: overwrite ‘/tmp/newfile’? y [root@bogon ~]# \cp /etc/fstab /tmp/newfile
2、強制覆蓋:普通用戶默認存在此屬性,root增加此選項也無法強制,只能使用\cp方式強制
3、復制目錄
[root@bogon ~]# cp /boot/ /tmp/ cp: omitting directory ‘/boot/’ [root@bogon ~]# cp -r /boot/ /tmp/
4、復制鏈接文件而非指向的源文件
[root@bogon ~]# ls -l /tmp/ [root@bogon ~]# ln -s /etc/fstab /tmp/fstab [root@bogon ~]# ls -l /tmp/ total 0 lrwxrwxrwx. 1 root root 10 Sep 1 13:29 fstab -> /etc/fstab [root@bogon ~]# cp /tmp/fstab /tmp/fstab2 [root@bogon ~]# ls -l /tmp/ total 4 lrwxrwxrwx. 1 root root 10 Sep 1 13:29 fstab -> /etc/fstab -rw-r--r--. 1 root root 501 Sep 1 13:29 fstab2 [root@bogon ~]# cp -d /tmp/fstab /tmp/fstab3 [root@bogon ~]# ls -l /tmp/ total 4 lrwxrwxrwx. 1 root root 10 Sep 1 13:29 fstab -> /etc/fstab -rw-r--r--. 1 root root 501 Sep 1 13:29 fstab2 lrwxrwxrwx. 1 root root 10 Sep 1 13:30 fstab3 -> /etc/fstab
5、歸檔,復制的文件權限保持不變
-a:-dR --preserve=all, archive
復制目標詳解:
1、單源復制:DEST不存在
[root@bogon ~]# ls /tmp/ [root@bogon ~]# cp /etc/fstab /tmp/noDEST [root@bogon ~]# ls /tmp/ noDEST
2、單源復制:DEST存在為目錄
[root@bogon ~]# ls /tmp/new/ [root@bogon ~]# cp /etc/fstab /tmp/new/ [root@bogon ~]# ls /tmp/new/ fstab
3、單源復制:DEST存在為文件
[root@bogon ~]# touch /tmp/newfile [root@bogon ~]# ls /tmp/ newfile [root@bogon ~]# cp /etc/fstab /tmp/newfile cp: overwrite ‘/tmp/newfile’? y
4、多源復制:DIRECTORY存在
[root@bogon ~]# mkdir /tmp/new [root@bogon ~]# ls /tmp/new/ [root@bogon ~]# cp /etc/fstab /etc/passwd /tmp/new/ [root@bogon ~]# ls /tmp/new/ fstab passwd
5、多源復制:DIRECTORY不存在
[root@bogon ~]# ls /tmp/ [root@bogon ~]# cp /etc/passwd /etc/fstab /tmp/new cp: target ‘/tmp/new’ is not a directory
mv命令:move
mv命令:move mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE.. 常用選項: -i:交互式; -f:force
rm:刪除命令 remove
常用選項: -i:interactive -f:force -r: recursive 刪除目錄:rm -rf /PATH/ 危險操作:rm -rf /* 【kernel 2.6 之后對rm -rf /命令進行保護操作,但對添加*號的命令無能為力】
二、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
1、命令執行狀態返回值的介紹:
命令執行完成之后,其狀態返回值可以確認該命令是否正確執行,其結果保存于bash的特殊變量$?中; [root@bogon ~]# ls /etc/ > /dev/null 2>&1 [root@bogon ~]# echo $? 0 [root@bogon ~]# ls /etc/aaaa > /dev/null 2>&1 [root@bogon ~]# echo $? 2
2、命令執行狀態返回值的輸出結果:
命令執行正常:其返回值為 0 ; 命令非正常執行:其返回值范圍為1-255之間,具體值根據命令及其功能不同,結果各不相同;
3、命令行展開涉及的內容:
~:自動展開為用戶的家目錄,或指定的用戶的家目錄; [root@bogon etc]# ls /root/ anaconda-ks.cfg.zip [root@bogon etc]# cp ~/anaconda-ks.cfg.zip /tmp/ [root@bogon etc]# ls /tmp/ anaconda-ks.cfg.zip {}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑; [root@bogon ~]# ls /tmp/ [root@bogon ~]# touch /tmp/{a,b,c} [root@bogon ~]# ls /tmp/ a b c
三、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@bogon etc]# touch /tmp/{a,b}_{c,d} [root@bogon etc]# 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
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}}
四、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1、文件的元數據信息及意義:
文件系統中的數據是由兩部分存在合二為一的,即“元數據”和“數據”兩部分。其中元數據是對數據本身特征的描述;其包括:所有者、訪問權限、時間信息(創建時間、修改時間、改變時間)、數據塊分布等內容。
2、查看文件的元數據:
~]# ls -li /tmp/a 101637137 -rw-r--r--. 1 root root 0 Sep 1 18:03 /tmp/a [root@bogon ~]# stat /tmp/a File: ‘/tmp/a’ Size: 38 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 100663426 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-09-01 16:33:49.033484339 -0400 Modify: 2016-09-01 16:34:05.499485435 -0400 Change: 2016-09-01 16:34:05.502485435 -0400 Birth: -
3、修改文件的時間戳信息:
(1)修改Access time:
[root@bogon ~]# touch -a -t 01020304 /tmp/a [root@bogon ~]# stat /tmp/a File: ‘/tmp/a’ Size: 38 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 100663426 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-01-02 03:04:00.000000000 -0500 Modify: 2016-09-01 16:34:05.499485435 -0400 Change: 2016-09-01 16:36:39.748495703 -0400 Birth: -
(2)修改Modify time:
[root@bogon ~]# touch -m -t 06070809 /tmp/a [root@bogon ~]# stat /tmp/a File: ‘/tmp/a’ Size: 38 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 100663426 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-01-02 03:04:00.000000000 -0500 Modify: 2016-06-07 08:09:00.000000000 -0400 Change: 2016-09-01 16:38:13.679501956 -0400 Birth: -
五、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
1、命令別名:
#查看命令別名: ~]# alias #定義命令別名:使得輸入vi即可調用vim軟件進行文本編輯 ~]# alias vi=vim #解除別名定義: ~]# unalias vi
2、引用命令結果:
#一般被稱為命令替換 $(COMMAND)或`COMMAND` 樣例請見本練習第九題處;
六、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
~]# ls -d /var/l*[[:digit:]]*[a-z] /var/lmn123opq
七、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
~]# ls -d /etc/[[:digit:]]*[^[:digit:]] /etc/789abc456def # 下面使用!代替^貌似也可以實現,不知道在語法上或使用上是否有分別。 ~]# ls -d /etc/[[:digit:]]*[![:digit:]] /etc/789abc456def
八、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
~]# ls -d /etc/[^[:alpha:]][[:alpha:]]* /etc/1a2b3c4d /etc/1a2b3c4d5e
九、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
~]# touch /tmp/tfile-$(date +%F-%H-%M-%S) ~]# ls /tmp/ tfile-2016-09-01-17-49-03
十、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
~]# mkdir -p /tmp/mytest1 ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1 ~]# ls /tmp/mytest1/ pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python
十一、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
~]# ls -d /etc/*.d ~]# cp -r /etc/*.d /tmp/mytest2/ ~]# ls /tmp/mytest2/ bash_completion.d depmod.d init.d modules-load.d prelink.conf.d rc2.d rc6.d statetab.d xinetd.d binfmt.d dnsmasq.d ld.so.conf.d my.cnf.d profile.d rc3.d rc.d sudoers.d yum.repos.d chkconfig.d dracut.conf.d logrotate.d pam.d rc0.d rc4.d rsyslog.d sysctl.d cron.d grub.d modprobe.d popt.d rc1.d rc5.d rwtab.d tmpfiles.d
十二、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
~]# mkdir /tmp/mytest3 ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3/ ~]# ls /tmp/mytest3/ ld.so.conf libaudit.conf libuser.conf locale.conf logrotate.conf man_db.conf mke2fs.conf nsswitch.conf
原創文章,作者:N22-北京-狂神小蝦,如若轉載,請注明出處:http://www.www58058.com/42674
提兩個點:
1.多源復制那道題,為何會報提示
2.alias 用法 alias command=”command”
@馬哥教育:對于您的指點回復:1、多源復制在DIRECTORY不存在的情況下,就是應該報錯的,此結果在cp命令圖示處已經明確給出了。2、對于alias的確是應該添加引號的,但添加的一般都是單引號,您所給出的雙引號,個人認為某些時候可能略有不妥。本題未添加任何引號,測試是通過的。的確是大意了,以后會多加注意的!