溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux shell基礎(chǔ)

發(fā)布時(shí)間:2020-04-10 06:20:34 來(lái)源:網(wǎng)絡(luò) 閱讀:265 作者:mb5d03569e7eb16 欄目:系統(tǒng)運(yùn)維

博文結(jié)構(gòu)
認(rèn)識(shí)bash這個(gè)shell
Shell的變量功能

一.認(rèn)識(shí)bash這個(gè)shell

1.計(jì)算機(jī)的運(yùn)行狀況

1.硬件:當(dāng)然就是需要你的硬件有“聲卡芯片”這個(gè)配備,否則怎么會(huì)有聲音;

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

Linux shell基礎(chǔ)

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

Linux shell基礎(chǔ)

在使用shell的時(shí)候,變量是經(jīng)常會(huì)使用到的,變量的定義也很簡(jiǎn)單,只需要滿足以下三個(gè)條件即可:

變量名由數(shù)字、字母、下劃線組成;

必須以字母或者下劃線開(kāi)頭;

不能使用 Shell 里的關(guān)鍵字,下圖中的的變量命名就是合法的。

  • 什么是變量?

簡(jiǎn)單定義就是:變量就是以一組文字或符號(hào)等,來(lái)代替一些設(shè)置或者是一串保留的數(shù)據(jù)。

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

Linux shell基礎(chǔ)

  • 變量的取用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:告知我們,目前這個(gè)環(huán)境使用的 SHELL 是哪支程序?Linux 默認(rèn)使用 /bin/bash 的啦!
HISTSIZE:這個(gè)與“歷史命令”有關(guān),亦即是,我們?cè)?jīng)下達(dá)過(guò)的指令可以被系統(tǒng)記錄下來(lái),而記錄的“筆數(shù)”則是由這個(gè)值來(lái)設(shè)置的。
MAIL:當(dāng)我們使用 mail 這個(gè)指令在收信時(shí),系統(tǒng)會(huì)去讀取的郵件信箱文件(mailbox)。
PATH:就是可執(zhí)行文件搜尋的路徑啦~目錄與目錄中間以冒號(hào)(:)分隔,由于文件的搜尋是依序由 PATH 的變量?jī)?nèi)的目錄來(lái)查詢,所以,目錄的順序也是重要的喔。
LANG:這個(gè)重要!就是語(yǔ)系數(shù)據(jù)啰~很多訊息都會(huì)用到他
RANDOM:這個(gè)玩意兒就是“隨機(jī)亂數(shù)”的變量啦!目前大多數(shù)的distributions 都會(huì)有亂數(shù)產(chǎn)生器,那就是 /dev/random這個(gè)文件。
  • 用set觀察所有的變量(含環(huán)境變量與自定義變量)

Linux shell基礎(chǔ)

環(huán)境變量和自定義變量的區(qū)別:env環(huán)境可以被子進(jìn)程繼承/使用,自定義變量不能被子進(jìn)程繼承/使用。

比如:
在父進(jìn)程編輯一個(gè)變量,去子進(jìn)程看會(huì)顯示空白
所以就要用export命令來(lái)變?yōu)榄h(huán)境變量
環(huán)境變量=全域變量 自訂變量=區(qū)域變量

export:自定變量轉(zhuǎn)成環(huán)境變量
舉例:

[root@localhost ~]# name=$nameyes
[root@localhost ~]# name="$name"yes
[root@localhost ~]# name=${name}yes
[root@localhost ~]# name=asd
[root@localhost ~]# bash   \\進(jìn)入子程序
[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 $? 來(lái)查看上次命令是否正確(0為正確非0為錯(cuò)誤)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# echo $?
0
[root@localhost ~]# asd
bash: asd: 未找到命令...
[root@localhost ~]# echo $?
127
  • 變量的有效范圍:
    被 export 后的變量,我們可以稱他為“環(huán)境變量”!環(huán)境變量可以被子程序所引用,但是其他的自訂變量?jī)?nèi)容就不會(huì)存在于子程序中。

二.shell變量的功能

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

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

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

將path的變量?jī)?nèi)容sbin取代大寫SBIN

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

#:符合取代文字的“最短的”那一個(gè)
##:符合取代文字的“最長(zhǎng)的”那一個(gè)

Linux shell基礎(chǔ)

  • 變量的測(cè)試與內(nèi)容替換

1.測(cè)試一下是否存在username這個(gè)變量,若不存在給予username內(nèi)容為root

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

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

2.若username未設(shè)置或?yàn)榭兆执?,則將username內(nèi)容設(shè)置為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基礎(chǔ)

取消變量

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

取消變量的方法為使用 unset:“unset 變量名稱”例如取消 myname 的設(shè)置

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI