1. 程式人生 > >N33-Week 2-向日葵

N33-Week 2-向日葵

mux 2-2 a-z rpc rename post ctime halt ...

1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示
·touch:創建文件和刷新時間戳
touch [OPTION]..FILE..
【1】touch -c 文件名:如果文件已存在則刷新文件的時間戳,如果文件不存在則創建空文件
示例:
touch -c tmpchi 或touch tmpchi
目錄下沒有文件則創建空文件:-rw-r--r--. 1 root root 0 Oct 7 14:18 tmpchi
目錄下有文件則刷新時間戳:-rw-r--r--. 1 root root 0 Oct 7 14:21 tmpchi
【2】touch -a 文件名: 僅改變atime和ctime
示例:
touch -a tmpchi
Access: 2018-10-07 14:21:42.167194043 +0800
Modify: 2018-10-07 14:21:01.915193580 +0800
Change: 2018-10-07 14:21:42.167194043 +0800
【3】touch -m 文件名: 僅改變mtime和ctime
示例:
touch -m tmpchi
Access: 2018-10-07 14:21:42.167194043 +0800
Modify: 2018-10-07 14:23:43.221195437 +0800
Change: 2018-10-07 14:23:43.221195437 +0800
【4】touch -t [[CC]YY]MMDDhhmm[.ss]: 指定atime和mtime的時間戳
示例:
touch -t 201809081112.13 tmpchi
Access: 2018-09-08 11:12:13.000000000 +0800
Modify: 2018-09-08 11:12:13.000000000 +0800
Change: 2018-10-07 14:24:55.220196265 +0800

·cp:復制文件或目錄
【1】cp [OPTION]...[-T] SOURCE DEST:復制文件並改文件名
cp -i:覆蓋前提示
示例:
文件不存在,則創建新的文件
cp /tmp/tmpchi /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:34 /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:25 /tmp/tmpchi

文件已存在,則覆蓋文件(-i覆蓋前提示)
cp -i /tmp/tmpchi /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:36 /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:25 /tmp/tmpchi
【2】cp [OPTION]...SOURCE...DIRECTORY:復制文件不改文件名
cp -r,-R:遞歸復制目錄及內部的所有內容
示例:
app目錄裏復制一個tmp目錄(-r遞歸復制tmp目錄及內部的所有內容)
cp -r /tmp /app
drwxr-xr-t. 26 root root 4096 Oct 7 14:43 tmp
【3】cp -d :復制軟連接名
示例
如果不加-d,如果復制的是目錄,默認復制目錄的軟連接指向的對應原始文件,而不是軟連接本身
cp /etc/rc /app
-rwxr-xr-x. 1 root root 2617 Oct 7 15:09 /app/rc
lrwxrwxrwx. 1 root root 7 Sep 17 21:44 /etc/rc -> rc.d/rc
cp -d /etc/rc /app
lrwxrwxrwx. 1 root root 11 Oct 7 15:13 /app/init.d -> rc.d/init.d
lrwxrwxrwx. 1 root root 11 Sep 17 21:32 /etc/init.d -> rc.d/init.d\\
【4】--preserv
-rw-r--r--. 1 root root 0 Oct 7 15:23 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=timestamp:復制時保留源文件的時間戳
示例:
cp /tmp/tmpchi /app/tmpchi --preserv=timestamp
-rw-r--r--. 1 root root 0 Oct 7 15:22 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=ownership:復制時保留源文件的所有者
示例:
cp /tmp/tmpchi /app/tmpchi --preserv=ownership
-rw-r--r--. 1 cmx cmx 0 Oct 7 15:25 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=all等同於cp -a:歸檔,復制時保留源文件的所有屬性
示例:
cp -a /tmp/tmpchi /app/tmpchi 或cp /tmp/tmpchi /app/tmpchi --preserv=all
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
示例:
cp --backup=numbered:目標存在,覆蓋前先備份加數據後綴
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
-rw-r--r--. 1 root root 0 Oct 7 15:28 tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 tmpchi.~1~

·mv:移動文件或重命名文件名
【1】mv [OPTION]...[-T] SOURCE DEST:移動文件並改文件名
示例:
同目錄下移動文件,文件存在則重命名文件
mv tmpchi tmpchixx
-rw-r--r--. 1 root root 0 Oct 7 14:25 tmpchi
-rw-r--r--. 1 root root 0 Oct 7 14:25 tmpchixx
不同目錄下移動文件,移動並改名
mv /tmp/tmpchi01 /app/tmpchixx
-rw-r--r--. 1 root root 0 Oct 7 16:07 /tmp/tmpchi01
-rw-r--r--. 1 root root 0 Oct 7 14:36 /app/tmpchixx

