1. 程式人生 > >Linux 練習題-1 入門

Linux 練習題-1 入門

Linux

1、創建目錄/data/test ,在該目錄下創建文件your_name.txt,在文件裏寫入內容"inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0 "(不含引號)

2、過濾題1文件內容,只輸出以下內容

10.0.0.8 10.0.0.255 255.255.255.0

awk -F "[ :]+" '{print $3,$5,$7}' sxr.txt

3、將題1test目錄移動到/tmp目錄下,並將/etc/passwd文件復制到/tmp/oldboy

4、在題3基礎上,用awkpasswd文件的第

5行到15行的第三列重定向到/tmp/test/test.txt文件裏

awk -F ":" 'NR>=5 && NR<=15 {print $3}' passwd > text.txt

5、在題3基礎上要求用命令rm刪除文件時提示如下禁止使用rm的提示,並使該效果永久生效

技術分享圖片

alias rm='echo You not use rm command' #別名裏不能有'號,如can't這種是不行的

永久生效需要將命令復制到/etc/profile /etc/bashrc

6、在題3的基礎上,刪除/tmp/test/

下除passwd以外的其他文件

find /tmp/data/ -type f ! -name "passwd" | xargs rm -f

7、在題3基礎上,打印/etc/passwd文件中的第2-5行(最少三種方法)

head -5 passwd | tail -4

tail -n +2 passwd | head -4

sed -n '2,5p' passwd

awk 'NR>1 && NR<6 {print $0}' passwd

8、在題3基礎上,用命令調換passwd文件裏root位置和/bin/bash位置,即將第一行的第一列和最後一列位置調換

技術分享圖片

awk -F":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6";"$1}' passwd

head -1 /etc/passwd | \sed -nr 's#([^:]+)(:.*:)(/.*$)#\2#gp'

9、把/test目錄及其子目錄下所有以擴展名.txt結尾的文件中包含sorry的字符串全部替換為thank

find /data/test -type f -name "*.txt" | xargs sed -i 's/sorry/thank/g'

find /data/test -type f -name "*.txt" | xargs -i sed -i 's/sorry/thank/g {}'

10、查找/test 下所有7天以前以log結尾的大於1M的文件移動/tmp

find /data/test -type f -name "*.log" -mtime +7 -size +1M | xargs -i mv {} /tmp

註:ls -l 顯示的文件修改時間是mtime

rename .txt .log * #將所有.txt文件修改為.log文件

11、什麽是Linux的運行級別,描述linux的運行級別不同數字的含義

運行級別就是操作系統運行的功能級別。不同的運行級別在功能上會有所差異

inux下有7個運行級別 0123456

0系統停機模式

1單用戶模式

2多用戶模式

3完整的多用戶文本模式

4系統未使用

5圖形化模式

6重啟模式

12、描述buffercache的區別

總結1

cache 是為了彌補高速設備和低速設備的鴻溝而引入的中間層,最終起到**加快訪問速度**的作用。

buffer 的主要目的進行流量×××,把突發的大數量較小規模的 I/O 整理成平穩的小數量較大規模的 I/O,以**減少響應次數**

總結2

cache的核心作用是加快取用的速度。比如你一個很復雜的計算做完了,下次還要用結果,就把結果放手邊一個好拿的地方存著,下次不用再算了。加快了數據取用的速度。

Buffer的核心作用是用來緩沖,緩和沖擊。比如你每秒要寫100次硬盤,對系統沖擊很大,浪費了大量時間在忙著處理開始寫和結束寫這兩件事嘛。用個buffer暫存起來,變成每10秒寫一次硬盤,對系統的沖擊就很小,寫入效率高了

總結3

cache的數據沒了,還能在算一遍得到,buffer空間的數據沒了可能就真沒了。而且通常buffer會順序讀取,而cache會隨機、反復讀取/處理

cache還有一個就是用來保持冗余的、可以被重復計算的、計算後的數據的,這個你叫buffer就不行。

13、區別並總結linux通配符和正則表達式

通配符和正則表達式是不一樣的。通配符用在用戶命令行bash環境。而Linux 正則表達式用於三劍客grep,sed,awk(還有一些其他命令,如find,ergrep等,主要還是三劍客)

  1. 通配符總結

*

通配符,代表任意(0到多個)字符

ls *.txt #顯示所有.txt文件

通配符,代表任意1個字符


連續不同命令的分隔符(在前一個命令結束時,而忽略其返回值,繼續執行下一個命令)

seq 10 > a.txt ; cat a.txt #結果輸出 seq 10 的結果

#

配置文件註釋


|

管道,傳遞上個命令的輸出給下個命令


~

用戶的家目錄


-

上次的目錄


$

變量前需加的符號


/

路徑分隔符號


>1>

重定向,覆蓋原有內容


>>

追加重定向


<

輸入重定向

cat < 1.txt

<<

標準限制符輸入

<<EOF 輸入到EOF時,停止

'

單引號,不具有變·量置換功能,輸入所見即所得

echo '$date' #結果輸出'$date'

"

雙引號,具有變量置換功能,解析變量後輸出。不加引號相當於雙引號

echo "$date"=echo "~date~"=echo ~date~ #輸入結果是當前時間

~

tab上面的鍵,反引號。兩個~ ~中間為命令,會先執行,等價於$()


{}

中間為區塊組合或內容序列。與seq命令比,{}裏可以加字符

touch {1..5}.txt #創建1.txt5.txt文件
cp 1{.txt,.ori}#復制1.txt 1.ori
touch {b..z}.txt

邏輯運算中的非(not


&&

and,而且。前一個命令成功,執行後一個命令


||

or,或,前一個命令失敗,執行後一個命令


..

上層目錄


.

當前目錄


\

轉義符,去除其後緊跟的特殊字符意義


=

設定變量

a=file1
echo $a #
輸出的是file1

[123]

匹配[]中任意單一字符


[!123][^123]

匹配除了[]中任意單一字符


[0-9] [a-z]

匹配[]範圍內任意單一字符


[!c1-c2][^c1-c2]

匹配除了[]範圍內任意單一字符


{string1,string2,...}

匹配 sring1 string2


  1. 正則表達式總結

^word

搜索以word開頭的

wods$

搜索以word結尾的

^$

表示空行

*

重復0個或多個前面的一個字符。例如o*

.

代表且只能代表任意一個字符

.*

匹配所有字符。^.*以任意多個字符開頭

\

轉義符。\.代表.本身

[abc]

匹配字符集內任意一個字符

[^abc]

匹配不包含^後的任意字符的內容

  1. 擴展正則表達式總結

grep,sed 使用時有些地方需要轉義字符轉義

egrep(grep -E),sed -r不需要

+

表示重復"一個或一個以上"前面的字符(*0個或多個)

表示重復“0個或一個”前面的字符

|

表示同時過濾多個字符串

()

分組過濾,後向引用
sed -n 's#()()#\1\2#gp' file

當在前面的匹配部分用小括號的時候,第一個括號內容,可以在後面部分用\1輸出。第二個括號內容,可以用\2輸出

{n}

必須匹配n grep使用時,需轉義:\{n\}

{n,}

必須匹配>=n

{n,m}

匹配次數在nm

{m}

匹配次數<=m



Linux 練習題-1 入門