Linux 基本操作命令

三杯兩盞石酒發表於2019-08-07

檔案和目錄管理

建立和刪除

  • 建立:mkdir
  • 刪除:rm
  • 刪除非空目錄:rm -rf file目錄
  • 刪除日誌 rm log (等價: $find ./ -name “log” -exec rm {} ; )
  • 移動:mv
  • 複製:cp (複製目錄:cp -r )
  • 建立檔案 touch

檢視

  • 顯示當前目錄下的檔案 ls
  • 按時間排序,以列表的方式顯示目錄項 ls -lrt
ls -l
  • 檢視檔案內容 cat 可以加more 、less控制輸出的內容的大小
cat a.text
cat a.text | more
cat a.text| less

許可權

  • 改變檔案的擁有者 chown
  • 改變檔案讀、寫、執行等屬性 chmod
  • 遞迴子目錄修改: chown -R tuxapp source/
  • 增加指令碼可執行許可權: chmod a+x myscript

管道和重定向

  • 把前一個命令的執行結果當做後一個命令的輸入 |
  • 串聯: 使用分號 ;
  • 前面成功,則執行後面一條,否則,不執行: &&
  • 前面失敗,則後一條執行: ||
ls /proc && echo  suss! || echo failed.

文字處理

檔案查詢 find

find 引數很多,本文只介紹幾個常用的

  • -name 按名字查詢
  • -type 按型別
  • -atime 訪問時間
    find . -atime 7 -type f -print
    find . -type d -print  //只列出所有目錄
    find / -name "hello.c" 查詢hello.c檔案

文字查詢 grep

grep match_patten file // 預設訪問匹配行

常用引數

  • -o 只輸出匹配的文字行 VS -v 只輸出沒有匹配的文字行
  • -c 統計檔案中包含文字的次數
  • grep -c “text” filename
  • -n 列印匹配的行號
  • -i 搜尋時忽略大小寫
  • -l 只列印檔名
    grep "class" . -R -n # 在多級目錄中對文字遞迴搜尋(程式設計師搜程式碼的最愛)
    cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b #將日誌中的所有帶where條件的sql查詢查詢出來

文字替換 sed

sed [options] 'command' file(s)
  • 首處替換
sed 's/text/replace_text/' file   //替換每一行的第一處匹配的text
  • 全域性替換
sed 's/text/replace_text/g' file

預設替換後,輸出替換後的內容,如果需要直接替換原檔案,使用-i:

sed -i 's/text/repalce_text/g' file
  • 移除空白行
sed '/^$/d' file
sed 's/book/books/' file #替換文字中的字串:
sed 's/book/books/g' file
sed '/^$/d' file #刪除空白行

資料流處理awk

詳細教程可以檢視 http://awk.readthedocs.io/en/latest/chapte...

awk ' BEGIN{ statements } statements2 END{ statements } '

工作流程

1.執行begin中語句塊;

2.從檔案或stdin中讀入一行,然後執行statements2,重複這個過程,直到檔案全部被讀取完畢;

3.執行end語句塊;

特殊變數

NR:表示記錄數量,在執行過程中對應當前行號;

NF:表示欄位數量,在執行過程總對應當前行的欄位數;

$0:這個變數包含執行過程中當前行的文字內容;

$1:第一個欄位的文字內容;

$2:第二個欄位的文字內容;

awk '{print $2, $3}' file
# 日誌格式:'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'
#統計日誌中訪問最多的10個IP
awk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

排序 sort

  • -n 按數字進行排序 VS -d 按字典序進行排序
  • -r 逆序排序
  • -k N 指定按第N列排序
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之類的前導空白字元

去重uniq

  • 消除重複行
sort unsort.txt | uniq

統計 wc

wc -l file // 統計行數
wc -w file // 統計單詞數
wc -c file // 統計字元數
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章