本文主要爲學習貼,用來記錄一些linux上的經常使用指令以供參考。linux
從上往下閱讀文件內容面試
cat [-AbEnTv] ${FILE_NAME) cat -n /etc/issue 將該文件的內容輸出到標準輸出中,並顯示行號 cat file1 file2 > file3 將file1 file2的內容依次添加到file3當中
從下往上閱讀文件內容,用法同cat正則表達式
添加行號打印,默認狀況下空白行不顯示行號數據庫
nl [-bnw] ${FILE_NAME} nl -b a file1 即便空白行也顯示行號 nl -b a -n rz file 空白行也顯示行號,而且行號在字段的最右方顯示,且行號不用加0對齊
一頁一頁翻動文件。數組
more ${FILE_NAME} 向下翻動文件 less ${FILE_NAME} 向上/下翻動文件
取文件的前幾行或者最後幾行內容bash
head/tail [-n number] ${FILE_NAME} head -n 10 file 讀取文件前十行的內容 tail -n 10 file 讀取文件後十行的內容 head -n -10 file 不打印文件後十行內容 tail -n +100 file 只打印100行之後的內容 tail -f file 打開文件並持續更新,直到ctrl+c才退出。這個經常使用於查看最新的日誌
查看命令是屬於內置指令仍是外部指令微信
type [-tpa] name -t: 加入-t參數時,會顯示命令的類型,file表示爲外部命令,alias表示爲命令別名設置的名稱,builtin表示爲bash內置的命令功能 -p: 若是name爲外部命令,會顯示完整的文件名 -a: 會將全部在PATH路徑下包含name的命令顯示出來
尋找執行文件,查找命令的完整文件名網絡
which [-a] command #-a會將全部由PATH目錄中能夠找到的命令均列出,而不僅第一個被找到的指令 which ifconfig #在非root用戶下會查找不到,由於ifconfig位於/sbin/ifconfig下,而非root用戶的PATH中不包含該路徑,因此找不到 which cd #找不到,由於cd爲bash的內置命令
根據文件名尋找文件,查找文件的完整文件名less
whereis [-bmsu] 文件或目錄名 -b 只找二進制文件 -m 只找在manual路徑下的文件 -s 只找source源文件 -u 查找不在上述選項中的其餘特殊文件
locate會根據/var/lib/mlocate內的數據庫記載,找出用戶輸入的關鍵字文件名,即全部包含該關鍵字的文件都將被輸出。可是由於數據庫的更新通常爲一天一次,因此若是須要查找新的內容,須要用updatedb指令更新數據庫,updatedb會根據/etc/updatedb.conf去查找硬盤內的文件名,並更新數據庫文件socket
locate [-ir] keyword -i 忽略大小寫差別 -r keyword能夠爲正則表達式
查找文件,磁盤查找,支持通配符
find [PATH] [option] [action] find / -mtime 0 #查找24小時內被修改過的文件 find /etc -mtime 3 #查找3天前的24小時內被修改的文件 find / -mtime +3 #查找3天前(不含3天自己)被更改的文件 find / -mtime -3 #查找3天內被更改的文件 find / -user name #查找用戶名爲name的文件 find / -group name #查找羣組名爲group的文件 find / -nouser #查找不屬於任何用戶的文件,可能出現於網絡文件,或是已經被刪除的用戶建立的文件 find / -name filename #查找文件名爲filename的文件 find / -type TYPE #查找某一類文件,f:正規文件,b:設備文件,d:目錄,l:鏈接文件,s:socket,p:FIFO
*.Z: compress程序壓縮文件 *.gz: gzip程序壓縮文件 *.bz2: bzip2程序壓縮的文件 *.tar: tar程序打包的文件,但沒有被壓縮 *.tar.gz: tar程序打包的文件,其中通過gzip的壓縮 *.tar.bz2: tar程序打包的文件,其中通過bzip2壓縮
gzip能夠解開compress,zip與gzip等軟件所壓縮的文件。gzip壓縮後,源文件會被刪除,被替代爲.gz的壓縮文件。
gzip [-cdtv#] 文件名 -c: 將壓縮的數據輸出到屏幕上,可經過數據流重定向來處理 -d: 解壓縮的參數 -t: 能夠用來校驗一個壓縮文件的一致性 -v: 顯示壓縮比等信息 -#: 壓縮等級,-1最快,-9最慢但壓縮程度最高,默認-6 gzip -d filename: 會將壓縮文件解壓縮,並刪除壓縮文件
tar [-j|-z] [cv] [-f 新建的文件名] filename #壓縮 tar [-j|-z] [xv] [-f 打包文件名] [-C 目錄] #解壓縮 -c: 新建打包文件,可配合v查看過程當中被打包的文件名 -x: 解打包或解壓縮功能,能夠搭配-C在特定目錄中解開 -j: 經過bzip2的支持進行壓縮和解壓縮 -z: 經過gzip支持壓縮和解壓縮 -v: 將正在處理的文件名顯示出來 -C: 在特定目錄中解壓縮 -p: 保留備份數據的本來權限和屬性 -P: 保留絕對路徑,通常狀況下都是相對路徑,防止數據覆蓋 --exclude=FILE: 在壓縮過程當中不要講FILE打包進去 --newer: 打包ctime和mtime在日期後面的文件 --newer-mtime:打包mtime在日期後面的文件 tar -zcv -f filename.tar.gz filename #壓縮打包爲filename.tar.gz tar -zxv -f filename.tart.gz -C 欲解壓縮的目錄 filename
從控制檯讀取輸入
read [-pt] variable -p: 能夠加上提示符 -t: 等待輸入的秒數
declare [-aixr] variable -a: 聲明爲數組 -i: 聲明爲整數 -x: 聲明爲環境變量,用法同export -r: 聲明爲只讀變量 declare -i sum=100+200+300 #若是不聲明爲整數,則會默認爲字符串 declare +r sum #等同於取消操做
${變量#關鍵字} :從變量內容開頭開始,將符合關鍵字的最短數據刪除 ${變量##關鍵字}:從變量內容開頭開始,將符合關鍵字的最長數據刪除 ${變量%關鍵字}:從變量內容最後開始,將符合關鍵字的最短數據刪除 ${變量%%關鍵字}:從比那兩內容最後開始,將符合關鍵字的最長數據刪除 ${變量/舊字符串/新字符串}:將遇到的第一個舊字符串更新爲新字符串 ${變量//舊字符串/新字符串}:將全部舊字符串更新爲新字符串
變量的替換通常是指根據變量非空與否將變量的值進行替換,記憶方法是當公式中含有:
時,則變量不存在與變量爲空字符串爲空,不然只有變量不存在視爲空
var=${str-expr}: 至關於var= str==null ? expr : str var=${str:-expr}: 至關於var= (str==null || str=='') ? expr : str var=${str+expr}: 至關於var=(str==null ? '' : expr) var=${str:+expr}: 至關於var=(str==null || str=='') ? '' : expr var=${str=expr}: 至關於str= str = null ? expr : str, expr = str var=${str:=expr}: 至關於str= str == nul || str == '' ? expr : str, expr = str
>/1>: 以覆蓋的方式將正確的數據輸出到指定的文件或設備上 >>/1>>: 以累加的方式將正確的數據輸出到指定的文件或設備上 2>: 以覆蓋的方式將錯誤信息輸出到指定的文件或設備上 2>>: 以累加的方式將錯誤信息輸出到指定的文件或設備上 <: 將本來須要鍵盤輸入的數據改成文件代替 <<: 結束輸入 find /home -name .bashrc > list 2>&1 #將標準輸出和錯誤輸出都導出到list文件中 cat > catfile < ~/.bashrc #將.bashrc的內容拷貝並覆蓋到catfile中 cat > catfile << "eof" #輸入eof後馬上結束
cut -d '分隔符' -f fields #根據分隔符將每一行分割並取出下標爲fields的值 cur -c 字符範圍 #將每一行字符範圍內的內容切割出來 export | cut -c 12- #將export文件的每一行從第12個字符開始之後全部內容切割出來 echo ${PATH} | cut -d ':' -f 3,5 #將path內容按照:分割開來並取第三個和第五個值
cut在處理多空格分隔的行時會比較吃力
分析一行,當該行中有咱們想要的信息,就將該行輸出
grep [-acinv] [--color=auto] '關鍵詞' 文件名 -a: 將binary文件以text文件的方式進行查找 -c: 打印出現的次數 -i: 忽略大小寫 -n: 同時輸出行號 -v: 反向選擇,即選擇不存在關鍵字的行 --color=auto: 將關鍵字加上顏色顯示 last | grep 'root' | cut -d ' ' -f 1
egrep能夠合併管道命令
egrep -v '^$|^#' filename
這裏|表明或
sed [-nefr] [n1[,n2]function] -n: 只有通過sed特殊處理的那一行纔會被列出來 -e:直接在命令行模式上進行sed的動做編輯 -f filename:將sed動做寫在一個文件內 -r:支持擴展型正則表達式語法 -i:直接修改讀取的文件內容 n1,n2: 通常表明選擇進行動做的行數,$表明最後一行 function: a:新增 c: 替換,會替換n1到n2之間的行 d:刪除 p:將某個選擇的數據打印出來 s:替換,能夠接正則表達式 sed 's/要被替換的字符串/新的字符串/g' cat /etc/passwd | sed -e '4d' -e '6c no six line' #若是要添加多個指令,則必須添加-e
sort [-fbMnrtuk] file/stdin -f: 忽略大小寫 -b:忽略最前面的空格 -M:以月份來排序 -n:使用純數字來排序,默認爲文字類型 -r:倒序 -u:相同數據中,只顯示一行 -t:分隔符,默認爲tab -k:第幾段數據做爲排序標準
統計文件的行數和子樹
wc [-lwm] filename -l: 僅列出行 -w:僅列出多少字 -m: 多少字
去重
uniq [-ic] -i: 大小寫無關 -c: 計數統計
雙重重定向,將一份輸出同時輸出到文件和標準輸出流
tee [-a] filename -a: 添加到文件後面
讀入stdin數據,而且以某種分割字符將其分割成參數。該命令適合於不支持管道的命令來支持管道操做
xargs [-0epn] command -0: 將特殊字符還原成通常字符 -e: EOF,當xargs分析到這個參數時會中止解析 -p:在執行每一個命令的參數時,都會詢問用戶 -n: 後面接次數,要使用幾個參數的意思
主要是處理每一行的字段內的數據,而默認的字段的分隔符爲空格鍵或tab鍵
awk '條件類型{動做1}條件類型2{動做2}...' filename NF:$0每一行擁有的字段總數 NR:目前awk所處理的是第幾行數據 FS: 目前的分隔符 last -n 5 | awk '{print $1 "\t" $3}' #打印一行的第一段文字和第三段文字 last -n 5 | awk '{print $1 "\t lines: " NR "\t columnes: " NF}' cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
以行尾單位比較兩個文件之間的區別,也可比較不一樣目錄之間相同文件的內容
diff [-bBi] from-file to-file from-file和to-file能夠用 - 即標準輸入替代 -b: 忽略一行當中僅有多個空白的區別,如about me和about me視爲相同 -B:忽略空白行的區別 -i:忽略大小寫的區別
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注個人微信公衆號!將會不按期的發放福利哦~