1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
cp:復制
CP SRC DEST
SRC是源文件:
如果目錄不存在,新建DEST,并將SRC的內容填充到DEST;
如果目錄存在:
如果DEST是文件,將SRC中的內容覆蓋至DEST兩種
此時建議是用-i選項:
如果DEST是目錄,則直接原名復制。
CP SRC… DEST
SRC…..:多個文件
DEST必須存在,且為目錄,其他情形會報錯。
CP SRC DEST
SRC是目錄:
則使用選項:-r (遞歸);
如果DEST目錄不存在,新建DEST目錄,并將SRC的內容復制到新建的DEST。
如果DEST存在:
必須是目錄,則同名復制。
相關參數:
-a:歸檔保留所有屬性
-r/-R: 遞歸
-p:保留mode,ownership,timestamp
-f:如果目標文件無法打開,則使用-f強制cp
-i:開啟交互式界面
示例演示:
cp:
[root@localhost etc]# ll aa.sh
-rwxrwxrwx. 1 root root 0 Jul 7 22:01 aa.sh
[root@localhost etc]# cp aa.sh /root
[root@localhost etc]# ll /root/aa.sh
-rwxr-xr-x. 1 root root 0 Jul 7 22:02 /root/aa.sh
cp -a:
[root@localhost etc]# ll aa.sh
-rwxrwxrwx. 1 root root 0 Jul 7 22:01 aa.sh
[root@localhost etc]# cp -a aa.sh /dev
[root@localhost etc]# ll /dev/aa.sh
-rwxrwxrwx. 1 root root 0 Jul 7 22:01 /dev/aa.sh
cp -r:
[root@localhost ~]# ls test
a.txt b.txt c.txt test_for_root test_for_user1.sh
[root@localhost ~]# cp -r test /etc
[root@localhost ~]# ls /etc/test
a.txt b.txt c.txt test_for_root test_for_user1.sh
mv:移動
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
相關參數:
-i:交互式,每次移動,系統都會提示是否需要這樣做;
-f:強制執行
-r:遞歸,移動文件夾以及文件夾內的所有內容
實例參照cp,其實差不多。
rm:刪除
rm [OPTION]… FILE…
相關參數:
-i:交互式,每次移動,系統都會提示是否需要這樣做;
-f:強制執行
-r:遞歸,移動文件夾以及文件夾內的所有內容
可以利用rm -rf 來刪除目錄下的所有子目錄,包括文件。
實例參照cp,其實差不多。
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令行展開;
~:展開為當前用戶的主目錄;
~ username:展開為指定用戶的家目錄;
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑;
/tmp/{a,b}=/tmp/a,/tmp/b
命令的執行狀態結果
邏輯上只有兩種:成功,失敗
$?:存儲最近一次執行結果
利用echo $?查看。
(0:成功,1-255:失敗)
實例:
[chenchen@localhost ~]$ echo 'this is a good begging!' &> /dev/null
[chenchen@localhost ~]$ echo $?
0
[chenchen@localhost ~]$ echp 'this is a good begging!' &> /dev/null
[chenchen@localhost ~]$ echo $?
127
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
[chenchen@localhost ~]$ touch /tmp/{a,b}_{c,d}
[chenchen@localhost ~]$ ls /tmp | egrep '\<.\_.\>'
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
[chenchen@localhost ~]$ mkdir -pv /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}}
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
權限:定義文件屬主,屬組以及其他用戶的權限(可讀?可寫?可執行?)
屬主:文件的歸屬用戶;
屬組:文件的歸屬用戶所在的群組;
大小:文件大?。?/p>
Modify time:最后一次文件的修改時間;
查看方式:ls -l 或者 ll
[chenchen@localhost ~]$ ls -l
[chenchen@localhost ~]$ ll
時間戳修改:
Access:最后訪問時間
Modify:最后修改時間
Change:狀態更改時間(由系統維護,無法隨意修改)
touch -a :僅更新Access time(同時更新Change為current time)
touch -m:僅更新Modify time(同時更新Change為current time)
touch -c:不創建新文件
touch -t:使用指定的時間更新時間戳(僅更改Access time與Modify time,Change time更新為current time)
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
定義別名:alias [name]=‘源命令’
實例:
alias grep = 'grep –color = auto'
定義的別名僅對當前shell進程有效。
如果想永久有效,需要定義配置文件。
對當前用戶有效:~/.bashrc
對所有用戶有效:/etc/bashrc
在配置文件中定義alias之后,需要重新加載文件:利用source命令。
可使用管道符“|”來引用其他命令的執行結果:
實例:
ifconfig | egrep -o '\<addr:.{1,3}(\.).{1,3}(\.).{1,3}(\.).{1,3}\>' | cut -d: -f2
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@localhost ~]# ls /var | grep '^l.\+\?[[:digit:]]\+.\+\?[a-z]$'
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@localhost ~]# ls /etc | grep '^[[:digit:]].\+\?[^[:digit:]]$'
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@localhost ~]# ls /etc | grep '^[^[:alpha:]].\+\?[[:alpha:]].\+\?'
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost ~]# touch /tmp/title-"$(date +%Y-%m-%d-%H-%M-%S)"
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@localhost ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3
原創文章,作者:N21-yoyo_chen,如若轉載,請注明出處:http://www.www58058.com/23914
寫的很好,排版還可以在漂亮一點,在嘗試一下12題看看對嗎?加油