Linux最常用命令集錦

一、文件,目錄

cd  /home  進入'/home'目錄
cd ..  返回上一級
cd ../.. 返回上兩級
cd 或者 cd ~ 進入主目錄
cd - 返回上次所在目錄
pwd  顯示工作路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件的和目錄的詳細資料
ls -a 顯示隱藏文件
ls *[0-9]* 顯示包含數字的文件名和目錄名
tree 顯示文件和目錄的詳細資料
mkdir dir1 dir2 創建'dir1和dir2'兩個文件
mkdir -p  /tmp/dir1/dir2   創建一個目錄樹
rm -f file  刪除一個叫做'file'的文件
rmdir  dir1 刪除一個叫做'dir1'的目錄
rm -rf  dir1  dir2 刪除兩個目錄以及它們的內容
mv dir1 new_dir   重命名/移動一個目錄
cp file1 file2 複製一個文件
cp dir/*  .   複製一個目錄下的所有文件到當前目錄
cp -a /dir1  .  複製一個目錄到當前目錄
cp -a dir1  dir2 複製一個目錄
ln -s file lnk_file  創建一個指向文件或者當前目錄的軟連接
ln file lnk_file 創建一個指向文件或當前目錄的物理連接
touch -t  1910200000 file  修改一個文件或目錄的時間戳(YYMMDDHHMM)
iconv -l 列出已知的編碼

二、文件搜索 find命令:
按訪問時間: -atime/天, -amin/分鐘 最後一次訪問時間
按修改時間: -mtime/天,-mmin/分鐘 最後一次修改時間
按變化時間: -ctime/天, -cmin/分鐘 最後一次數據元(如權限)修改的時間
find / -type f -mtime -30 (其中 -30是30天以內,+30是30天以外)

find /temp/ -type f -mtime +2 -print  找出 2天前的文件
find /temp/ -type f -mtime +2 -print -exec rm -f {} \; 找出並刪除 2天前的文件
find /temp/ -type f -mtime +7 -print | xargs rm -f  找出並刪除 2天前的文件
find /ztf  -type f -ls | sort -k 7 -r -n | head -10 查找/ztf下最大的前10個文件
find /ztf -type  -size +5120M -exec  ls -lh {} \; 查找/ztf下大於5GB的文件:
find /ztf -ctime 0 -print -exec cp {} /hxg/ {} \;找出今天的所有文件並將它們拷貝到另一個目錄
find /ztf -type f -name *.jpg -exec rename 'y/[A-Z]/[a-z]/' '{}' \; 查找所有的jpg文件,並修改所有的大寫字母爲小寫字母
find /  -name file    從 '/' 開始進入根文件系統搜索文件和目錄
find /  -user user1 搜索屬於用戶'user1'的文件和目錄
find /ztf  -name \*.jpg  在目錄'/ztf'中搜索以.jpg結尾的文件
find /ztf -type f -atime +2  搜索過2天內未被使用過的執行文件
find /ztf -type f -mtime -2 搜索在2天內被創建或修改過的文件
#附加:
whereis file  (只能用於查找二進制文件、源代碼文件和man手冊頁)
which   file (會在環境變量$PATH設置的目錄裏查找符合條件的文件)
locate  file(查找符合條件的文檔,他會去保存文檔和目錄名稱的數據庫內)

三、文本處理
awk常用內建變量
在這裏插入圖片描述
1.awk命令:支持很多運算符操作
(1)一個文件,格式如下:
時間            接口名           耗時
2019-10-21-11:00  http://zhangtengfei-steven.cn   0.05

求某個接口的平均耗時

awk 'BEGIN {total = 0; count = 0; print "[start] jj time count is ", total} {if($2 == "接口名"){ total = total + $3; count = count + 1; print $3, count, total, total / count;}} END {print "[end] time count is",total}'  文件路徑

(2) 每行按空格或TAB分割,輸出文本中的1、4項

 awk '{print $1,$4}' log.txt

(3)兩個文件,如下所示,這兩個文件格式都是一樣的。我想首先把文件2的第五列刪除,然後用文件2的第一列減去文件一的第一列,把所得的結果對應的貼到原來第五列的位置

awk 'NR==FNR{a[NR]=$1}NR!=FNR{$5=$1 - a[FNR];print}' file2 file1

註解:當NR==FNR時,是第一個文件,到了第二個文件時FNR會從0開始計數,而NR卻繼續在原來的基礎上自增。
先把第一個文件中要使用的內容保存到一個數組中,然後在處理第二個文件時才使用。
(4)如何用awk取出來最多列數所在的哪一行行號

awk 'BEGIN{lin=0;nf=0}{if(nf < NF){lin=NR;nf=NF}}END{print "行號:"lin,"列數:"nf}' file路徑

(5)求一個文件裏面 ‘str’ 字符出現的次數,並替換爲特定字符new_str

awk '{a=gsub(/str/,"new_sr");sum = sum + a ; print $0,a}END{print "一共出現了:"sum"次"}' 文件路徑

只是簡單的統計:

awk -F "" '{for(i=1;i<=NF;++i) if($i=="str") ++sum}END{print sum}'  文件路徑

(6)顯示出包含str1和包含str2的行的中間行

awk '/str1/,/str2/{print $0}'  文件路徑
  1. 常規文本操作:
cat file (| sed/grep/awk..做一些文本限制和操作)  >  new_file   將信息寫入文件
cat file1 (| sed/grep/awk..做一些文本限制和操作)  >> file2      把file1裏的 內容追加到file2
grep hxg  /ztf/1.txt  在 1.txt文件中查找關鍵字 'hxg'
grep ^hxg /ztf/1.txt   在1.txt文件中查以'hxg'開頭的詞彙
grep [0-9] /ztf/1.txt  在1.txt文件中查所有包含數字的行
grep hxg /ztf/*   在 /ztf以及隨後目錄中搜索字符串'hxg'
sed  's/old_str/new_str/g'  file  將file中的old_str 全部替換爲new_str 
sed '/^$/d' file  將file中的空白行刪除
sed -e '1d' 1.txt 排除1.txt文件的第一行
sed -n '/str/p'  file  在file找 出現str字符串的行
sed -n '1,2p' file 打印file1-2行
cat -n file 顯示行號查看file文件
cat  file | awk 'NR%2==1' 刪除file文件中的所有偶數行 顯示
paste file1 file2  合併兩個文件
sort file1 file2 排序兩個文件的內容
sort file1 file2 | uniq  取出兩個文件並集
sort file1 file2 | uniq -u 刪除交集,留下其他行
sort file1 file2 | uniq -d 取出兩個文件的交集
comm -1 file1 file2  比較兩個文件的內容只刪除 'file1' 所包含的內容 
comm -2 file1 file2 比較兩個文件的內容只刪除 'file2' 所包含的內容 
comm -3 file1 file2 比較兩個文件的內容只刪除兩個文件共有的部分 

四、進程操作 PS

-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程`
au(x) 輸出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 佔用的 CPU 使用率
%MEM: 佔用的記憶體使用率
VSZ: 佔用的虛擬記憶體大小
RSS: 佔用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)

ps -u ztf    查看用戶'ztf'的進程
ps -aux --sort -pcpu | less  根據 CPU 使用來升序排序,找到哪個進程佔用了你的資源
ps -f -C ztf        顯示一個名爲ztf的進程的信息(-f 加上顯示信息更全)
ps -aux | grep name  根據名字查看進程信息
top -p pid       查看程序的情況 
ps -L pid或者top -Hp pid   知道特定進程的線程

五、其他命令:

chmod   改變文件權限
chgrp  改變文件所屬用戶組
head  -n 20  file 取出file前20行
tail -n +10  file  取出file後10行
df 列出文件系統的整體磁盤使用量
du 評估文件系統的磁盤使用量
env  查看環境變量與常見環境變量說明
grep 分析一行信息,若匹配想找的數據則將該行取出來
sort 排序命令
uniq 排序完成但是將重複的數據僅列出一個顯示
diff 文件比較工具
useradd /userdel  新增用戶/ 刪除用戶
passwd 設置密碼
groupadd/groupdel /新增用戶組/刪除用戶組
su 切換身份
id 查看當前用戶的id
who或w  查看目前登錄在系統上的用戶
free 查看內存使用情況
uname 查看系統與內核相關信息
uptime  查看系統啓 動時間與工作負載
netstat  跟蹤網絡
ifconfig 查看網卡信息
ssh 遠程登錄linux主機
scp 遠程拷貝
service 查看服務
kill -HUP PID 重啓進程
killall  -9 -i vim 主要用於批量殺死web服務器進程
pkill -9 -t  終端號   按照終端號踢出用戶

小常識:
管道和命令替換的區別是:
管道:管道符號"|“左邊命令的輸出作爲右邊命令的輸入
命令替換:將命令替換符”``"中命令的輸出作爲其他命令相應位置的參數
如:

#根據進程名字進行查詢某個進程的線程:
pstree -p `ps -e | grep server | awk '{print $1}'`

xargs命令是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它能夠將標準輸入或管道中的數據轉換爲特定命令的命令行參數,也可以將單行或多行文本輸入轉換爲其他格式的數據,比如單行變多行或者多行變單行。xargs的默認命令是echo,默認分隔符是空格。通過xargs的處理,換行和空白都會被替換爲空格。

cat file | xarg -n3   每行3個字符輸出  字符之間有空格
echo "a,b" xargs -d,    指定一個域分隔符,將特定列打散,並指定格式輸出
echo "a,b" xargs -d, -n1 基於上面,每行打印一個。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章