Linux shell基礎

博文結構
認識bash這個shell
Shell的變量功能

一.認識bash這個shell

1.計算機的運行狀況

1.硬件:當然就是需要你的硬件有“聲卡芯片”這個配備,否則怎麼會有聲音;

  1. 核心管理:操作系統的核心可以支持這個芯片組,當然還需要提供芯片的驅動程序;
  2. 應用程序:需要使用者(就是你)輸入發生聲音的指令!

Linux shell基礎

  • Bash主要優點:
1.命令編修能力  (~/.bash_history )
2.命令與文件補全功能
3.命令別名設置功能
4.工作控制、前景背景控制
5.程序化腳本
6.萬用字符

Linux shell基礎

在使用shell的時候,變量是經常會使用到的,變量的定義也很簡單,只需要滿足以下三個條件即可:

變量名由數字、字母、下劃線組成;

必須以字母或者下劃線開頭;

不能使用 Shell 裏的關鍵字,下圖中的的變量命名就是合法的。

  • 什麼是變量?

簡單定義就是:變量就是以一組文字或符號等,來代替一些設置或者是一串保留的數據。

  • 變量的設置規則
  1)變量與變量內容以一個等號“=”來連接,myname=VBird
  2)等號兩邊不能直接接 空格符,如下的定義就是錯誤的:
    myname = VBrid
    myname=VBrid Tsai
  3)變量的名稱只能是英文與數字,但是開頭字符不能是數字,如下的定義是錯誤的:
    2myname=VBird
  4)變量內容若有空符可使用雙引號或單引號將變量內容結合起來。
  雙引號內的特殊字符如$等,可以保有原來的特性:
    "var=lang is $LANG",則lang is en_US
  單引號內的特殊符號則爲一般字符:
    'var=lang is $LANG',則lang is $LANG
  5)可用轉義字符“\”將特殊符號變爲一般字符,例如\$
  6)在一串命令中,還需要通過其他的命令提供的信息,可以使用反單引號或者$:
    version=$(uname-r)
    echo $version
  7)若該變量爲了增加變量內容時,則可用“$變量名稱”或${變量}累加內容:
    PATH="$PATH":/home/bin
  8)若該變量需要在其他子進程執行,則需要以export來使變量變成環境變量:
    export PATH
  9)通常大寫字符爲系統默認的變量,自行設置變量的話使用小寫字符。
  10)取消變量的方法:unset myname

Linux shell基礎

  • 變量的取用echo
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@localhost ~]# env
LC_PAPER=zh_CN.utf8
XDG_VTNR=1
SSH_AGENT_PID=2807
XDG_SESSION_ID=1
HOSTNAME=localhost.localdomain
LC_MONETARY=zh_CN.utf8
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=gnome-
VTE_VERSION=3804
HISTSIZE=1000
WINDOWID=27262983
LC_NUMERIC=zh_CN.utf8
IMSETTINGS_MODULE=IBus
USER=root
....................略
HOME:代表使用者的主文件夾。
SHELL:告知我們,目前這個環境使用的 SHELL 是哪支程序?Linux 默認使用 /bin/bash 的啦!
HISTSIZE:這個與“歷史命令”有關,亦即是,我們曾經下達過的指令可以被系統記錄下來,而記錄的“筆數”則是由這個值來設置的。
MAIL:當我們使用 mail 這個指令在收信時,系統會去讀取的郵件信箱文件(mailbox)。
PATH:就是可執行文件搜尋的路徑啦~目錄與目錄中間以冒號(:)分隔,由於文件的搜尋是依序由 PATH 的變量內的目錄來查詢,所以,目錄的順序也是重要的喔。
LANG:這個重要!就是語系數據囉~很多訊息都會用到他
RANDOM:這個玩意兒就是“隨機亂數”的變量啦!目前大多數的distributions 都會有亂數產生器,那就是 /dev/random這個文件。
  • 用set觀察所有的變量(含環境變量與自定義變量)

Linux shell基礎

環境變量和自定義變量的區別:env環境可以被子進程繼承/使用,自定義變量不能被子進程繼承/使用。

比如:
在父進程編輯一個變量,去子進程看會顯示空白
所以就要用export命令來變爲環境變量
環境變量=全域變量 自訂變量=區域變量

export:自定變量轉成環境變量
舉例:

[root@localhost ~]# name=$nameyes
[root@localhost ~]# name="$name"yes
[root@localhost ~]# name=${name}yes
[root@localhost ~]# name=asd
[root@localhost ~]# bash   \\進入子程序
[root@localhost ~]# echo $name

[root@localhost ~]# exit   \\退出子程序
exit
[root@localhost ~]# export name
[root@localhost ~]# bash
[root@localhost ~]# echo $name
asd
[root@localhost ~]# exit
exit
  • echo $? 來查看上次命令是否正確(0爲正確非0爲錯誤)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# echo $?
0
[root@localhost ~]# asd
bash: asd: 未找到命令...
[root@localhost ~]# echo $?
127
  • 變量的有效範圍:
    被 export 後的變量,我們可以稱他爲“環境變量”!環境變量可以被子程序所引用,但是其他的自訂變量內容就不會存在於子程序中。

二.shell變量的功能

  • 變量內容的刪除與取代
    先讓小寫的path自定設置的與PATH內容相同
[root@localhost ~]# path=${PATH}
[root@localhost ~]# echo ${path}
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

假設我不喜歡local/bin,所以將前1個目錄刪除掉

[root@localhost ~]# echo ${path#/*local/bin:}
/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

將path的變量內容sbin取代大寫SBIN

[root@localhost ~]# echo ${path/sbin/SBIN}
/usr/local/bin:/usr/local/SBIN:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

#:符合取代文字的“最短的”那一個
##:符合取代文字的“最長的”那一個

Linux shell基礎

  • 變量的測試與內容替換

1.測試一下是否存在username這個變量,若不存在給予username內容爲root

[root@localhost ~]# echo ${username}

[root@localhost ~]# username=${username-root}
[root@localhost ~]# echo ${username}
root

2.若username未設置或爲空字串,則將username內容設置爲root

[root@localhost ~]# username=""
[root@localhost ~]# username=${username-root}
[root@localhost ~]# echo ${username}

[root@localhost ~]# username=${username:-root}
[root@localhost ~]# echo ${username}
root

Linux shell基礎

取消變量

[root@localhost ~]# name=$aaa
[root@localhost ~]# unset $aaa

取消變量的方法爲使用 unset:“unset 變量名稱”例如取消 myname 的設置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章