4、Bash基礎及配置、標準I/O、管道及shell編程基礎;

來源:互聯網
上載者:User

標籤:bash基礎及配置 標準i/o 管道 shell編程基礎

1、Bash基礎及配置


站在使用者的角度來講,SHELL的類型:


登入式shell

正常通過某終端登入

su - USERNAME

su -l USERNAME


非登入式shell

su USERNAME

圖形終端下開啟的虛擬終端

自動執行的shell指令碼

bash的設定檔:

全域配置:

/etc/profile, /etc/profile.d/*.sh , /etc/bashrc

個人配置:

~/.bash_profile, ~/.bashrc

profile類的檔案

1、設定環境變數

2、運行命令或指令碼

bashrc類的檔案

1、定義本地變數

2、定義命令別名

登入式shell如何讀取設定檔:

/etc/profile ----> /etc/profile.d/*.sh ----> ~/.bash_profile ----> /etc/bashrc

非登入式shell如何讀取設定檔:

~/.bashrc ---> /etc/bashrc  ----> /etc/profile.d/*.sh

完全切換 su - USERNAME 或 su -l USERNAME

半切換:su USERNAME 

作用範圍越小,越是最終生效的。


如何配置一個永久的別名命令?個人的?全域的?

如何配置一個永久的全域提示?個人的?全域的?

2、管道及IO重新導向


運算器、控制器 ----> CPU

 儲存空間:RAM

 輸入裝置/輸出裝置

 

 程式:指令+資料

 

 控制器:指令

 運算器:

 儲存空間:

 

 地址匯流排:記憶體定址

 資料匯流排:資料轉送

 控制匯流排:控制指令

實際上,是一根匯流排,三種功能

寄存器:CPU暫時儲存空間


I/O:硬碟,


程式:


INPUT裝置:

OUTPUT裝置:


系統設定:

預設輸出裝置:標準輸出,STDOUT,1

預設輸入裝置:標準輸入,STDIN,0

預設錯誤輸出:標準錯誤,STDERR,2

標準輸入裝置:鍵盤

標準輸出和錯誤輸出:顯示器(廉價)


I/O重新導向:


Linux

 輸出重新導向(大於符號):> 覆蓋輸出

    >> 追加輸出

    set -C 禁止對已經存在檔案使用覆蓋重新導向

    若要強制覆蓋輸出:則使用>|

    set +C 關閉上述功能

    2> 重新導向錯誤輸出

    2>>追加方式

    &> :重新導向標準輸出或錯誤輸出至同一個檔案,覆蓋方式

 輸入重新導向(小於符號):<

    << Here Document 在此處產生文檔 結束符:END,EOF

 

 

管道:把前一個命令的輸出,作為後一個命令的輸入


命令1 | 命令2 | 命令3 | ....


練習:

1、統計/usr/bin/目錄下的檔案個數;

   ls /usr/bin/ | wc -l

2、取出當前系統上所有使用者的shell,要求,每種shell只顯示一次,並且按順序進行顯示;

   cut -d : -f 7 /etc/passwd | sort -u

3、思考:如何顯示/var/log目錄下每個檔案的內容類型?


4、取出/etc/inittab檔案的第6行;


5、取出/etc/passwd檔案中倒數第9個使用者的使用者名稱和shell,顯示到螢幕上並將其儲存至/tmp/users檔案中;

cut -d : -f 1,7 /etc/passwd |head -9 |tail -1 | tee /tmp/users


6、顯示/etc目錄下所有以pa開頭的檔案,並統計其個數;


7、不使用文字編輯器,將alias cls=clear一行內容添加至目前使用者的.bashrc檔案中;



Regex:


文本尋找的需要:


grep、egrep、fgrep


grep:根據模式,搜尋文本,並將符合模式文本行顯示到螢幕上來

Pattern:由文本字元和Regex的元字元組合而成的匹配條件


 grep [options] PATTERN [FILE...]

-i(忽略字元大小寫)

--color [匹配到的字元顯示顏色]

-v 顯示沒有被模式比對到的行

-o 只顯示被模式比對到的字串


*:任意長度的任一字元

?:任意單個字元

[]: 

[^]

Regex:Regular EXPression,REGEXP

元字元:

.:匹配任意單個字元

[]:匹配指定範圍內的單個字元

[^]:匹配指定範圍外的單個字元

字元集合:[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]



匹配次數:(貪婪模式,儘可能長的去匹配)

*:匹配其前面的字元任意次

a, b, ab, aab, acb ,adb,amnb

a*b(表示任意次a,跟上b):ab,aab

a.*b只要以a開頭,以b結尾即可

a\?b:

.*:表示任意長度的任一字元


\?:匹配其前面的字元一次或0次


\{m,n\}:匹配其前面的字元至少m次,至多n次

\{1,\}:至少一次

\{0,3\}:最多3次


位置錨定:

^:錨定行首:此字元後面的任意內容必須出現在行首

$:錨定行尾:此字元後面的任意內容必須出現在行尾

^$:空白行;



錨定詞首   \<或者\b:其後面的任一字元必須作為單詞的首部出現   eg:root\b或root\<

錨定詞尾   \>或者\b:其前面的任一字元必須作為單詞的尾部出現 eg:\broot或\>root


單詞:只要是以字母開始,字母結束,中間不出現特殊字元即可;r55t


分組:

\(\)

\(ab\)*

後向引用

\1:引用第一個左括弧以及與之對應的右括弧所包括的所有內容

\2:

\3:



練習:

1、顯示/proc/meminfo檔案中以不區分大小的s開頭的行;

grep -i ‘^s‘ /proc/meminfo

grep ‘^[sS]‘ /proc/meminfo

2、顯示/etc/passwd中以nologin結尾的行; 

grep ‘nologin$‘ /etc/passwd


取出預設shell為/sbin/nologin的使用者列表

grep "nologin$‘ /etc/passwd | cut -d: -f1


取出預設shell為bash,且其使用者ID號最小的使用者的使用者名稱

grep ‘bash$‘ /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1


3、顯示/etc/inittab中以#開頭,且後面跟一個或多個空白字元,而後又跟了任意非空白字元的行;

grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab


4、顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行;

grep ‘:[0-9]:‘ /etc/inittab


5、顯示/boot/grub/grub.conf檔案中以一個或多個空白字元開頭的行;

grep ‘^[[:space:]]\{1,\}‘ /boot/grub/grub.conf


6、顯示/etc/inittab檔案中以一個數字開頭並以一個與開頭數字相同的數字結尾的行;

grep ‘^\([0-9]\).*\1$‘ /etc/inittab


練習:

1、找出某檔案中的,1位元,或2位元;

grep ‘[0-9]\{1,2\}‘ /proc/cpuinfo

grep --color ‘\<[0-9]\{1,2\}\>‘ /proc/cpuinfo


2、找出ifconfig命令結果中的1-255之間的整數;


  

3、尋找當前系統上名字為student(必須出現在行首)的使用者的帳號的相關資訊, 檔案為/etc/passwd

grep ‘^student\>‘ /etc/passwd | cut -d: -f3

id -u student


student1

student2


練習:分析/etc/inittab檔案中如下文本中前兩行的特徵(每一行中出現在數字必須相同),請寫出可以精確找到類似兩行的模式:

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3


grep ‘^l\([0-9]\):\1.*\1$‘ /etc/inittab


4、Bash基礎及配置、標準I/O、管道及shell編程基礎;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.