問題一:文件管理類命令
常規命令:mkdir、rmdir、stat、touch、copy、mv、rm
(1).mkdir 創建目錄:
注意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在;
-p:自動按需創建父目錄;
-v:顯示創建過程;
-m 參數:直接給定所需權限;
例子:問題:創建 /tmp/x ; /tmp/x/y1 ; /tmp/x/y1/a ; /tmp/x/y1/b ; /tmp/x/y2
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory `/tmp/x'
mkdir: created directory `/tmp/x/y1'
mkdir: created directory `/tmp/x/y1/a'
mkdir: created directory `/tmp/x/y1/b'
mkdir: created directory `/tmp/x/y2'
[root@localhost ~]# tree /tmp/x
/tmp/x
|– y1
| |– a
| `– b
`– y2
(2).rmdir 僅用于刪除空目錄
-p:刪除某目錄后,如果其父目錄為空,則一并刪除之;
例子:刪除空目錄 testdir
[root@localhost ~]# rmdir testdir
(3).stat 查看文件狀態
例子:查看目錄 x 的信息
[root@localhost tmp]# stat x
文件: `x'
大小: 4096 塊: 8 IO 塊: 4096 目錄
設備: fd00h/64768d Inode: 622755 硬鏈接: 4
權限: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
最近訪問: 2016-11-22 23:26:19.000000000 +0800
最近更改: 2016-11-22 20:30:04.000000000 +0800
最近改動: 2016-11-22 20:30:04.000000000 +0800
[root@localhost tmp]# stat x
File: `x'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 622755 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-22 23:26:19.000000000 +0800
Modify: 2016-11-22 20:30:04.000000000 +0800
Change: 2016-11-22 20:30:04.000000000 +0800
(4).touch 更改元數據信息
用法:
改變access(最近訪問時間)和modify(最近更改時間)兩個時間。
touch file:把三個時間都改為此刻的時間。
-a:只改訪問時間(access);
-m:只改修改時間(modified);
-t:指定時間;
例子:修改文件b的元數據,三個時間戳都相同
[root@localhost ~]# stat b
File: `b'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 372484 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-11 09:21:57.000000000 +0800
Modify: 2016-11-24 10:24:18.000000000 +0800
Change: 2016-11-24 10:24:18.000000000 +0800
[root@localhost ~]# touch b
[root@localhost ~]# stat b
File: `b'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 372484 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-11 09:22:24.000000000 +0800
Modify: 2016-12-11 09:22:24.000000000 +0800
Change: 2016-12-11 09:22:24.000000000 +0800
(5).copy 文件復制
用法:
注意:復制文件只是復制文件的數據而不是元數據,但是可以保留元數據的信息。
單源復制:目錄是否存在都可以
多源復制:目錄必須是存在的
-i:提醒用戶操作確認
-f:強行覆蓋
-r:遞歸復制目錄
-p:保留源數據
-a:用于實現歸檔,做備份
–preserv=
mode:權限
ownership:屬主和屬組
timestamps:時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述所有屬性
例子1:復制單個文件
[root@localhost ~]# cp /etc/issue /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 4
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
例子2:復制多個文件
[root@localhost ~]# cp a.sh b.sh c.sh /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 16
-rwxr-xr-x 1 root root 199 Dec 11 09:39 a.sh
-rw-r–r– 1 root root 64 Dec 11 09:39 b.sh
-rwxr-xr-x 1 root root 91 Dec 11 09:39 c.sh
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
例子3:復制目錄
[root@localhost ~]# cp -r /etc/gconf /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 20
-rwxr-xr-x 1 root root 199 Dec 11 09:39 a.sh
-rw-r–r– 1 root root 64 Dec 11 09:39 b.sh
-rwxr-xr-x 1 root root 91 Dec 11 09:39 c.sh
drwxr-xr-x 6 root root 4096 Dec 11 09:42 gconf
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
(6).mv 移動或者重命名
例子:
[root@localhost test1]# ll
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
[root@localhost test1]# mv issue issue.20161211
[root@localhost test1]# ll
-rw-r–r– 1 root root 74 Dec 11 09:37 issue.20161211
(7).rm:刪除
-r:遞歸刪除目標目錄下的文件
-f:強制刪
問題二:bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
1. bash的基礎特性:命令的執行狀態結果
bash通過狀態返回值來輸出此結果;
成功:0
失?。?-255
命令執行完成之后,其狀態返回值保存于bash的特殊變量$中
eg:
[root@localhost ~]# echo $?
0
[root@localhost ~]# echo $?
2
注意:命令正常執行時,有的還會有命令返回值。
引用命令的執行結果:
$(command)或'command'
eg:
[root@localhost ~]# mkdir $(date +%H-%M-%S)
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls
21-09-03
注:上述就是把date命令的返回值作為參數給了 mkdir 命令。
2. bash的基礎特性之:命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
eg:
創建 /tmp/x ; /tmp/x/y1 ; /tmp/x/y1/a ; /tmp/x/y1/b ; /tmp/x/y2
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory `/tmp/x'
mkdir: created directory `/tmp/x/y1'
mkdir: created directory `/tmp/x/y1/a'
mkdir: created directory `/tmp/x/y1/b'
mkdir: created directory `/tmp/x/y2'
[root@localhost ~]# tree /tmp/x
/tmp/x
|– y1
| |– a
| `– b
`– y2
問題三:使用命令行展開完成以下練習
1. 創建/tmp目錄下的:a_c,a_d,b_c,b_d
Eg:
[root@localhost ~]# ls /tmp/
[root@localhost ~]# touch /tmp/a_{c,d} /tmp/b_{c,d}
[root@localhost ~]# ls /tmp/
a_c a_d b_c b_d
2. 創建/tmp/mylinux下的目錄結構
[root@localhost ~]# mkdir /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}} -pv
mkdir: 已創建目錄 "/tmp/mylinux"
mkdir: 已創建目錄 "/tmp/mylinux/bin"
mkdir: 已創建目錄 "/tmp/mylinux/boot"
mkdir: 已創建目錄 "/tmp/mylinux/boot/grub"
mkdir: 已創建目錄 "/tmp/mylinux/dev"
mkdir: 已創建目錄 "/tmp/mylinux/etc"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已創建目錄 "/tmp/mylinux/lib"
mkdir: 已創建目錄 "/tmp/mylinux/lib/modules"
mkdir: 已創建目錄 "/tmp/mylinux/lib64"
mkdir: 已創建目錄 "/tmp/mylinux/proc"
mkdir: 已創建目錄 "/tmp/mylinux/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/sys"
mkdir: 已創建目錄 "/tmp/mylinux/tmp"
mkdir: 已創建目錄 "/tmp/mylinux/usr"
mkdir: 已創建目錄 "/tmp/mylinux/usr/local"
mkdir: 已創建目錄 "/tmp/mylinux/usr/bin"
mkdir: 已創建目錄 "/tmp/mylinux/usr/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/var"
mkdir: 已創建目錄 "/tmp/mylinux/var/lock"
mkdir: 已創建目錄 "/tmp/mylinux/var/log"
mkdir: 已創建目錄 "/tmp/mylinux/var/run"
問題四:文件的元數據信息有哪些,分別表示什么含義
文件有兩種數據
元數據:只是文件自身的屬性信息。
數據:文件內容本身。
問題五:如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果
命令別名:alias
eg:
[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* –color=tty'
alias ll='ls -l –color=tty'
alias ls='ls –color=tty'
定義別名:
alias 原命令=別名命令,但是這個是臨時的
撤銷別名:
unalias 別名
永久定義別名:定義在~/.bashrc或者/etc/bashrc
命令練習:
1.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一位任意字符的文件或目錄;
[root@localhost ~]# ls -d /var/l?[[:lower:]]
[root@localhost ~]# ls -d /var/l?[[:lower:]]
/var/lib /var/log
[root@localhost ~]# cd /var
[root@localhost var]# ls -d l?[[:lower:]]
lib log
注意:-d 的參數是只列出目錄。
2.顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄;
[root@localhost etc]# ls -d [[:digit:]]*[^[:digit:]]
3ab23y
[root@localhost etc]# ls -d [0-9]*[^0-9]
3ab23y
3.顯示/etc目錄下,以非字母開頭,后面跟一個字母及其它任意長度任意字符的文件或目錄;
[root@localhost etc]# ls -d [0-9][a-z]*
2fdsafsf
4.復制/etc目錄下,所有以m開頭,以非數字結尾的文件或目錄至/tmp/xuef目錄;
[root@localhost etc]# cp -r m*[^0-9] /tmp/xuef
[root@localhost etc]# cd /tmp/xuef
[root@localhost xuef]# ls
mail makedev.d mgetty+sendfax mke2fs.conf modprobe.d mtools.conf
mailcap man.config mime.types modprobe.conf motd multipath.conf
mail.rc maven minicom.users modprobe.conf~ mtab
5.復制/usr/share/man目錄下,所有以man開頭,后跟一個數字結尾的文件或目錄至/tmp/man/目錄下;
[root@localhost ~]# cp -r /usr/share/man/man[0-9] /tmp/man
[root@localhost man]# du -sh
25M
6.復制/etc目錄下,所有以.conf結尾,且以m,n,r,p開頭的文件或目錄至/tmp/man目錄下;
[root@localhost man]# cp -r /etc/[mnrp]*.conf /tmp/xuef
7. 在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名如tfile-2016-05-26-08-32-22
[root@localhost ~]]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
原創文章,作者:N25-筆頭,如若轉載,請注明出處:http://www.www58058.com/63177
總結的很詳細~能用markdown格式化輸出會更好~加油。