第二周作業
1.Linux上的文件管理命令都有哪些,其常用的使用方法及相關示例演示。
Linux上的文件管理命令有:cp , mv , rm 等命令
cp是復制命令:
命令使用格式是: cp [OPTION]... SOURCE... DEST
例:root@vps ~]# cp /etc/passwd /tmp
復制/etc/passwd文件到/tmp目錄下。
cp命令的常用參數有:
-i:交互式復制,即覆蓋之前提醒用戶確認;用于目標文件已存在,覆蓋復制。
[root@vps ~]# cp -i /etc/passwd /tmpcp: overwrite ‘/tmp/passwd’?
-r, -R:遞歸復制目錄;用于復制目錄。
[root@vps ~]# cp -r /etc /tmp/
-d:復制符號鏈接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于實現歸檔;-a就是遞歸復制和復制符號鏈接文件本身泉都包括的選項。
mv是移動或重命名文件命令:
命令使用格式是: mv [OPTION]... SOURCE... DIRECTORY
例:[root@vps ~]# mv /tmp/etc/hosts /tmp/
移動/tmp/etc/hosts文件到/tmp下
例:mv /tmp/hosts /tmp/hosss
/tmp/hosts改名為hosss
rm是刪除文件或目錄命令:
命令使用格式是: rm [OPTION] /PATH/FILE
例:[root@vps ~]# rm /tmp/hosss
刪除/tmp/hosss文件。
如果想刪除目錄需要加參數 -r ,意思是遞歸刪除目錄及目錄下文件。
例:[root@vps ~]# rm -r /tmp
此命令操作相當危險,不建議使用。
此外還有一個參數 -f 是強制刪除的意思。
2.bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
bash中命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中。命令正常執行后,根據命令及其功能不同,結果各不相同。
查看命令執行狀態返回值的命令是: [root@vps ~]# echo $?
如果命令執行成功,返回值會是0
如果命令執行不成功,返回值會是1-255之間的數值。
例:下面這個例子是命令執行成功的例子。
[root@vps ~]# ls /tmpetc passwd[root@vps ~]# echo $?0
例:下面是命令執行失敗的例子。
[root@vps ~]# lo /tmp-bash: lo: command not found[root@vps ~]# echo $?127
bash的基礎特性之:命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄
例:從/目錄切換到登錄用戶的家目錄。
[root@vps /]# cd ~[root@vps ~]# pwd/root
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑
例如:/tmp/{a,b} 相當于 /tmp/a /tmp/b
3.請使用命令行展開功能來完成以下練習。
(1)創建/tmp目錄下的:a_c , a_d , b_c , b_d
[root@vps tmp]# mkdir -pv /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@vps tmp]#
(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@vps tmp]# 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}}
4.文件的元數據有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳?
文件的元數據是文件名、文件大小、占據磁盤的塊、權限、時間戳等??梢杂妹?code>stat FILENAME來查詢文件的元數據信息。
例:
[root@vps tmp]# stat test/ File: ‘test/’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: ca01h/51713d Inode: 402915 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-12-14 18:31:19.645348845 +0800 Modify: 2016-12-14 18:31:19.645348845 +0800 Change: 2016-12-14 18:31:19.645348845 +0800 Birth: -
File:文件名 , Size:文件大小 , Block:占據多少磁盤塊 , IO Block:沒個磁盤塊的大小 ,regular file:文件是普通文件 , Device:文件所在設備主編號和次編號 , Inode:inode編號 , Linux:文件被硬鏈接的次數,1表示沒有硬鏈接 .
第一個Access:權限,屬主uid及名字,屬組gid及名字 .
第二個Access:文件最后一次被訪問的時間 . Modify:文件的數據最后一次被修改的時間 .
Change:文件的元數據最后一次變化的時間.
修改時間戳的命令是touch:
例:[root@vps tmp]# touch stat_test
touch后的文件如果是已經存在的文件就會修改文件元數據的所有時間戳,如果文件不存在,touch會創建一個新的空文件。
touch常用參數:
-c: 指定的文件路徑不存在時不予創建
-a: 僅修改access time
-m: 僅修改modify time
-t STAMP 修改自定義時間,格式:[[CC]YY]MMDDhhmm[.ss]
5.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
獲取所有可用別名的定義: ~]# alias
定義別名: ~]# alias NAME='COMMAND'
注意:僅對當前shell進程有效
撤銷別名: ~]# unalias NAME
在命令中引用另一個命令的執行結果可以通過管道來實現: ~]#cat /etc/passwd | grep "root"
6.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄。
~]#ls -d /var/l*[0-9]*[[:lower:]]
7.顯示/etc目錄下,以任意一個字母開頭,且以非數字結尾的文件或目錄。
~]#ls -d /etc/[0-9]*[^0-9]
8.顯示/etc目錄下,以非非字母開頭,后邊跟了一個字母以及其他任意長度任意字符的文件或目錄
~]#ls -d /etc/[^[:alpha:]][[:alpha:]]*
9.在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名如tfile-2016-05-26-08-32-22
~]#touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
10.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
~]#mkdir /tmp/mytest1
~]#cp -r /etc/p*[^0-9] /tmp/mytest1
11.復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
~]#mkdir /tmp/mytest2
~]#cp -r /etc/*.d /tmp/mytest2
12.復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
~]#mkdir /tmp/mytest3
~]#cp -r /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:Eason,如若轉載,請注明出處:http://www.www58058.com/63767