一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
文件管理命令:cp,mv,rm
1、cp命令
功能說明:復制copy
語法格式:
單源復制: cp [OPTION]… [-T] SOURCE DEST
多源復制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
單源復制:如果DEST不存在,則事先創建此文件,并復制源文件的數據流到DEST中;
如果DEST存在:
如果DEST是非目錄文件,則覆蓋目標文件;
如果DEST是目錄文件,則現在DEST目錄下創建一個與源文件同名的文件,并復制其數據流;
常用參數:
-i:交互式復制,即覆蓋之前提醒用戶確認
-f:強制覆蓋目錄文件
-r,-R:遞歸復制目錄
-d:復制符號鏈接文件本身,而非其指向的源文件
-a:-dR –preserve=all,archive,用于實現歸檔
–preserve=
mode:權限
ownership:屬主和屬組
timestamps:時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述所有屬性
示例:
[root@joylin test]# cp /tmp/passwd ./ [root@joylin test]# ll passwd -rw-r--r--. 1 root root 2229 2月 16 16:05 passwd [root@joylin test]# cp -p /tmp/passwd ./passwd2 [root@joylin test]# ll /tmp/passwd ./passwd* -rw-r--r--. 1 root root 2229 2月 16 16:05 ./passwd -rw-r--r--. 1 root root 2229 2月 16 15:59 ./passwd2 -rw-r--r--. 1 root root 2229 2月 16 15:59 /tmp/passwd [root@joylin test]# cp /etc/passwd /test/ [root@joylin test]# ln -s ./passwd /tmp/passwd_slink [root@joylin test]# ln ./passwd /tmp/passwd_hlink [root@joylin test]# cp /etc/passwd /tmp/ [root@joylin test]# ll /tmp/passwd* -rw-r--r--. 1 root root 2229 2月 16 15:59 /tmp/passwd -rw-r--r--. 2 root root 2229 2月 16 15:58 /tmp/passwd_hlink lrwxrwxrwx. 1 root root 8 2月 16 15:58 /tmp/passwd_slink -> ./passwd [root@joylin test]# cp /tmp/passwd_slink ./ -f [root@joylin test]# ll passwd -rw-r--r--. 2 root root 2229 2月 16 15:58 passwd [root@joylin test]# cp -d /tmp/passwd_slink ./passwd_slink2 [root@joylin test]# ll passwd -rw-r--r--. 2 root root 2229 2月 16 15:58 passwd [root@joylin test]# ll passwd* -rw-r--r--. 2 root root 2229 2月 16 15:58 passwd -rw-r--r--. 1 root root 2229 2月 16 16:02 passwd_slink lrwxrwxrwx. 1 root root 8 2月 16 16:02 passwd_slink2 -> ./passwd
2、mv命令
功能說明:移動或重命名文件 move (rename) files
語法格式:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用選項:
-i:交互式
-f:force
示例:
[root@joylin test]# mv ./passwd3 /tmp/ #移動文件 [root@joylin test]# touch passwd3 [root@joylin test]# mv ./passwd3 /tmp/ mv:是否覆蓋"/tmp/passwd3"? C [root@joylin test]# mv ./passwd3 /tmp/ -f [root@joylin test]# ll -d /tmp/11b/ #移動目錄 drwxr-xr-x. 2 root root 6 2月 12 16:16 /tmp/11b/ [root@joylin test]# mv /tmp/11b/ /test/ [root@joylin test]# ls -d /test/11b/ /test/11b/ [root@joylin test]# mv /tmp/passwd2 /tmp/passwd #重命名文件 [root@joylin test]# ll /tmp/passwd -rw-r--r--. 1 root root 2229 2月 16 15:59 /tmp/passwd [root@joylin test]# mv 11b/ 1111b #重命名目錄 [root@joylin test]# ll -d 1111b/ drwxr-xr-x. 2 root root 6 2月 12 16:16 1111b/
3、rm命令
功能說明:刪除文件或目錄remove files or directories
語法格式:rm [OPTION]… FILE…
常用參數:
常用選項:
-i:interactive 交互式
-f:force 強制刪除
-r:recursive 遞歸刪除
刪除目錄:rm -rf /PATH/TO/DIR
危險操作:rm -rf /*
注意:所有不用的文件建議不要直接刪除,而是移動至某個專用的目錄(模擬回收站)
示例:
[root@joylin test]# touch rm.txt [root@joylin test]# rm rm.txt rm:是否刪除普通空文件 "rm.txt"?n [root@joylin test]# touch rm.txt -f [root@joylin test]# mkdir software [root@joylin test]# rm ./software/ rm: 無法刪除"./software/": 是一個目錄 [root@joylin test]# rm -rf ./software/
二、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令執行的狀態結果:
bash通過狀態返回值來輸出此結果
成功:0
失?。?-255
命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中;
命令正常執行時,有的還回有命令返回值;
根據命令及其功能不同,結果各不相同;
示例:
[root@joylin ~]# useradd gentoo [root@joylin ~]# echo $? 0 [root@joylin ~]# useradd gentoo useradd:用戶“gentoo”已存在 [root@joylin ~]# echo $? 9 [root@joylin ~]# lss bash: lss: 未找到命令... 相似命令是: 'ls' [root@joylin ~]# echo $? 127
三、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
演示:
[root@joylin ~]# touch /tmp/{a_c,a_d,b_c,b_d} [root@joylin ~]# ls -l /tmp/a_* -rw-r--r--. 1 root root 0 2月 21 13:53 /tmp/a_c -rw-r--r--. 1 root root 0 2月 21 13:53 /tmp/a_d [root@joylin ~]# ls -l /tmp/b_* -rw-r--r--. 1 root root 0 2月 21 13:53 /tmp/b_c -rw-r--r--. 1 root root 0 2月 21 13:53 /tmp/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@joylin ~]# mkdir -p /tmp/mylinux/{bin,boot,dev,etc,lib,lib64,proc,sbin,sys,tmp,usr,var} [root@joylin ~]# ls /tmp/mylinux/ bin boot dev etc lib lib64 proc sbin sys tmp usr var [root@joylin ~]# mkdir -p /tmp/mylinux/boot/grub [root@joylin ~]# mkdir -p /tmp/mylinux/etc/rc.d/init.d [root@joylin ~]# mkdir -p /tmp/mylinux/etc/sysconfig/network-scripts [root@joylin ~]# mkdir -p /tmp/mylinux/lib/modules [root@joylin ~]# mkdir -p /tmp/mylinux/usr/local/{bin,sbin} [root@joylin ~]# mkdir -p /tmp/mylinux/var/{lock,log,run} [root@joylin ~]# tree -L 2 /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ └── sysconfig ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local └── var ├── lock ├── log └── run 20 directories, 0 files
四、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1、元數據信息包含:
File:文件名
Size:表示文件數據流大小
Blocks:數據塊
IO Block:IO塊
硬鏈接數:
Access:用戶對文件訪問的權限
Uid:屬主
Gid:屬組
Access time:訪問文件時間
Modify time:更改時間
Change time:改動時間
2、查看文件的元數據:stat命令
功能說明:stat – display file or file system status
語法格式:stat [OPTION]… FILE…
文件:包括元數據(metadata)和數據(data)
時間戳:
Access: 2017-02-06 19:12:02.501490477 +0800
Modify: 2017-02-08 19:51:36.672097524 +0800
Change: 2017-02-08 19:51:36.672097524 +0800
示例:
[root@joylin ~]# stat /test/ 1 1a 22 a2 aaa b ff 11 1_a 333 a333 aaaa bb passwd 1111b/ 1ab a aa a b BB rm.txt 122 1b A aA a,b cc software/ 133 1c a1 AA aBBB data [root@joylin ~]# stat /test/passwd 文件:"/test/passwd" 大?。?234 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:100837381 硬鏈接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:default_t:s0 最近訪問:2017-02-16 19:29:24.104960293 +0800 最近更改:2017-02-16 19:29:24.104960293 +0800 最近改動:2017-02-16 19:29:24.110960628 +0800 創建時間:-
3、修改文件時間戳:touch命令
功能說明:touch – change file timestamps
語法格式:touch [OPTION]… FILE…
-c:指定的文件路徑不存在時不予創建
-a:僅修改access times
-m:僅修改modify times
-t STAM:[[CC]YY]MMDDhhmm[.ss]
示例:
[root@joylin ~]# touch -a -t 201701161900 /test/passwd [root@joylin ~]# stat /test/passwd 文件:"/test/passwd" 大小:2234 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:100837381 硬鏈接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:default_t:s0 最近訪問:2017-01-16 19:00:00.000000000 +0800 最近更改:2017-02-16 19:29:24.104960293 +0800 最近改動:2017-02-21 14:26:53.314521653 +0800 創建時間:- [root@joylin ~]# touch -m -t 201701161930 /test/passwd [root@joylin ~]# stat /test/passwd 文件:"/test/passwd" 大?。?234 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:100837381 硬鏈接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:default_t:s0 最近訪問:2017-01-16 19:00:00.000000000 +0800 最近更改:2017-01-16 19:30:00.000000000 +0800 最近改動:2017-02-21 14:28:03.580089027 +0800 創建時間:-
五、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
1、查看別名:alias
定義別名:alias 別名=‘COMMAND’
注意:僅對當前的shell有效
撤銷別名:unalias 別名
示例:
[root@joylin ~]# alias ##查看別名 alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' 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 vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@joylin ~]# alias cl='clear' [root@joylin ~]# echo "alias cl='clear'" >>/etc/bashrc [root@joylin ~]# source /etc/bashrc [root@joylin ~]# alias |grep cl alias cl='clear' [root@joylin ~]# tail -1 /etc/bashrc alias cl='clear' [root@joylin ~]# unalias cl
2、引用命令的執行結果:
$(COMMAND)或`COMMAND`
示例:
[root@joylin ~]# which find /usr/bin/find [root@joylin ~]# ls -l `which find` -rwxr-xr-x. 1 root root 199200 11月 20 2015 /usr/bin/find [root@joylin ~]# ls -l $(which find) -rwxr-xr-x. 1 root root 199200 11月 20 2015 /usr/bin/find
六、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
演示:
[root@joylin test]# touch /var/1_a [root@joylin test]# ls -d /var/1?[a-z] /var/1_a [root@joylin test]# mkdir /var/11b [root@joylin test]# ls -d /var/1?[a-z] /var/11b /var/1_a [root@joylin test]# ls -d /var/1?[[:lower:]] /var/11b /var/1_a [root@joylin test]# ls /var/1?[[:lower:]] /var/1_a /var/11b:
七、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
演示:
[root@joylin test]# touch /etc/1ab [root@joylin test]# ls -d /etc/[0-9]*[^0-9] /etc/1ab 或者 [root@joylin test]# ls -d /etc/[[:digit:]]*[^[:digit:]] /etc/1ab
八、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
演示:
[root@joylin test]# ls -d /etc/[^a-zA-Z]* /etc/1ab
九、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
演示:
[root@joylin ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S) [root@joylin ~]# ls /tmp/tfile-2017-02-21-14-46-34 /tmp/tfile-2017-02-21-14-46-34
十、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
演示:
[root@joylin ~]# mkdir /tmp/mytest1 [root@joylin ~]# ls -d /etc/p*[^0-9] /etc/pam.d /etc/pki /etc/postfix /etc/profile.d /etc/passwd /etc/plymouth /etc/ppp /etc/protocols /etc/passwd- /etc/pm /etc/prelink.conf.d /etc/pulse /etc/pbm2ppa.conf /etc/pnm2ppa.conf /etc/printcap /etc/purple /etc/pinforc /etc/popt.d /etc/profile /etc/python [root@joylin ~]# cp -r /etc/p*[^0-9] /tmp/mytest1/ [root@joylin ~]# ls -d /tmp/mytest1/ /tmp/mytest1/ [root@joylin ~]# ls /tmp/mytest1/ pam.d pinforc pnm2ppa.conf prelink.conf.d protocols passwd pki popt.d printcap pulse passwd- plymouth postfix profile purple pbm2ppa.conf pm ppp profile.d python
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
演示:
[root@joylin ~]# mkdir /tmp/mytest2 [root@joylin ~]# ls -d /etc/*.d /etc/auto.master.d /etc/ld.so.conf.d /etc/rc4.d /etc/bash_completion.d /etc/libibverbs.d /etc/rc5.d /etc/binfmt.d /etc/logrotate.d /etc/rc6.d /etc/cgconfig.d /etc/modprobe.d /etc/rc.d /etc/chkconfig.d /etc/modules-load.d /etc/request-key.d /etc/cron.d /etc/my.cnf.d /etc/rsyslog.d /etc/depmod.d /etc/oddjobd.conf.d /etc/rwtab.d /etc/dnsmasq.d /etc/pam.d /etc/sane.d /etc/dracut.conf.d /etc/popt.d /etc/setuptool.d /etc/exports.d /etc/prelink.conf.d /etc/statetab.d /etc/gdbinit.d /etc/profile.d /etc/sudoers.d /etc/grub.d /etc/rc0.d /etc/sysctl.d /etc/init.d /etc/rc1.d /etc/tmpfiles.d /etc/ipsec.d /etc/rc2.d /etc/xinetd.d /etc/krb5.conf.d /etc/rc3.d /etc/yum.repos.d [root@joylin ~]# ls -d /etc/*.d|wc -l 45 [root@joylin ~]# cp -r /etc/*.d /tmp/mytest2 [root@joylin ~]# ls -d /tmp/mytest2/*|wc -l 45
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
演示:
[root@joylin ~]# ls /etc/[lmn]*.conf /etc/ld.so.conf /etc/logrotate.conf /etc/nfsmount.conf /etc/libaudit.conf /etc/man_db.conf /etc/nsswitch.conf /etc/libuser.conf /etc/mke2fs.conf /etc/ntp.conf /etc/locale.conf /etc/mtools.conf /etc/numad.conf [root@joylin ~]# ls /etc/[lmn]*.conf|wc -l 12 [root@joylin ~]# mkdir /tmp/mytest3 [root@joylin ~]# cp /etc/[lmn]*.conf /tmp/mytest3/ [root@joylin ~]# ls /tmp/mytest3/* |wc -l 12
原創文章,作者:jaylin,如若轉載,請注明出處:http://www.www58058.com/69663
如果對于某一個命令參數無法描述的清楚,請大膽的用man