Linux常用基礎命令操作(二)
10 >輸出重定向 文件不存在則創建文件,文件存在則清空內容 放入>左邊的內容 比較危險 建議備份後操作
>>追加輸出重定向,在文本結尾追加內容,不刪除原內容
<輸入重定向
<<追加輸入重定向
箭頭指向為數據流向
[root@m01 abc]# cat >>white.txt<<EOF
> i am white bai
> thankyou
> EOF
[root@m01 abc]# cat white.txt
i am white bai
thankyou
[root@m01 abc]# > white.txt [root@m01 abc]# cat white.txt
[root@m01 abc]# echo "who are you">>white.txt
[root@m01 abc]# cat white.txt
i am white bai
thankyou
who are you
0是標準輸入:一般配合<< <使用,數據流從右到左
1是標準正常輸出,一般配合>> >使用,數據流從左到右
2是標準錯誤輸出,把錯誤內容輸入到後面的文件,數據流從左到右
2>錯誤重定向,把錯誤的信息輸入到後面文件,刪除原有文件
2>>錯誤追加重定向,把錯誤的信息追加到後面文件,不刪除原內容
[root@m01 abc]# cat a.txt
qwe
[root@m01 abc]# cat b.txt
[root@m01 abc]#
[root@m01 abc]# eho qwe 1>a.txt 2>b.txt
[root@m01 abc]# cat a.txt
[root@m01 abc]# cat b.txt
-bash: eho: command not found
如果a內正確和錯誤的都寫一個文件echo qwe 1>a.txt 2>a.txt(麻煩)一般寫為echo qwe 1>a.txt 2>&1(推薦)或echo qwe &>a.txt(錯誤輸出和正確輸出在一個位置)
11、cp 拷貝,復制
常用參數
-r 遞歸 -p連同文件屬性一起拷貝 -d 目錄 -a等價於-pdr -i覆蓋前提示(默認)
不加參數只能復制文件
[root@m01 abc]# cp a.txt /tmp/
[root@m01 abc]# ll /tmp/
total 6372
-rw-r--r-- 1 jenkins jenkins 19673 Sep 12 20:59 akuma304166024346870543jar
-rw-r--r-- 1 jenkins jenkins 19673 Sep 10 18:41 akuma6786136470976806683jar
-rw-r--r-- 1 root root 0 Sep 20 22:27 a.txt
[root@m01 data]# cp abc/ /tmp/
cp: omitting directory ‘abc/’
[root@m01 data]# cp abc/ /tmp/ -a
[root@m01 data]# ll /tmp/
total 6372
drwxr-xr-x 3 root root 60 Sep 20 22:21 abc
[root@m01 data]# cp abc/ /tmp/ -a
cp: overwrite ‘/tmp/abc/white.txt’?
如果想覆蓋不提示 \cp 使用則覆蓋不提示
12、mv 移動,修改文件名
常用參數
-r 遞歸 -p連同文件屬性一起移動 -d目錄 -a等價於-pdr
不加參數只能復制文件
[root@m01 data]# cd abc/
[root@m01 abc]# mv a.txt ../asd/
[root@m01 abc]# tree
.
├── bas
├── b.txt
└── white.txt
1 directory, 2 files
[root@m01 abc]# tree ../asd/
../asd/
└── a.txt
註意 移動多個文件到目錄 結尾一定是目錄
13、rm 刪除文件
常用參數
-f 強制刪除 -r刪除目錄 (普通文件不能加-r) rm -fr 刪除後無法恢復
[root@m01 abc]# cp b.txt b.txt.bak
[root@m01 abc]# ll
total 12
drwxr-xr-x 2 root root 6 Sep 20 15:58 bas
-rw-r--r-- 1 root root 30 Sep 20 22:22 b.txt
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
[root@m01 abc]# rm -f b.txt
[root@m01 abc]# ll
total 8
drwxr-xr-x 2 root root 6 Sep 20 15:58 bas
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
[root@m01 abc]# rm -fr bas/
[root@m01 abc]# ll
total 8
-rw-r--r-- 1 root root 30 Sep 20 22:33 b.txt.bak
-rw-r--r-- 1 root root 37 Sep 20 22:14 white.txt
刪除的正確操作(謹慎操作)
a,刪除文件前使用mv命令移動到/tmp替代刪除
b,進入目標目錄cd;find . -type f -name " " |xargs rm -i(通過管道傳遞後沒有-i不會提醒是否刪除)
14、find 查找文件
常用參數
-type 查詢類型 f文件 d目錄 c字符 b磁盤 s(通信用) l鏈接
-a 交集 (默認) -o 並集
-name 查詢名字 -maxdepth 查找深度(幾級目錄) -mtime 修改時間 +7 7天前 同理(-ctime修改時間 -atime接入時間 均不常用)
[root@m01 abc]# find /data -type f -name "a.txt"
/data/asd/a.txt
[root@m01 abc]# find /data -type f -name "a.txt" -exec rm {} \;
#等價於(建議使用下面命令)
[root@m01 abc]# find /data -type f -name "a.txt" |xargs rm -f;
[root@m01 ~]# find /data -type f ! -name "*.sh" -mtime +7|xargs cat
[root@m01 ~]# find /log -type f -name "*oldboy" -mtime +15|xargs rm -rf
| 管道 把所有東西放在一起
15、grep 過濾
常用參數
-v 過濾掉後面的內容排除後打印
-n對匹配的內容打印行號 (不常用)
-w按照單詞搜索相當於 \b邊界 (不常用)
\b邊界 \n換行 (不常用)
-i不區分大小寫
egrep 等價於grep -E 擴展grep可以過濾多個
[root@m01 ~]# grep 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
[root@m01 ~]# grep -i \(mysql /etc/services #查找(mysql 不區分大小寫
sphinxql 9306/tcp # Sphinx search server (MySQL listener)
#\ 轉義
[root@m01 ~]# egrep "3306|1521" /etc/services
#或
[root@m01 ~]# grep -E "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
16、alias 查看或設置系統現有的別名
(可以為一些危險命令加一些保護參數,防止互操作,可以把復雜的字符串和命令變成的簡單的字符串,可以定義命令alias a=‘cp‘ a就可以進行cp一樣的操作了;該命令位置為內存內,建議保存至/etc/profile或者~/.bashrc就永久生效)
[root@m01 ~]# alias cp
alias cp=‘cp -i‘
[root@m01 ~]# alias ll
alias ll=‘ls -l --color=auto‘
17、unalias 刪除系統命令的別名
cp為cp -i(-i提示是否確認)不推薦使用,理解原理
18、seq 序列(只能生成數字序列)
常用參數 -w相等長度 seq 1 2 10 從1-10 間隔2
[root@m01 ~]# seq 1 2 10 >1.txt
[root@m01 ~]# seq -w 1 2 10 >2.txt
[root@m01 ~]# cat 1.txt
1
3
5
7
9
[root@m01 ~]# cat 2.txt
01
03
05
07
09
19、tree 目錄樹狀顯示
常用參數
-d只顯示目錄 -L 數字 最多顯示數字層的目錄 -f顯示完整目錄結構 -i顯示目錄不打印樹枝 -F區分普通文件和特殊文件
[root@m01 ~]# tree /data/abc/
/data/abc/
├── b.txt.bak
├── white.txt
└── www
└── asd
└── aaa
3 directories, 2 files
[root@m01 ~]# tree -L 2 /data/abc/
/data/abc/
├── b.txt.bak
├── white.txt
└── www
└── asd
[root@m01 ~]# tree -dL 1 /data/abc/
/data/abc/
└── www
[root@m01 ~]# tree -f /data/abc/
/data/abc
├── /data/abc/b.txt.bak
├── /data/abc/white.txt
└── /data/abc/www
└── /data/abc/www/asd
└── /data/abc/www/asd/aaa
[root@m01 ~]# tree -i /data/abc/
/data/abc/
b.txt.bak
white.txt
www
asd
aaa
Linux常用基礎命令操作(二)