1、linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示
linux上處理目錄的常用命令:
ls :列出目錄
cd :切換目錄
pwd:顯示當前工作路徑
mkdir:創建目錄
rm:刪除文件或目錄
rmdir:刪除空文件
mv:剪切、重命名文件、目錄
cp:復制文件或目錄
touch:創建空文件
ls:= list:查看指定目錄下文件和目錄;
語法:
ls [選項] [目錄名]
選項與參數:
-a, –all 列出目錄下的所有文件,包括以 . 開頭的隱含文件
-A 同-a,但不列出“.”(表示當前目錄)和“..”(表示當前目錄的父目錄)。
-c 配合 -lt:根據 ctime 排序及顯示 ctime (文件狀態最后更改的時間)配合 -l:顯示 ctime 但根據名稱排序否則:根據 ctime 排序
-C 每欄由上至下列出項目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 將目錄象文件一樣顯示,而不是顯示其下的文件。
-D, –dired 產生適合 Emacs 的 dired 模式使用的結果
-f 對輸出的文件不進行排序,-aU 選項生效,-lst 選項失效
-g 類似 -l,但不列出所有者
-G, –no-group 不列出任何有關組的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 類似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符號鏈接指示的真正目的地
–indicator-style=方式 指定在每個項目名稱后加上指示符號<方式>:none (默認),classify (-F),file-type (-p)
-i, –inode 印出每個文件的 inode 號
-I, –ignore=樣式 不印出任何符合 shell 萬用字符<樣式>的項目
-k 即 –block-size=1K,以 k 字節的形式表示文件的大小。
-l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來。ls -l = ll
-L, –dereference 當顯示符號鏈接的文件信息時,顯示符號鏈接所指示的對象而并非符號鏈接本身的信息
-m 所有項目以逗號分隔,并填滿整行行寬
-o 類似 -l,顯示文件的除組信息外的詳細信息。
-r, –reverse 依相反次序排列,按照時間順序排列,從舊到新;
-R, –recursive 同時列出所有子目錄層
-s, –size 以塊大小為單位列出所有文件的大小
-S 根據文件大小排序
–sort=WORD 以下是可選用的 WORD 和它們代表的相應選項:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改時間排序
-u 配合 -lt:顯示訪問時間而且依訪問時間排序
配合 -l:顯示訪問時間但根據名稱排序
否則:根據訪問時間排序
-U 不進行排序;依文件系統原有的次序列出項目
-v 根據版本進行排序
-w, –width=COLS 自行指定屏幕寬度而不使用目前的數值
-x 逐行列出項目而不是逐欄列出
-X 根據擴展名排序
-1 每行只列出一個文件
–help 顯示此幫助信息并離開
–version 顯示版本信息并離開
例:
[root@zhao-66 ~]# ls
anaconda-ks.cfg install.log shell test
[root@zhao-66 ~]# ll #ls -l = ll
總用量 76
-rw——-. 1 root root 1106 5月 4 2016 anaconda-ks.cfg
-rw-r–r–. 1 root root 22632 5月 4 2016 install.log
drwxr-xr-x 2 root root 4096 7月 11 13:53 shell
drwxr-xr-x 6 root root 4096 12月 13 14:21 test
[root@zhao-66 ~]# ll -a #顯示隱藏文件
總用量 152
dr-xr-x—. 7 root root 4096 9月 22 12:06 .
dr-xr-xr-x. 22 root root 4096 12月 13 14:17 ..
-rw——-. 1 root root 1106 5月 4 2016 anaconda-ks.cfg
-rw——-. 1 root root 9124 10月 1 21:25 .bash_history
-rw-r–r–. 1 root root 18 5月 20 2009 .bash_logout
-rw-r–r– 1 root root 287 7月 5 15:50 .bash_profile
-rw-r–r–. 1 root root 176 9月 23 2004 .bashrc
-rw-r–r–. 1 root root 22632 5月 4 2016 install.log
drwxr-xr-x 2 root root 4096 7月 11 13:53 shell
drwx—— 2 root root 4096 6月 28 14:29 .ssh
drwxr-xr-x 6 root root 4096 12月 13 14:21 test
[root@zhao-66 ~]# ll -rt
總用量 76
-rw-r–r–. 1 root root 22632 5月 4 2016 install.log
-rw——-. 1 root root 1106 5月 4 2016 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 7月 11 13:53 shell
drwxr-xr-x 6 root root 4096 12月 13 14:21 test
cd:Change Directory的縮寫,切換目錄。
語法:
cd [相對路徑或絕對路徑]
參數:
-:切換到上一次打開的目錄;
~:切換到當前用戶家目錄,不加參數也是切換到當前用戶家目錄;
.:當前目錄
..:上級目錄
例:
[root@master long]# pwd
/root/long
[root@master long]# cd ceshi/
[root@master ceshi]# pwd
/root/long/ceshi
[root@master ceshi]# cd
[root@master ~]# pwd
/root
[root@master ~]# cd –
/root/long/ceshi
[root@master ceshi]# cd –
/root
[root@master ~]# pwd
/root
[root@master ~]#
pwd:顯示當前目錄的絕對路徑:
語法:
pwd [選項]
選項與參數:
一般情況下不帶任何參數,如果目錄是鏈接時:
格式:pwd -P 顯示出實際路徑,而非使用連接(link)路徑。
例:
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /etc/init.d
[root@localhost init.d]# pwd
/etc/init.d
[root@localhost init.d]# pwd -P
/etc/rc.d/init.d
[root@localhost init.d]#
mkdir:創建指定名稱的目錄
語法:
mkdir [選項] 目錄
選項與參數:
-m, –mode=模式,直接配置權限<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask
-p, –parents 遞歸創建多層目錄,即一次可以建立多個目錄;
-v, –verbose 顯示創建過程
–help 顯示此幫助信息并退出
–version 輸出版本信息并退出
例:
[root@master ceshi]# mkdir test
[root@master ceshi]# mkdir -pv test1/test2/{test3,test4}
mkdir: 已創建目錄 "test1"
mkdir: 已創建目錄 "test1/test2"
mkdir: 已創建目錄 "test1/test2/test3"
mkdir: 已創建目錄 "test1/test2/test4"
[root@master ceshi]# mkdir -m 644 test5
[root@master ceshi]# ll
總用量 12
drwxr-xr-x 2 root root 4096 12月 13 18:14 test
drwxr-xr-x 3 root root 4096 12月 13 18:14 test1
drw-r–r– 2 root root 4096 12月 13 18:15 test5
[root@master ceshi]# tree
.
├── test
├── test1
│ └── test2
│ ├── test3
│ └── test4
└── test5
6 directories, 0 files
[root@master ceshi]#
rm:刪除文件、目錄;注意:rm是一個危險的命令,使用的時候要特別當心;
語法:
rm [選項] 文件目錄…
選項與參數:
-f, –force 忽略不存在的文件,從不給出提示。
-i, –interactive 進行交互式刪除
-r, -R, –recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除;用于刪除目錄;
-v, –verbose 詳細顯示進行的步驟
–help 顯示此幫助信息并退出
–version 輸出版本信息并退出
例:
[root@master ceshi]# ll
總用量 12
-rw-r–r– 1 root root 0 12月 13 18:23 install.log
-rwxr-xr-x 1 root root 0 12月 13 18:22 scp.sh
drwxr-xr-x 2 root root 4096 12月 13 18:14 test
drwxr-xr-x 3 root root 4096 12月 13 18:14 test1
drw-r–r– 2 root root 4096 12月 13 18:15 test5
[root@master ceshi]# rm install.log
rm:是否刪除普通空文件 "install.log"?y
[root@master ceshi]# rm -i scp.sh
rm:是否刪除普通空文件 "scp.sh"?y
[root@master ceshi]# rm -rf test
[root@master ceshi]# ll
總用量 8
drwxr-xr-x 3 root root 4096 12月 13 18:14 test1
drw-r–r– 2 root root 4096 12月 13 18:15 test5
[root@master ceshi]# rm -rfv test*
已刪除目錄:"test1/test2/test3"
已刪除目錄:"test1/test2/test4"
已刪除目錄:"test1/test2"
已刪除目錄:"test1"
已刪除目錄:"test5"
[root@master ceshi]#
rmdir:刪除空目錄,一個目錄被刪除之前必須是空的;刪除某目錄時也必須具有對父目錄的寫權限。
語法:
rmdir [選項]… 目錄…
選項:
– p 遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除。
-v, –verbose 顯示指令執行過程;
例:
[root@master ceshi]# mkdir -pv {test,test1/test2/{test3,test4}}
mkdir: 已創建目錄 "test"
mkdir: 已創建目錄 "test1"
mkdir: 已創建目錄 "test1/test2"
mkdir: 已創建目錄 "test1/test2/test3"
mkdir: 已創建目錄 "test1/test2/test4"
[root@master ceshi]# tree
.
├── test
└── test1
└── test2
├── test3
└── test4
5 directories, 0 files
[root@master ceshi]# ll
總用量 8
drwxr-xr-x 2 root root 4096 12月 13 18:36 test
drwxr-xr-x 3 root root 4096 12月 13 18:36 test1
[root@master ceshi]# rmdir test
[root@master ceshi]# ll
總用量 4
drwxr-xr-x 3 root root 4096 12月 13 18:36 test1
[root@master ceshi]# rmdir -pv test1/test2/test*
rmdir: 正在刪除目錄 "test1/test2/test3"
rmdir: 正在刪除目錄 "test1/test2"
rmdir: 刪除目錄 "test1/test2" 失敗: 目錄非空
rmdir: 正在刪除目錄 "test1/test2/test4"
rmdir: 正在刪除目錄 "test1/test2"
rmdir: 正在刪除目錄 "test1"
[root@master ceshi]# ll
總用量 0
[root@master ceshi]#
mv:= move,可以用來移動文件或者將文件改名(move (rename) files)
語法:
mv [參數] 源文件或目錄 目標文件或目錄
選項:
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,才會更新(update)
-t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
例:
[root@master URLGenerator]# ll
總用量 28
-rwxr-xr-x 1 root root 329 5月 20 2016 restart.sh
-rwxr-xr-x 1 root root 116 6月 23 20:23 start.sh_bak
-rwxr-xr-x 1 root root 122 5月 20 2016 stop.sh
[root@master URLGenerator]# mv -f restart.sh stop.sh
[root@master URLGenerator]# ll
總用量 24
-rwxr-xr-x 1 root root 116 6月 23 20:23 start.sh_bak
-rwxr-xr-x 1 root root 329 5月 20 2016 stop.sh
[root@master URLGenerator]# mv start.sh_bak stop.sh
mv:是否覆蓋"stop.sh"? n
[root@master URLGenerator]# ll
總用量 24
-rwxr-xr-x 1 root root 116 6月 23 20:23 start.sh_bak
-rwxr-xr-x 1 root root 329 5月 20 2016 stop.sh
[root@master URLGenerator]# mv -b start.sh_bak stop.sh
mv:是否覆蓋"stop.sh"? n
[root@master URLGenerator]# ll
總用量 24
-rwxr-xr-x 1 root root 116 6月 23 20:23 start.sh_bak
-rwxr-xr-x 1 root root 329 5月 20 2016 stop.sh
[root@master URLGenerator]#
cp:復制文件或目錄;將單個或多個源文件復制至目標目錄下。
語法:
單源復制:
cp [OPTION]… [-T] SOURCE DEST
選項 源
如果DEST不存在:則事先創建此文件,并復制源文件的數據流至DEST中;
如果DEST存在:
如果DEST是非目錄文件:則覆蓋目標文件;
如果DEST是目錄文件:則先在DEST目錄下創建一個與源文件同名的文件,并復制其數據流;
多源復制:
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:錯誤;
如果DEST存在:
如果DEST是非目錄文件:錯誤;
如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保持原名;
選項:
-a :–archive 等于-dR –preserve=all
–backup[=CONTROL] 為每個已存在的目標文件創建備份
-b :類似–backup 但不接受參數
–copy-contents 在遞歸處理是復制特殊文件內容
-d :等于–no-dereference –preserve=links
-f :–force: 如果目標文件無法打開則將其移除并重試(當 -n 選項
存在時則不需再選此項)
-i : –interactive: 覆蓋前詢問(使前面的 -n 選項失效)
-H :跟隨源文件中的命令行符號鏈接
-l, –link: 鏈接文件而不復制
-L, –dereference: 總是跟隨符號鏈接
-n, –no-clobber:不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, –no-dereference :不跟隨源文件中的符號鏈接
-p :等于–preserve=模式,所有權,時間戳
–preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果
可能保持附加屬性:環境、鏈接、xattr 等
-R, -r, –recursive 復制目錄及目錄內的所有項目
例:
[root@master URLGenerator]# tree
.
├── config
│ ├── config.xml
│ ├── log4j-config.xml
│ └── private.key
└── lib
├── chardet.jar
├── edtftpj.jar
└── jta.jar
2 directories, 6 files
[root@master URLGenerator]# cp config/config.xml lib/
[root@master URLGenerator]# tree
.
├── config
│ ├── config.xml
│ ├── log4j-config.xml
│ └── private.key
└── lib
├── chardet.jar
├── config.xml
├── edtftpj.jar
└── jta.jar
2 directories, 7 files
[root@master URLGenerator]# ll *
config:
總用量 12
-rw-r–r– 1 root root 2292 8月 23 16:39 config.xml
-rw-r–r– 1 root root 2940 5月 20 2016 log4j-config.xml
-rw-r–r– 1 root root 893 5月 20 2016 private.key
lib:
總用量 200
-rw-r–r– 1 root root 26568 5月 20 2016 chardet.jar
-rw-r–r– 1 root root 2292 12月 13 19:27 config.xml
-rw-r–r– 1 root root 156599 5月 20 2016 edtftpj.jar
-rw-r–r– 1 root root 9719 5月 20 2016 jta.jar
[root@master URLGenerator]# cp -rp config/ lib/
[root@master URLGenerator]# ll *
config:
總用量 12
-rw-r–r– 1 root root 2292 8月 23 16:39 config.xml
-rw-r–r– 1 root root 2940 5月 20 2016 log4j-config.xml
-rw-r–r– 1 root root 893 5月 20 2016 private.key
lib:
總用量 204
-rw-r–r– 1 root root 26568 5月 20 2016 chardet.jar
drwxr-xr-x 2 root root 4096 12月 13 19:25 config
-rw-r–r– 1 root root 2292 12月 13 19:27 config.xml
-rw-r–r– 1 root root 156599 5月 20 2016 edtftpj.jar
-rw-r–r– 1 root root 9719 5月 20 2016 jta.jar
[root@master URLGenerator]#
touch:一般在使用make的時候可能會用到,用來修改文件時間戳,或者新建一個空文件;
語法:
touch [選項]… 文件名…
選項與參數:
-a 或–time=atime或–time=access或–time=use 只更改存取時間。
-c 或–no-create 不建立任何文檔。
-d 使用指定的日期時間,而非現在的時間。
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
-m 或–time=mtime或–time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間。[[CC]YY]MMDDhhmm[.SS] ;
CC為年數中的前兩位,即”世紀數”;YY為年數的后兩位,即某世紀中的年數.如果不給出CC的值,則touch 將把年數CCYY限定在1969–2068之內.MM為月數,DD為天將把年數CCYY限定在1969–2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鐘數,SS為秒數.此處秒的設定范圍是0–61,這樣可以處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時 間.由于系統的限制,早于1970年1月1日的時間是錯誤的。
例:
[root@master ceshi]# touch `date +%F_%T`.csv
[root@master ceshi]# ll
-rw-r–r– 1 root root 0 12月 13 19:42 2016-12-13_19:42:23.csv
touch -t 201610120532.45 ceshi.csv
[root@master ceshi]# ll
-rw-r–r– 1 root root 0 12月 13 19:42 2016-12-13_19:42:40.csv
-rw-r–r– 1 root root 0 10月 12 05:32 ceshi.csv
[root@master ceshi]#
Linux查看文件的常用命令
cat:從第一行顯示文件內容;
tac:倒序顯示文件內容;
nl:帶行號顯示文件內容;
more:一頁一頁的顯示文件內容;
less:與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head:從文件第一行開始看指定行;從上而下;
tail:從文件尾看指定行;從下而上;
cat:顯示文件內容,或者將幾個文件連接起來顯示,或者從標準輸入讀取內容并顯示,它常與重定向符號配合使用。
cat主要有三大功能:
1.一次顯示整個文件:cat filename
2.從鍵盤創建一個文件:cat > filename 只能創建新文件,不能編輯已有文件.
3.將幾個文件合并為一個文件:cat file1 file2 > file
格式:
cat [選項] [文件]…
選項:
-A, –show-all: 等價于 -vET
-b, –number-nonblank :對非空輸出行編號
-e :等價于 -vE
-E, –show-ends :在每行結束處顯示 $
-n, –number :對輸出的所有行編號,由1開始對所有輸出的行數編號
-s, –squeeze-blank :有連續兩行以上的空白行,就代換為一行的空白行
-t : 與 -vT 等價
-T, –show-tabs :將跳格字符顯示為 ^I
-u :(被忽略)
-v, –show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
例:
[root@master ceshi]# cat wenjian.csv
192.168.9.101
192.168.9.102
192.168.9.105
192.168.9.110
192.168.9.250
[root@master ceshi]# cat wenjian*
192.168.9.33
192.168.9.34
192.168.9.35
192.168.9.50
192.168.9.101
192.168.9.102
192.168.9.105
192.168.9.110
192.168.9.250
[root@master ceshi]# cat -n wenjian.csv
1 192.168.9.101
2 192.168.9.102
3 192.168.9.105
4 192.168.9.110
5 192.168.9.250
[root@master ceshi]#
tac :
是將 cat 反寫過來,所以他的功能就跟 cat 相反,
cat 是由第一行到最后一行連續顯示在螢幕上,而 tac 則是由最后一行到第一行反向在螢幕上顯示出來!
例:
[root@master ceshi]# cat wenjian.csv
192.168.9.101
192.168.9.102
192.168.9.105
192.168.9.110
192.168.9.250
[root@master ceshi]# tac wenjian.csv
192.168.9.250
192.168.9.110
192.168.9.105
192.168.9.102
192.168.9.101
[root@master ceshi]#
nl:帶行號顯示文件內容;
格式:
nl [-bnwp] 文件
選項:
-b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在螢幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w :行號欄位的占用的位數。
-p :在邏輯頁數切換時不將行號值復位;
例:
[root@master ceshi]# nl wenjian.csv
1 192.168.9.101
2 192.168.9.102
3 192.168.9.105
4 192.168.9.110
5 192.168.9.250
[root@master ceshi]# nl -b a wenjian.csv
1 192.168.9.101
2 192.168.9.102
3 192.168.9.105
4
5 192.168.9.110
6 192.168.9.250
[root@master ceshi]# nl -n rz wenjian.csv
000001 192.168.9.101
000002 192.168.9.102
000003 192.168.9.105
000004 192.168.9.110
000005 192.168.9.250
[root@master ceshi]# nl -w 3 wenjian.csv
1 192.168.9.101
2 192.168.9.102
3 192.168.9.105
4 192.168.9.110
5 192.168.9.250
[root@master ceshi]# nl -w 1 wenjian.csv
1 192.168.9.101
2 192.168.9.102
3 192.168.9.105
4 192.168.9.110
5 192.168.9.250
[root@master ceshi]#
more:從第一行一頁一頁的顯示文件內容
格式:
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file … ]
選項:(一般很少用)
+n :從笫n行開始顯示
-n :定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
-c :從頂部清屏,然后顯示
-d :提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
-l :忽略Ctrl+l(換頁)字符
-p :通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
-s :把連續的多個空行顯示為一行
-u :把文件內容中的下畫線去掉
命令:
Enter 向下n行,需要定義。默認為1行
Ctrl+F 向下滾動一屏
空格鍵 向下滾動一屏
b或Ctrl+b 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
!命令 調用Shell,并執行命令
q 退出more
例:
[root@master ceshi]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
… …
–More–(29%)
less:對文件或其它輸出進行分頁顯示,可以向上和向下;
格式:
less [選項] 文件
選項:
-b <緩沖區大小> 設置緩沖區的大小
-e 當文件顯示結束后,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g 只標志最后搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示類似more命令的百分比
-N 顯示每行的行號
-o <文件名> 將less 輸出的內容在指定文件中保存起來
-Q 不使用警告音
-s 顯示連續空行為一行
-S 行過長時間將超出部分舍棄
-x <數字> 將“tab”鍵顯示為規定的數字空格
命令:
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重復前一個搜索(與 / 或 ? 有關)
N:反向重復前一個搜索(與 / 或 ? 有關)
b 向后翻一頁
d 向后翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁
head:從文件開頭查看指定行;默認head命令打印其相應文件的開頭10行。
語法:
head [-n number] 文件
選項:
-n:數字,從第一行查看的行數;
例:
head -5 shell/liuliang_1.txt
date: 2016-09-18 16:30:03 192.168.9.105:p6p1 RX = 2725 Mb/s
date: 2016-09-18 17:00:02 192.168.9.105:p6p1 RX = 2795 Mb/s
date: 2016-09-18 17:30:03 192.168.9.105:p6p1 RX = 3419 Mb/s
date: 2016-09-18 18:00:02 192.168.9.105:p6p1 RX = 2666 Mb/s
date: 2016-09-18 18:30:04 192.168.9.105:p6p1 RX = 2823 Mb/s
[root@CMCC105 ~]
head shell/liuliang_*
==> shell/liuliang_1.txt <==
date: 2016-09-18 16:30:03 192.168.9.105:p6p1 RX = 2725 Mb/s
date: 2016-09-18 17:00:02 192.168.9.105:p6p1 RX = 2795 Mb/s
date: 2016-09-18 17:30:03 192.168.9.105:p6p1 RX = 3419 Mb/s
date: 2016-09-18 18:00:02 192.168.9.105:p6p1 RX = 2666 Mb/s
date: 2016-09-18 18:30:04 192.168.9.105:p6p1 RX = 2823 Mb/s
date: 2016-09-18 19:00:02 192.168.9.105:p6p1 RX = 2727 Mb/s
date: 2016-09-18 19:30:03 192.168.9.105:p6p1 RX = 2815 Mb/s
date: 2016-09-18 20:00:02 192.168.9.105:p6p1 RX = 2603 Mb/s
date: 2016-09-18 20:30:03 192.168.9.105:p6p1 RX = 2899 Mb/s
date: 2016-09-18 21:00:02 192.168.9.105:p6p1 RX = 2637 Mb/s
==> shell/liuliang_2.txt <==
date: 2016-09-18 16:30:03 192.168.9.105:p6p2 RX = 2605 Mb/s
date: 2016-09-18 17:00:02 192.168.9.105:p6p2 RX = 2509 Mb/s
date: 2016-09-18 17:30:03 192.168.9.105:p6p2 RX = 2683 Mb/s
date: 2016-09-18 18:00:02 192.168.9.105:p6p2 RX = 2641 Mb/s
date: 2016-09-18 18:30:04 192.168.9.105:p6p2 RX = 2797 Mb/s
date: 2016-09-18 19:00:02 192.168.9.105:p6p2 RX = 2663 Mb/s
date: 2016-09-18 19:30:03 192.168.9.105:p6p2 RX = 2830 Mb/s
date: 2016-09-18 20:00:02 192.168.9.105:p6p2 RX = 2816 Mb/s
date: 2016-09-18 20:30:03 192.168.9.105:p6p2 RX = 2586 Mb/s
date: 2016-09-18 21:00:02 192.168.9.105:p6p2 RX = 2632 Mb/s
[root@CMCC105 ~]
tail:用于顯示指定文件末尾內容,常用查看實時日志文件。
語法:
tail [-n number] 文件
選項:
-f :實時讀取,常用于查看實時日志文件。
-n <行數>: 顯示文件末尾指定行;
例:
[root@CMCC105 /opt/DPIAPP/logsender]
tail nohup.out
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-5] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-3] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-11] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-1] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-7] (FtpFileUploadThread.java:68) – compose 1 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-9] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-8] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-6] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ WARN] [2016-12-13 20:56:30] [DefaultQuartzScheduler_Worker-6] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:56:30 CST 2016
[ WARN] [2016-12-13 20:56:40] [DefaultQuartzScheduler_Worker-9] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:56:40 CST 2016
[root@CMCC105 /opt/DPIAPP/logsender]
tail -100f nohup.out
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-3] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-11] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-1] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-7] (FtpFileUploadThread.java:68) – compose 1 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-9] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-8] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ INFO] [2016-12-13 20:56:20] [pool-1-thread-6] (FtpFileUploadThread.java:68) – compose 7 files with path /usr/local/ltelog
[ WARN] [2016-12-13 20:56:30] [DefaultQuartzScheduler_Worker-6] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:56:30 CST 2016
[ WARN] [2016-12-13 20:56:40] [DefaultQuartzScheduler_Worker-9] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:56:40 CST 2016
[ WARN] [2016-12-13 20:56:50] [DefaultQuartzScheduler_Worker-8] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:56:50 CST 2016
[ WARN] [2016-12-13 20:57:00] [DefaultQuartzScheduler_Worker-7] (FtpFileJob.java:38) -SimpleJob says: FtpFile.job_FtpFile is running. Tue Dec 13 20:57:00 CST 2016
… …
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
bash的工作特性之命令執行狀態返回值
Bash 命令執行后,會對執行狀態返回一個值。
如果命令執行成功則返回0,如果執行不成功,就會返回一個1-255的數字,這個返回值保存在特殊變量$?中。
可以使用echo $?查看返回值。
根據命令及其功能不同,結果各不相同;
引用命令的執行結果:
$(COMMAND)
或`COMMAND`
bash的基于特性:引用
強引用:''
弱引用:""
命令引用:“
bash基礎特性:快捷鍵
Ctrl+a:跳轉至命令行行首
Ctrl+e:跳轉至命令行行尾
Ctrl+u:刪除行首至光標所在處之間的所有字符;
Ctrl+k:刪除光標所在處至行尾的所有字符;
Ctrl+l:清屏,相當于clear
例:
[root@master ceshi]# ll
總用量 4
-rwxr-xr-x 1 root root 150 12月 13 14:56 ssh.sh
[root@master ceshi]# ll ssh.sh
-rwxr-xr-x 1 root root 150 12月 13 14:56 ssh.sh
[root@master ceshi]# echo $?
0
[root@master ceshi]# ll abc_ssh.sh
ls: 無法訪問abc_ssh.sh: 沒有那個文件或目錄
[root@master ceshi]# echo $?
2
[root@master ceshi]#
bash的工作基礎特性之:命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
例:
(1)、/etc/{a,b}
表示 /etc/a和/etc/b
(2)、mkdir -p /tmp/{a,b}{c,d}
新建 /tmp/a/c、/tmp/a/d、/tmp/b/c、/tmp/b/d四個目錄
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c,a_d,b_c,b_d
[root@master ~]# mkdir -pv /tmp/{a_c,a_d,b_c,b_d}
mkdir: 已創建目錄 "/tmp/a_c"
mkdir: 已創建目錄 "/tmp/a_d"
mkdir: 已創建目錄 "/tmp/b_c"
mkdir: 已創建目錄 "/tmp/b_d"
[root@master ~]# tree /tmp/
/tmp/
├── a_c
├── a_d
├── b_c
└── b_d
4 directories, 0 files
[root@master ~]#
(2)、創建/tmp/mylinux目錄下的:
[root@master ~]# mkdir -pv /tmp/mylinux/{bin,boot/crub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},\
> lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
mkdir: 已創建目錄 "/tmp/mylinux/bin"
mkdir: 已創建目錄 "/tmp/mylinux/boot"
mkdir: 已創建目錄 "/tmp/mylinux/boot/crub"
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/local/bin"
mkdir: 已創建目錄 "/tmp/mylinux/usr/local/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/var"
mkdir: 已創建目錄 "/tmp/mylinux/var/lock"
mkdir: 已創建目錄 "/tmp/mylinux/var/log"
mkdir: 已創建目錄 "/tmp/mylinux/var/run"
[root@master ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│ └── crub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
24 directories, 0 files
[root@master ~]#
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
(1)、可以用stat(display file or file system status)來查看文件或文件系統的狀態:
文件:兩類數據
元數據:metadata
數據: data
例:
[root@master ~]# ll long/
總用量 650452
-rw-r–r– 1 root root 44 10月 28 10:09 20.21.csv
-rw-r–r– 1 root root 597197252 9月 18 17:33 bao.zip
-rw-r–r– 1 root root 575389 5月 20 2016 commons-collections-3.2.1.jar
-rw-r–r– 1 root root 588337 11月 13 2015 commons-collections-3.2.2.jar
-rw-r–r– 1 root root 57162301 8月 8 16:50 CRv6.0.1.zip
-rwxr-xr-x 1 root root 319 10月 27 10:13 scp.sh
-rwxr-xr-x 1 root root 150 10月 27 10:07 ssh.sh
drwxr-xr-x 6 root root 4096 11月 4 15:16 URLGenerator
-rw-r–r– 1 root root 10508344 11月 4 15:20 URLGenerator.tar.gz
[root@master ~]# stat long/scp.sh
File: "long/scp.sh"
Size: 319 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 1053603 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-10-27 10:13:42.932292450 +0800
Modify: 2016-10-27 10:13:37.860292321 +0800
Change: 2016-10-27 10:13:37.950292623 +0800
[root@master ~]# stat long/
File: "long/"
Size: 4096 Blocks: 8 IO Block: 4096 目錄
Device: 802h/2050d Inode: 1044499 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-13 14:38:56.581484764 +0800
Modify: 2016-11-04 15:20:56.093502642 +0800
Change: 2016-11-04 15:20:56.093502642 +0800
[root@master ~]#
含義:File:文件名;
Blocks:塊;IO
Block:IO塊;
Device:設備;
Access(第一個):權限;
Uid:創建者id;
Gid:歸屬組id;
Access(第二個):最近訪問;
modify:最近修改;
change:最近改動
(2)、修改文件的時間戳用touch(change file timestamps)
一是用于把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來;
二是用來創建新的空文件。
touch [OPTION]… FILE…
選項和參數:
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP:使用[[CC]YY]MMDDhhmm[.ss] 格式的時間替代當前時間
例:
[root@master long]# ll
-rwxr-xr-x 1 root root 150 10月 27 10:07 ssh.sh
[root@master long]# touch -t 201611131459 ssh.sh
[root@master long]# ll
-rwxr-xr-x 1 root root 150 11月 13 14:59 ssh.sh
[root@master long]#
5、如何定義一個文件的別名,如何在命令中引用另一個命令的執行結果?
alias:可以用來直接定義命令的別名,有兩種方式定義:
一是直接在命令行下執行,僅對當前用戶有效,重啟系統后無效,
二是在/etc/bashrc 下進行設置,對全局用戶有效
獲取所有可用別名的定義:
~]# alias
定義別名:
~]# alias NAME='COMMAND'
注意:僅對當前shell進程有效
撤銷別名:
~]# unalias NAME
例:
[root@zhao-66 test]# ll
總用量 5044
drwxr-xr-x 3 root root 4096 6月 6 2016 classes
-rw-r–r– 1 root root 230471 6月 6 2016 classes.zip
drwxr-xr-x 7 root root 4096 6月 6 2016 logsender_cp
-rw-r–r– 1 root root 4914834 6月 6 2016 logsender_cp.tai.gz
drwxr-xr-x 5 root root 4096 6月 6 2016 test
drwxr-xr-x 4 root root 4096 6月 6 2016 yasuo
[root@zhao-66 test]# alias show='ll'
[root@zhao-66 test]# show
總用量 5044
drwxr-xr-x 3 root root 4096 6月 6 2016 classes
-rw-r–r– 1 root root 230471 6月 6 2016 classes.zip
drwxr-xr-x 7 root root 4096 6月 6 2016 logsender_cp
-rw-r–r– 1 root root 4914834 6月 6 2016 logsender_cp.tai.gz
drwxr-xr-x 5 root root 4096 6月 6 2016 test
drwxr-xr-x 4 root root 4096 6月 6 2016 yasuo
[root@zhao-66 test]# unalias show
[root@zhao-66 test]# show
-bash: show: command not found
[root@zhao-66 test]#
6、顯示var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄。
[root@master ~]# ll -d /var/l*[0-9]*[a-z]
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@master ~]# ll -d /etc/[0-9]*[^0-9]
8、顯示/etc目錄下,以非字母開頭,后面跟一個字母以及其他任意長度任意字符的文件或目錄。
[root@master ~]# ll -d /etc/[^a-z][a-z]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@master ~]# mkdir -pv /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
mkdir: 已創建目錄 "/tmp/tfile-2016-12-08-14-00-06"
[root@master ~]#
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@master ~]# mkdir -pv /tmp/mytest1
mkdir: 已創建目錄 "/tmp/mytest1"
[root@master ~]# cp -a /etc/p* /tmp/mytest1/
[root@master ~]# ll !$
ll /tmp/mytest1/
總用量 376
drwxr-xr-x. 2 root root 4096 7月 28 2015 pam.d
drwxr-xr-x 2 root root 4096 5月 5 2015 pam_pkcs11
drwxr-xr-x. 3 root root 4096 4月 20 2015 pango
-rw-r–r– 1 root root 1520 10月 10 14:30 passwd
-rw-r–r–. 1 root root 1477 7月 21 2015 passwd-
drwxr-xr-x. 2 root root 4096 12月 9 2014 pcmcia
-rw-r–r–. 1 root root 2872 8月 21 2010 pinforc
drwxr-xr-x 3 root root 4096 4月 20 2015 pkcs11
drwxr-xr-x. 9 root root 4096 4月 20 2015 pki
drwxr-xr-x. 2 root root 4096 4月 20 2015 plymouth
drwxr-xr-x. 5 root root 4096 12月 9 2014 pm
-rw-r–r– 1 root root 370 10月 15 2014 pm-utils-hd-apm-restore.conf
drwxr-xr-x. 5 root root 4096 10月 15 2014 polkit-1
drwxr-xr-x. 2 root root 4096 8月 21 2010 popt.d
drwxr-xr-x. 2 root root 4096 4月 20 2015 postfix
drwxr-xr-x. 3 root root 4096 5月 5 2015 ppp
-rw-r–r– 1 root root 285120 12月 3 03:14 prelink.cache
-rw-r–r– 1 root root 789 7月 19 2013 prelink.conf
drwxr-xr-x. 2 root root 4096 7月 28 2015 prelink.conf.d
-rw-r–r– 1 root root 233 1月 12 2010 printcap
-rw-r–r– 1 root root 2902 12月 8 10:40 profile
drwxr-xr-x. 2 root root 4096 5月 5 2015 profile.d
-rw-r–r– 1 root root 0 11月 21 17:45 properties
-rw-r–r– 1 root root 6455 1月 12 2010 protocols
drwxr-xr-x. 2 root root 4096 5月 5 2015 pulse
[root@master ~]#
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@master ~]# mkdir -pv /tmp/mytest2;cp -a /etc/*.d /tmp/mytest2/;ll /tmp/mytest2/
mkdir: 已創建目錄 "/tmp/mytest2"
總用量 100
drwxr-xr-x. 2 root root 4096 10月 24 10:41 bash_completion.d
drwxr-xr-x 2 root root 4096 10月 18 2014 cgconfig.d
drwxr-xr-x. 2 root root 4096 9月 23 2013 chkconfig.d
drwxr-xr-x. 2 root root 4096 4月 20 2015 cron.d
drwxr-xr-x. 2 root root 4096 4月 20 2015 depmod.d
drwxr-xr-x 2 root root 4096 6月 16 2014 dnsmasq.d
drwxr-xr-x. 2 root root 4096 7月 14 2015 dracut.conf.d
drwxr-xr-x. 2 root root 4096 12月 9 2014 event.d
drwxr-xr-x 2 root root 4096 11月 11 2010 ggz.modules.d
lrwxrwxrwx 1 root root 11 4月 20 2015 init.d -> rc.d/init.d
drwxr-xr-x. 2 root root 4096 10月 10 15:37 ld.so.conf.d
drwxr-xr-x. 2 root root 4096 7月 28 2015 logrotate.d
drwxr-xr-x. 2 root root 4096 12月 9 2014 makedev.d
drwxr-xr-x. 2 root root 4096 5月 5 2015 modprobe.d
drwxr-xr-x. 2 root root 4096 7月 28 2015 pam.d
drwxr-xr-x. 2 root root 4096 8月 21 2010 popt.d
drwxr-xr-x. 2 root root 4096 7月 28 2015 prelink.conf.d
drwxr-xr-x. 2 root root 4096 5月 5 2015 profile.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc0.d -> rc.d/rc0.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc1.d -> rc.d/rc1.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc2.d -> rc.d/rc2.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc3.d -> rc.d/rc3.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc4.d -> rc.d/rc4.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc5.d -> rc.d/rc5.d
lrwxrwxrwx 1 root root 10 4月 20 2015 rc6.d -> rc.d/rc6.d
drwxr-xr-x. 10 root root 4096 10月 10 10:49 rc.d
drwxr-xr-x. 2 root root 4096 12月 17 2014 rsyslog.d
drwxr-xr-x. 2 root root 4096 11月 4 2014 rwtab.d
drwxr-xr-x. 2 root root 4096 4月 20 2015 setuptool.d
drwxr-xr-x. 2 root root 4096 11月 4 2014 statetab.d
drwxr-x—. 2 root root 4096 10月 15 2014 sudoers.d
drwxr-xr-x. 2 root root 4096 4月 20 2015 xinetd.d
drwxr-xr-x. 27 root root 4096 12月 8 14:06 yum.repos.d
[root@master ~]#
12、復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@master ~]# mkdir /tmp/mytest3; find /etc/ -maxdepth 1 -type f -name "[l-n]*.conf"|xargs -I {} cp {} /tmp/mytest3
[root@master ~]# ll !$
ll /tmp/mytest3
總用量 32
-rw-r–r– 1 root root 28 12月 8 17:41 ld.so.conf
-rw-r—– 1 root root 191 12月 8 17:41 libaudit.conf
-rw-r–r– 1 root root 2293 12月 8 17:41 libuser.conf
-rw-r–r– 1 root root 662 12月 8 17:41 logrotate.conf
-rw-r–r– 1 root root 827 12月 8 17:41 mke2fs.conf
-rw-r–r– 1 root root 2620 12月 8 17:41 mtools.conf
-rw-r–r– 1 root root 1688 12月 8 17:41 nsswitch.conf
-rw-r–r– 1 root root 1778 12月 8 17:41 ntp.conf
[root@master ~]#
原創文章,作者:moer,如若轉載,請注明出處:http://www.www58058.com/62993