·rename:重命名多個文件
rename [OPTIONS] expression replacement file...
示例:
-rw-r--r--. 1 root root 0 Oct 7 16:15 f1
-rw-r--r--. 1 root root 0 Oct 7 16:15 f2
-rw-r--r--. 1 root root 0 Oct 7 16:15 f3
-rw-r--r--. 1 root root 0 Oct 7 16:15 f4
-rw-r--r--. 1 root root 0 Oct 7 16:15 f5
rename f f00 f?
-rw-r--r--. 1 root root 0 Oct 7 16:15 f001
-rw-r--r--. 1 root root 0 Oct 7 16:15 f002
-rw-r--r--. 1 root root 0 Oct 7 16:15 f003
-rw-r--r--. 1 root root 0 Oct 7 16:15 f004
-rw-r--r--. 1 root root 0 Oct 7 16:15 f005

·rm:刪除文件或目錄
【1】rm -i:刪除前提示
示例:
rm -i tmpchi
rm: remove regular empty file tmpchi‘?<br/>【2】rm -r:遞歸刪除目錄<br/>示例:<br/>cp -r /tmp/gconfd-root /app<br/>drwx------. 2 root root 4096 Oct 7 16:23 gconfd-root<br/>rm gconfd-root<br/>rm: cannot removegconfd-root‘: Is a directory
rm -r gconfd-root
rm: descend into directory `gconfd-root‘?
輸入y,刪除目錄

·mkdir:創建文件夾
【1】mkdir -p:創建目錄包含目錄下的子目錄
示例:
mkdir -p mylinux
drwxr-xr-x. 2 root root 4096 Oct 7 16:29 mylinux
【2】mkdir -m:創建目錄是直接指定權限
mkdir -m 750 mylinux:權限設置為文件主可讀、寫、執行,同組用戶可讀和執行,其他用戶無權訪問
drwxr-x---. 2 root root 4096 Oct 7 16:35 mylinux
【3】mkdir -v:顯示詳細信息
示例:
mkdir -v mylinux
mkdir: created directory ‘mylinux‘

2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
【1】特性
·alias命令別名:定義別名NAME,其相當於執行命令VALUE alias NAME=‘VALUE‘
·history命令歷史:
-c: 清空命令歷史
-d 5: 刪除歷史中指定的第5個命令
-a:將內存中的所有命令,附加到磁盤命令文件裏(.bash_history)
-r:將磁盤命令文件裏的所有命令附加到內存history中
-n:將磁盤命令文件裏的新增的命令附加到內存history中
-p:展開歷史命令參數成多行(執行命令但歷史命令history不記錄)
-s:展開歷史命令參數成一行(可以偽造命令並不執行命令,history -s "rm /")
·echo顯示字符:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號 ,
$( ) 或 `` 把一個命令的輸出打印給另一個命令的參數
示例:
[root@centos6 /]# echo "hello welcome to $(hostname)"
hello welcome to centos6.cmx
·tab鍵:命令補全,路徑補全
command 2Tab 所有子命令或文件補全
示例:
[root@centos6 /]# he 雙擊Tab鍵
head help hexdump
./2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
示例:
[root@centos6 /]# ./
app/ dev/ lib64/ mnt/ root/ sys/
bin/ etc/ lost+found/ net/ sbin/ tmp/
boot/ home/ media/ opt/ selinux/ usr/
.dbus/ lib/ misc/ proc/ srv/ var/
2Tab 當前目錄下子目錄,不包括隱藏目錄
示例:
[root@centos6 /]#

app etc lost+found net sbin tmp
bin home media opt selinux usr
boot lib misc proc srv var
dev lib64 mnt root sys
~2Tab 所有用戶列表
示例:
[root@centos6 /]# ~
~abrt/ ~games/ ~nobody/ ~saslauth
~adm ~gdm/ ~ntp/ ~shutdown/
~apache/ ~gopher ~operator/ ~sshd/
~avahi-autoipd ~haldaemon/ ~postfix/ ~sync/
~bin/ ~halt/ ~pulse ~tcpdump/
~cmx/ ~lp/ ~root/ ~usbmuxd/
~daemon/ ~mail/ ~rpc ~uucp
~dbus/ ~mysql/ ~rpcuser/ ~vcsa/
~ftp ~nfsnobody/ ~rtkit/
·bash快捷鍵
Ctrl+l=clear:清屏
Ctrl+s:阻止屏幕輸出
Ctrl+q:允許屏幕輸出
Ctrl+c:關閉當前運行窗口
Atl+r:刪除當前整行
echo (Atl+a) 1000:輸出1000個a
Ctrl + u:從光標處刪除至命令行首
Ctrl + k:從光標處刪除至命令行尾
Ctrl + a:光標移到命令行首,相當於Home
Ctrl + e:光標移到命令行尾,相當於End
Ctrl + w:從光標處向左刪除至單詞首
Alt + d:從光標處向右刪除至單詞尾
Ctrl + d:刪除光標處的一個字符
Ctrl + h:刪除光標前的一個字符

【2】命令執行狀態返回值
在bash中使用一個特殊的變量$?來保存上一個命令的執行狀態結果:0表示成功, 1-255表示失敗
示例:
[root@centos6 app]#rm null ;echo $?
rm: remove regular empty file `null‘? y
0
[root@centos6 app]# rm null ;echo $?
rm: cannot remove `null‘: No such file or directory
1

【3】命令行展開
以某些bash能夠解釋的符號來代替命令中的某些參數。 
~:展開為用戶的家目錄; 
示例:
切換至家目錄 
[root@centos6 app]# cd ~
[root@centos6 ~]# pwd
/root
{}:可承載一個以逗號分隔的列表,並將其展開為多個路徑; 
例:在/tmp/mylinux目錄下創建f01,f02,f03三個文件 
[root@centos7 /]#touch /tmp/mylinux/f0{1,2,3} 
-rw-r--r--. 1 root root    0 Oct  7 16:57 f01
-rw-r--r--. 1 root root    0 Oct  7 16:57 f02
-rw-r--r--. 1 root root    0 Oct  7 16:57 f03

3、請使用命令行展開功能完成以下練習:
(1)創建/tmp目錄下的:a_c,a_d,b_c,bd
mkdir /tmp/{a,b}
{c,d}
(2)創建/tmp/mylinux目錄下的:
mylinux/
|---bin
|---boot
|----grub
|---dev
|---etc
| |----rc.d
| | |--init.d
| |----sysconfig
| |---network-scripts
|---lib
| |--modules
|---lib64
|---proc
|---sbin
|---sys
mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}

4、文件元數據信息有哪些,分別表示什麽含義,如何查看?如何修改文件的時間戳信息。
stat 文件名查看元數據(metadata)信息:
File: a_c
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1048579 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-10-07 12:01:31.600097235 +0800
Modify: 2018-10-07 12:01:31.600097235 +0800
Change: 2018-10-07 12:01:31.600097235 +0800
三個時間戳:
access time:訪問時間,atime,讀取文件內容
modify time:修改時間,mtime,改變文件內容(數據)
change time:改變時間,ctime,元數據發生改變
查看atime和mtime,ctime時間:stat 文件名
touch -a 文件名: 僅改變atime和ctime(touch -a a_c)
touch -m 文件名: 僅改變mtime和ctime(touch -m a_c)
touch -t [[CC]YY]MMDDhhmm[.ss]: 指定atime和mtime的時間戳(touch -t 201809081112.13 a_c)
touch -c 文件名:若文件已存在則刷新文件的的時間戳,若文件不存在則創建一個新文件

5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
命令別名:alias
定義別名為if,其相當於執行命令VALUE
alias if=‘ifcofig‘
命令引用:
alias pwd=‘ifconfig‘:執行pwd顯示ifconfig結果

6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄
ls -d /var/l[[:digit:]][[:lower:]] 或ls -d /var/l[0-9][[:lower:]]

7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[[:digit:]][^[:digit:]] 或ls -d /etc/[0-9][^0-9]

8、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]] 或ls -d /etc/[^a-zA-Z][a-zA-Z]

9、在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
touch /tmp/tfile-date +%Y-%m-%d-%H-%M-%S或者touch /tmp/tfile-date +%F-%H-%M-%S

10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytestl目錄中
cp -a /etc/p[[:alpha:]] /tmp/mytest1 或cp /etc/p[^[:digit:]] /tmp/mytest1

11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -a /etc/*.d /tmp/mytest2

12、復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
cp -a /etc/[lmn]*.conf /tmp/mytest3

N33-Week 2-向日葵