面試常用的shell命令彙總
來源:大資料球球
命令列操作
1、輸出第十行文字的內容
sed -n '10p' jmeter.log
2、查詢電話號碼
(xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一個數字)
grep -E "^\([0-9]{3}) [0-9]{3}-[0-9]{4}$|^[0-9]{3}-[0-9]{3}-[0-9]{4}$" file.txt
3、統計文字字元數量
方法一
grep -E "\b[[:alpha:]]+\b" a.txt -o | sort -r | uniq -c| sort -rn
方法二
cat words.txt | tr -s ' ' '\n'|sort|uniq -c |sort -r|awk '{print $2" "$1}'
cat words.txt | xargs -n1 | sort | uniq -c
cat ——瀏覽檔案
tr -s ——替換字串(空格換為換行)保證了一行一個單詞
sort ——預設ASCII值排序,排序號後還會有重複
uniq —— 去重,-c再輸出重複次數。結果就是 ”4 abc“ abc出現了4次
sort
-r —— 反向排序,也就是從大到小。得到按頻率高低的結果;
-n 按照數值比較排序
awk ——格式化輸出,規定輸出是先字串再重複次數,所以先$2再$1,中間空格分隔
4、檔案列轉為行
1.獲取列數
col=$(wc file.txt | awk '{print $2 / $1}')
2. 按列列印
for i in `seq 1 $col`
do
awk -v col="$i" '{print $col}' file.txt |xargs
done
操作檔案
sed 命令
Linux sed 命令是利用指令碼來處理文字檔案。
sed 可依照指令碼的指令來處理、編輯文字檔案。
Sed 主要用來自動編輯一個或多個檔案、簡化對檔案的反覆操作、編寫轉換程式等。語法
sed [-hnV][-e<script>][-f<script檔案>][文字檔案]
引數說明:
-e<script>或--expression=<script> 以選項中指定的script來處理輸入的文字檔案。
-f<script檔案>或--file=<script檔案> 以選項中指定的script檔案來處理輸入的文字檔案。
-h或--help 顯示幫助。
-n或--quiet或--silent 僅顯示script處理後的結果。
-V或--version 顯示版本資訊。
動作說明:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 後面通常不接任何東東;
i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行~
s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示式!例如 1,20s/old/new/g 就是啦!
如何使用Linux命令來移除檔案頭?
解答:當我們需要刪除檔案中的指定行時,‘sed’命令可以用來解決該問題。
這個是用來刪除檔案頭(檔案的首行)的正確命令。
sed '1 d' file.txt
上面命令的問題是,它會在標準輸出裝置上輸出不帶首行的檔案內容。為了儲存輸出到檔案,我們需要使用重定向運算子,它將幫助你將輸出重定向到檔案。
# sed '1 d' file.txt > new_file.txt
好吧,其實sed命令內建的‘-i’開關就可以幹這活,就不需要重定向符了吧。
# sed -i '1 d' file.txt
你怎麼檢查一個文字檔案中某一行的長度?
解答:‘sed’命令也可以用來查詢文字檔案中的某一行或者檢查其長度。
sed -n 'n p' file.txt
可以解決,這裡n
表示行號,‘p’列印出匹配內容(到標準輸出),該命令通常與-n命令列選項連用。那麼,怎樣來獲取長度計數呢?很明顯,我們需要透過管道輸出給‘wc’命令來計算。
# sed –n 'n p' file.txt | wc –c
要得到文字檔案‘linuxmi.txt’的第五行的長度,執行如下命令:
# sed -n '5 p' linuxmi.txt | wc -c
可以在Linux系統上檢視到所有非列印字元嗎?你是怎麼做到的?
解答:可以。可以在Linux中檢視所有的非列印字元。要實現上面所講的方案,我們需要‘vi’編輯器的幫助。怎樣在‘vi’編輯器中顯示非列印字元?
開啟vi編輯器。
先按[esc]
鍵,然後按‘:’進入到vi編輯器的命令模式。
最後,從‘vi’編輯器的命令介面輸入set list
命令並執行。
注: 這種方式可以檢視文字檔案中的所有非列印字元,包括ctrl+m(^M)。
假如你是一個員工組的團隊領導,為xyz公司工作。公司要求你建立一個‘dir_xyz’目錄,讓該組成員都能在該目錄下建立或訪問檔案,但是除了檔案建立者之外的其他人不能刪除檔案,你會怎麼做?
解答:這真是個有趣的工作方案。好吧,上面所講的方案,我們需要透過下面的步驟來實施,這簡直就是小菜一碟。
# mkdir dir_xyz
# chmod g+wx dir_xyz
# chmod +t dir_xyz
第一行命令建立了一個目錄(dir_xyz),上面的第二行命令讓組(g)具有‘寫’和‘執行’的許可權,而上面的最後一行命令——許可權位最後的‘+t’是‘粘滯位’,它用來替換‘x’,表明在這個目錄中,檔案只能被它們的擁有者、目錄的擁有者或者是超級使用者root刪除。
你能告訴我一個Linux程式經歷的各個階段嗎?
解答:一個Linux程式在它的一生中,通常經歷了四個主要階段。
這裡是Linux程式要經歷的四個階段。
等待:Linux程式等待資源。
執行:Linux程式當前正在執行中。
停止:Linux程式在成功執行後或收到殺死程式訊號後停止。
殭屍:如果該程式已經結束,但仍然留在程式表中,被稱為‘殭屍’。
Linux中cut命令怎麼用?
解答:‘cut’是一個很有用的Linux命令,當我們要擷取檔案的指定部分並列印到標準輸出,當文字區域以及檔案本身很大時,這個命令很有用。
例如,擷取txt_linuxmi
檔案的前10列。
# cut -c1-10 txt_linuxmi
要擷取該檔案中的第二,第五和第七列。
# cut -d;-f2 -f5 -f7 txt_linuxmi
‘cmp’和‘diff’命令的區別是什麼?
解答:‘cmp’和‘diff’
命令用來獲取相同的東西,但各有側重。
‘diff’命令輸出為了使兩個檔案一樣而應該做的修改。而‘cmp’命令則將兩個檔案逐位元組對比,並報告第一個不匹配的項。
可以用‘echo’命令來替換‘ls’命令嗎?
解答:可以的。‘ls’命令可以用‘echo’命令來替代。‘ls’命令列出目錄內容,從替換上述命令的角度講,我們可以使用‘echo *’,兩個命令的輸出完全一樣。
你可能聽過inode吧。你能簡要描述一下inode嗎?
解答:‘inode’是一個‘資料結構’,在Linux上用於檔案標識。每個檔案在Unix系統上有一個獨立的‘inode’和一個‘唯一的’inode號。
find 命令使用
按名稱或正規表示式查詢檔案
讓我們從最簡單的用法開始。要按特定名稱搜尋檔案,命令如下:
find.-nametest.txt
如何查詢所有格式為 pdf 的書籍?使用正規表示式:
find./yang/books-name"*.pdf"
預設情況下,find 命令會搜尋常規檔案,但最好進行指定(-type f)以使所有內容更清晰:
find./yang/books-typef-name"*.pdf"
查詢不同型別的檔案
除了搜尋常規檔案外,我們還可以透過指定-type選項來搜尋其他型別的檔案。
例如目錄:
find.-typed-name"yang*"
或者符號連結:
find.-typel-name"yang*"
按指定的時間戳查詢檔案
要按指定的時間戳搜尋檔案,我們需要知道 Linux 系統中的 3 個不同的時間戳:
訪問時間戳(atime):最後一次讀取檔案的時間。**修改時間戳 (mtime)**:檔案內容最後一次被修改的時間。**更改時間戳 (ctime)**:上次更改檔案後設資料的時間(如,所有權、位置、檔案型別和許可權設定) 所以,正如開頭提到的面試題,要搜尋atime超過一年的檔案,我們可以編寫如下命令:
find.-typef-atime+365
如果我們需要查詢mtime正好是 5 天前的檔案,請不要包含+,因為它的意思是“大於”。
find.-typef-mtime5
顯然,+表示“大於”,-表示“小於”。所以我們可以搜尋ctime在 5~10 天前的檔案:
find.-typef-ctime+5-ctime-10
按大小查詢檔案
-size
選項使我們能夠按指定大小查詢檔案。我們可以將其計量單位指定為以下約定:
b:512 位元組塊(預設)
c:位元組
w:雙位元組字
k:KB
M:MB
G:GB
類似於按時間戳查詢檔案,+表示“大於”,-表示“小於”。例如,要查詢大小為 10 MB ~ 1 GB 的檔案:
find.-typef-size+10M-size-1G
按許可權查詢檔案
合理控制檔案的許可權是 Linux 管理員的一項重要任務。find命令的-perm選項可以幫助我們按指定許可權查詢檔案:
find.-typef-perm777
例如,上面的命令會搜尋所有具有 777 許可權的檔案,這意味著一個檔案對其持有者、組和所有使用者具有所有的讀、寫和可執行許可權。
按所有權查詢檔案
這個任務很簡單。我們可以使用-user選項指定使用者名稱。例如,以下命令將查詢所有屬於yang的檔案:
find-typef-useryang
在找到檔案後執行命令
在大多數情況下,我們希望在找到我們需要的檔案後進行後續操作。例如將其刪除,或檢查它們的詳細資訊等等。-exec命令使這些所有事情變得更加容易。
現在,要了解如何使用它,讓我們回到之前提到的面試問題:
find.-typef-atime+365-execrm-rf{}\;
上述命令在-exec選項後是rm -rf,其用於刪除檔案。{}是用於查詢結果的佔位符。
注意:佔位符{}非常重要,尤其是在您想刪除檔案時。因為,如果您不使用它,該命令將對所有檔案執行(而不是您剛剛透過 find 命令找到的檔案)。
做一個嘗試,請在終端上執行以下兩個命令,並檢查它們的結果有何不同:
一個使用佔位符:
find.-typef-atime+5-execls{}\;
另一個不使用:
find.-typef-atime+5-execls\;
-exec
選項後面的命令必須以分號(;)結束。眾所周知,跳脫字元用於去除單個字元的特殊含義。在 Linux 中,反斜槓\用作跳脫字元。所以我們將它用於分號字元。
總 結
看完find命令的 7 種用法後,開始提到的面試題現在好像很容易解決了。你現在可以直接寫下它的答案並將其解釋清楚嗎?
find.-typef-atime+365-execrm-rf{}\;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027827/viewspace-2998904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 34個Android常用adb shell命令彙總Android
- 常用壓縮命令彙總
- Mysql常用命令彙總MySql
- npm常用命令彙總NPM
- ffmpeg常用命令彙總
- shell常用的命令
- MongoDB shell常用命令總結MongoDB
- hbase shell常用命令總結
- 解壓命令unzip常用方法彙總
- linux 常用命令彙總Linux
- MongoDB常用命令彙總(一)MongoDB
- 【Git】git常用命令彙總Git
- 常用shell 命令
- DB2常用命令彙總DB2
- 15個常用Linux命令列總彙Linux命令列
- zt_aix常用命令彙總AI
- 運維人員常用的Linux命令彙總運維Linux
- Linux運維常用的20個命令彙總!Linux運維
- Redis日常運維-常用命令彙總Redis運維
- ceph叢集常用命令精華彙總!
- yum語法及常用命令彙總
- HBase 常用Shell命令
- 酷帥吊炸天的 Pandas 常用操作命令彙總
- Mac 下常用的 Shell 命令Mac
- Vagrant box 命令彙總彙總
- 常用js彙總JS
- SQL的基本命令和幾個常用函式彙總SQL函式
- 常用的vi指令彙總
- Shell常用命令
- 常用的shell命令和使用技巧
- SHell命令總結
- artisan命令彙總
- vagrant命令彙總
- go 命令彙總Go
- ClickHouse 命令彙總
- Git命令彙總Git
- VI命令彙總
- Find命令總彙