1. 程式人生 > >Day004_Linux基礎命令之特殊符號與正則表示式萬用字元

Day004_Linux基礎命令之特殊符號與正則表示式萬用字元

特殊符號:

. 點 cd . 表示當前目錄

' '' 單引號,所見即所得 原封不動輸出

" ""雙引號,裡面的特殊符號會被解析執行  

`` ====$( ) 先執行() 裡的命令,把結果留下

> 重定向符號  先清空檔案內容, 再追加檔案最後一行

>> 標準輸出追加重定向, 把內容追加到檔案最後結尾.

2> 錯誤重定向,  只有錯誤的資訊才會通過漏斗進入檔案中(先清空,再追加)

2>> 錯誤追加重定向(只追加)

~  當前使用者家目錄 

root  /root

old   /home/old

!  使用查詢並執行歷史命令 

!awk   找到最近的一條包含awk的歷史命令    

history |grep awk (相當於)  # history 顯示歷史命令

# 註釋 

  root使用者的命令提示符

$  awk $ 表示取某一列內容

  普通使用者命令提示符

*  所有 任何東西

\  撬棍, 反斜線,轉義字元

&&  前一個命令執行成功再執行後面一個命令  ifdown eth0 && ifup eth0  (重啟)

||  前一個命令執行失敗再執行後面的命令  (shell程式設計會用到)

eco && echo ok

eco || echo ok   用的較少

 萬用字元:

找出以.log 結尾的檔案   find /var/log -type f -name "*.log"

*  所有, 任意  "*.log"   "*.txt"

找出檔名包含oldboy的檔案

find /oldboy/ -type f -name "*oldboy"  找出以oldboy結尾的檔案(這條命令意思)

find /oldboy/ -type f -name "*oldboy*"  這條是檔名包含oldboy的檔案

{  }  生成序列

echo {1..6} > /oldboy/test.txt

[[email protected] oldboy]# echo {1..6}
1 2 3 4 5 6

cp oldboy.txt{,.bak}  會同時生成一個.txt檔案的備份 .txt.bak 的檔案

-rw-r--r--. 1 root root 27 Nov 13 14:51 oldboy.txt
-rw-r--r-- 1 root root 27 Nov 13 15:04 oldboy.txt.bak   逗號隔開,之前的就是.txt檔案, 之後的就是.txt.bak 檔案

正則表示式:

引子:  一個文字檔案  如何判斷哪一行的內容是身份證號碼: 18位, 包含數字字母 ( 判斷) id.txt

@1 正則表示式是按照行進行處理的

@2禁止使用中文字元.

# 給grep和egrep 配置別名

alias grep="grep --color=auto"

alias egrep="egrep --color=auto"

寫入到/etc/profile 中 source /etc/profile 使其生效即可.

cat >>/etc/profile<<EOF
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
EOF

source /etc/profile

 

grep 和awk 過濾空行的命令;

grep '^$' test.txt   (grep命令過濾空行)

grep -v '^$' test  (grep -v 引數取反)      grep -vn '^$' test.txt  -nv 取反並顯示行號

awk '/^$/' test.txt  (awk 過濾空行)

awk '!/^$/' test.txt  (awk  中用! 取反) 取出除了空行之外的行的內容.

 

sed命令排除空行

sed '/^$/d' test.txt 排除空行, /^$ 表示空行的內容.

使用grep egrep 過濾出檔案的前兩行內容, test.txt (head -n2)

egrep 'oldboy'

 

Linux下檔案系統的軟連結,硬連結

建立軟連結, ln -s 別名 檔名 ln -s oldboy /old/oldboy.txt

建立硬連結, ln 原檔案 新命名檔案

在test目錄下再建立一個目錄 mkdir -p /lodboy/test/001   硬連結數變成了3個

找出當前目錄下所有檔案,將檔案中'a' 替換成'b' 

find /company -type f -name '*.txt"|xargs  sed -i 's#a#b#g'  (找出這個目錄下所有txt檔案,並將其中的a字元替換成b字元)

方法二:

sed -i 's#a#b#g'  $(find /company -type f -name '*.txt")   意思就是將後面執行的結果給前面命令處理

sed -i 's#a#b#g'  `find /company -type f -name '*.txt"`  反引號效果一樣的

方法三:

find /company -type f -name '*.txt" -exec ls  -l {}  \;

例題: 請問一個命令加什麼引數可以實現下面的命令的內容在同一行輸出.

echo "wooyun";echo "wooyun"

答: echo "wooyun"  `echo "wooyun"`  或者 echo "wooyun" $(echo "oldboy")  均能實現以上效果 , 如果輸出為單獨兩行 就用&& 連線兩條命令.

請給出如下格式的date命令

例::11-02-26

再給出實現按周輸出,比如

 

`` $( )   先執行裡面的命令,再將結果展示出來.

 

date命令 

 date +%F 顯示的是年月日  date +%Y-%m-%d

[[email protected] oldboy]# date +%F
2018-11-14
[[email protected] oldboy]# date +%Y-%m-%d
2018-11-14

date +%w 顯示的是周幾.

 顯示年-月-日-周幾

date +%F-%w

date +%T 時分秒 的時間  ===> date+%H:%M:%S 

[[email protected] oldboy]# date +%T
15:57:20

顯示3天前的日期

date -d "-3day" +%F 

date -s 設定時間

date -s "+1hour"  往後設定時間

ntp伺服器,給網上的ntp伺服器對時間

ntpdate pool.ntp.org

pool.ntp.org

ntp1.aliyun.com 

 

 

 

 

 

 

 

 

 

 

 

 

 

基礎正則 和高階正則