Bash的使用者互動介面

2021-06-15 00:59:32 字數 2870 閱讀 1520

bash的使用者介面也就是我們經常說的字元介面,這是我們與系統互動的主要環境,我們可通過這個介面管理我們的系統。在系統引導時,第乙個需要執行的程序是init,由init再衍生出乙個getty終端程序,該程序開啟乙個終端視窗,提供標準輸入、標準輸出和標準錯誤。然後執行程式/bin/login,login程式提示輸入密碼,加密並驗證密碼。通過驗證後系統進入登入shell,也就是bash。不同的登入shell可在passwd檔案設定。bash會通過幾個配置檔案來初始化使用者環境。首先bash會查詢/etc/profile,並執行其中的命令,初始化系統級別環境。然後在使用者目錄下查詢.bash_profile檔案,並執行裡d面的命令,初始化使用者級別的環境。使用者級別的設定可覆蓋系統級別設定。最後會執行.bashrc使用者環境設定檔案,這時,預設提示符美元符號將顯示在螢幕上。

進入bash後,系統可根據你的配置生成一系列的環境變數,這些環境變數可用export命令顯示。下面是一些常的環境變數:

linux以樹狀結構組織檔案和目錄,目錄可以包含檔案,也可以包含其它目錄。目錄的最高層是根目錄"/",其它所有檔案和目錄都是掛在根目錄下,形成乙個倒掛的目錄樹。

使用bash shell的cd命令可在目錄樹中移動,當前停留的位置叫工作目錄或當前目錄,可用"."表示。每個使用者在/home目錄下都有乙個與使用者名稱相同的目錄,叫使用者主目錄。可用"~"符號表示,".."表示上一級目錄。

jims@localhost:~$ #位於jims使用者的主目錄 jims@localhost:~$ cd . jims@localhost:~$ #沒變化 jims@localhost:~$ cd .. jims@localhost:/home$ #移動到上層目錄 jims@localhost:/home$ cd ~ jims@localhost:~$ #回到使用者主目錄 jims@localhost:~$ pwd #顯示當前目錄 /home/jims

在bash shell環境下,我們可用萬用字元來簡化命令輸入。

下面是幾個命令示例:

jims@localhost:~$ ls *.py #顯示當前目錄下所有以.py結尾的檔案 jims@localhost:~$ ls *.[cho] #顯示當前目錄下所有以c,h,o結尾的檔案 jims@localhost:~$ ls ??? #顯示所有檔名為三個字元的檔案
大括號"{}"可用於擴充套件任意字串,如:

localhost:~/python# echo aa aaa aba aca
我們也可用大括號做為萬用字元使用,如:

jims@localhost:~$ ls *. #效果同ls *.[cho]

常用資料過濾命令

使用"<"和">"可實現i/o重定向功能,如:

$ ls > filename #輸出重定向到filename檔案,也就是生成乙個filename檔案,內容為ls命令執行的結果。 $ grep < filename #grep的命令引數從filename檔案讀取。
使用"|"可實現管道(pipeline)操作,管道操作可以把乙個命令的輸出重定向到另乙個命令的輸入,而不是檔案,如:

$ ls -l | more #先進行ls -l操作,再對操作結果進行more操作

bash shell允許在乙個會話期間同時執行多個命令,正常情況下所有命令在前台執行。只有在乙個命令執行完後才能輸入乙個命令。但如果我們在執行命令時在命令後加乙個"&"符號,則該命令將轉入後台執行,我們馬上獲得shell終端控制權,可輸入另外一條命令。這種在後台執行的命令叫後台作業。後台作業主要用在一些需花很長時間來執行的命令上,如解壓乙個大的壓縮文件。

$ tar zxvf xen.tar.gz& [1] 2547
使用jobs命令可以檢視後台作業狀態。

在bash中,有很多有特殊含義的特殊字元,下面是乙個完整的列表:

table 2.1. 特殊字元

字元含義

~主目錄

`命令替換#注釋

$變數表示式

&後台作業

*字元萬用字元

(啟動子shell

)停止子shell

轉義或續行

|管道操作符

萬用字元集

{}命令塊

;shell命令分隔符,作用是可在一行輸入多條shell命令。

'強引用,引號內所有內容保持字面意思。

"弱引用,引號內某些內容保持字面意思。

<

輸入重定向

>

輸出重定向

/路徑分隔符

?萬用字元,匹配單個任意字元

!取反操作

通過控制鍵可以控制shell的行為,下面是一些常用的控制鍵。

table 2.2. 控制鍵

控制鍵描述

ctrl_c

中止當前命令

ctrl_d

輸入結束

ctrl_

如果ctrl_c無效,則中止當前命令

ctrl_s

禁止螢幕輸出

ctrl_q

開啟螢幕輸出

del或ctrl_?

刪除最後的字元

ctrl_u

刪除整個命令列

ctrl_z

暫停當前命令

變數是隨系統執行而變化的,靈活使這些變數可簡化我們的操作和更好地控制bash shell的行為。

$# 指令碼的引數個數 $* 以乙個單字串顯示所有向指令碼傳遞的引數。與位置變數不同,此選項引數可超過9個 $$ 指令碼執行的當前程序id號 $! 後台執行的最後乙個程序的程序id號 $@ 與$*相同,但是使用時加引號,並在引號中返回每個引數 $- 顯示shell使用的當前選項,與set命令功能相同 $? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。 $0 指令碼名稱 $1..$9 第n個引數

使用者的四種互動介面的拼接

第一種 name input name age input age input語句輸入的為字元型別,需要強制轉換 print type age 字元的拼接,d表示,age只能接受數字,s表示的是字串,表示代表的是什麼型別的age job input job info info of name nam...

python的使用者互動

在python3中的input會將使用者輸入的任何內容都存成字串型別 name input 請輸入您的姓名 name egon pwd input 請輸入您的密碼 pwd 123 print name,type name print pwd,type pwd print 1 print 2 prin...

linux中使用者和核心空間的互動介面彙總

核心提供介面給使用者空間程式,便於使用者進行進行資訊的讀取和配置。procfs和sysctl都可以匯出內部資訊,其中procfs主要用於匯出唯讀資訊,sysctl匯出可寫的。此外還有sysfs,ioctl procfs是核心提供的,一種在使用者空間中對各種子系統的設定進行配置的方式,通常掛載在 pr...