1. 程式人生 > >Linux常用基礎命令操作(二)

Linux常用基礎命令操作(二)

cube 邊界 命令 family 轉義 linu 追加 rwx 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常用基礎命令操作(二)