shell基礎及變數

2021-08-17 07:10:51 字數 4232 閱讀 8647

一、shell基礎

1)[root@www~]# history [-raw] histfiles

選項與引數:

n :數字,意思是『要列出最近的n 筆命令列表』的意思!

-c :將目前的shell 中的所有history 內容全部消除

-a :將目前新增的history 命令新增入histfiles中,若沒有加histfiles,

則預設寫入~/.bash_history

-r :將histfiles的內容讀到目前這個shell 的history 記憶中;

-w :將目前的history 記憶內容寫入histfiles中

歷史命令缺省會儲存1000條,可以在環境變數配置檔案/etc/profile中進行修改

2)歷史命令的呼叫

使用上、下箭頭呼叫以前的歷史命令

使用「!n」重複執行第n條歷史命令

使用「!!」重複執行上一條命令

使用「!字串」重複執行最後一條以該字串開頭的命令

3)命令與檔案補全

在bash中,命令與檔案補全是非常方便與常用的功能,我們只要在輸入命令或檔案時,按「tab」鍵就會自動進行補全

4)命令別名

[root@localhost ~]# alias別名='原命令'

#設定命令別名

[root@localhost ~]# alias grep=『grep--color=auto』(注意等號兩邊不能有空格)

alias的作用僅在該次登入的操作,即輸入一次alias後,這個修改只在當前的shell生效。如果重新開啟乙個shell,或者重新登入,則這些alias將無法使用。好在linux中提供alias永久化的方法:

<1>.若要每次登入就自動生效別名,則把別名加在/etc/profile或~/.bashrc中。然後# source ~/.bashrc

<2>.若要讓每一位使用者都生效別名,則把別名加在/etc/bashrc最後面,然後# source /etc/bashrc

刪除別名

[root@localhost ~]# unalias別名

5)多命令順序執行

管道符命令格式:

[root@localhost ~]# 命令1 | 命令2

#命令1的正確輸出作為命令2的操作物件

cut可以將一段資訊的某一段給他『切』出來,處理的資訊是以『行』為單位

[root@www~]# cut -d'分隔字元' -f fields <==用於有特定分隔字元

[root@www~]# cut -c 字元區間<==用於排列整齊的資訊

選項與引數:

-d :後面接分隔字元。與-f 一起使用;

-f :依據-d 的分隔字元將一段資訊分割成為數段,用-f 取出第幾段的意思;

-c :以字元(characters) 的單位取出固定字元區間;

二、shell中的變數與符號

1)變數

shell 變數可以儲存如路徑名、檔名或者乙個數字

變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。如果變數名是「2name」則是錯誤的。

在bash中,變數的預設型別都是字串型,如果要進行數值運算,則必修指定變數型別為數值型。

2)變數分類

本地變數    (使用者變數)區域性變數只在建立它們的shell中使用,可以在shell程式內任意使用和修改它們。

環境變數    可以在建立它們的shell及其派生出來的任意子程式中使用。有些變數是使用者建立的,其他的則是專用的(比如path、home)。是系統環境的一部分,不必去定義它們,可以在shell程式中使用它們。還能在shell中加以修改。

內部變數      由系統提供的。與環境變數不同,但使用者不能修改它們。

本地變數在使用者現在的shell生命期的指令碼中使用

變數名=值

注意:(1)等號兩邊不可以有空格

(2)取值包含空格,必須用雙引號括起來

(3)shell變數可以用大小寫字母,區分大小寫

3)變數的宣告和使用

(1)變數是弱型別的(不用宣告型別)

(2)變數宣告及賦值格式

變數=值(等號兩邊不能有空格)

(3)變數的引用

$變數名

$變數名為1個字元時建議使用方式一,多餘乙個字元時建議使用方式二

4)顯示變數

echo命令可以顯示單個變數取值,變數名前加$

echo顯示輸出

# echo命令介紹

功能說明:顯示文字。

語法:echo [-ne][字串] / echo [--help][--version]

補充說明:echo會將輸入的字串送往標準輸出。輸出的字串間以空白字元隔開, 並在最後加上換行號。

引數:-n不要在最後自動換行

-e開啟反斜槓esc轉義。若字串中出現以下字元,則特別加以處理,而不會將它當成一般文字輸出:\t 插入tab;\\插入\字元;

-help顯示幫助

-version顯示版本資訊

5)清除變數

unset 變數名

6)設定環境變數

variable-name=value

export variable-name(環境變數名大寫)

顯示環境變數

env可以看到所有的環境變數

echo $環境變數名(顯示乙個變數)

清除環境變數

unset 環境變數名

home :代表使用者的家目錄。cd ~ 去到使用者的家目錄或者利用cd 就可以直接回到使用者家目錄了。

ps1:shell的主提示符

shell :目前這個環境使用的shell 是哪個程式?如果是bash 的話,預設是/bin/bash

pwd:使用者當前工作目錄的路徑。它指出使用者目前在linux檔案系統中處在什麼位置。它是由linux自動設定的

histsize :這個與「歷史命令」有關,曾經下達過的指令可以被系統記錄下來,而記錄的「數目」則是由這個值來設定的。

env :這個使用者所使用的個性化環境設定檔案的讀取檔案。

mail :當我們使用mail 這個指令在收信時,系統會去讀取的郵件信箱檔案(mailbox)。

path :就是執行檔案搜尋的路徑,目錄與目錄中間以冒號(:)分隔,由於檔案的搜尋是依序由path 的變數內的目錄來查詢,所以,目錄的順序也是重要的喔。

lang :語系檔案,很多資料都會用到他,當出現編碼錯誤的時候往往需要設定它,中文編碼是zh_cn.utf8

讓環境變數的修改在退出shell再次登入時仍有效,需要在相關配置檔案中修改

bash的初始化檔案有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc

部分內部變數是:

$# ——傳送給shell程式的位置引數的數量

$?——最後命令的完成碼或者在shell程式內部執行的shell程式(返回值)。0表示沒有錯誤,其他任何值表明有錯誤。

$0——shell程式的名稱

$*——呼叫shell程式時所傳送的全部引數的單字串,「引數1」「引數2」…形式儲存的引數

$@「引數1引數2」…形式儲存的引數

$n第n個引數

$$本程式的pid

7)特殊符號

1、注釋符#

除了#!/bin/bash裡的#特殊

2、美元符$

變數符。與反斜槓轉義符相反,使其後的普通字元作為變數名,如$a表示變數a的值。變數字元長度超過1個時,用{}括起來

3、單引號

被引起的字元全部做普通字元,即全部原樣

echo 『my $shell』

4、雙引號

引號內的內容,除$、轉義符\、倒引號`這三個保留特殊功能,其他字元均做普通字元。

5、倒引號(數字1鍵旁邊的那個鍵)

引號內的字串當做shell命令列解釋執行,得到的結果取代整個倒引號括起來的部分。

6. 反斜線

反斜線是轉義字元,它能把特殊字元變成普通字元。在某個字元前面利用反斜槓(\)能夠阻止shell把後面的字元解釋為特殊字元。

7.獲取字串長度

string="abcd"

echo $ #輸出4

8.提取子字串

以下例項從字串第2 個字元開始擷取4 個字元

string="runoobis a great site"

echo $ # 輸出unoo

shell基礎及變數

shell的兩種主要語法型別有bourne和c,這兩種語法彼此 不相容。命令與檔案補全 tab鍵 一次 補全名稱 tab鍵 兩次 顯示所有相似名稱 命令別名 alias 別名 原命令 刪除別名 unalias 別名 多命令順序執行 命令1 命令2 命令1 命令2 管道符命令1 命令2 tee ech...

Shell基礎及變數 3 20

1.shell指令碼的基礎 shell指令碼是基本命令的組合,結合命令流程控制。第一行 頂格寫 bin bash shell指令碼的執行方式 1 首先要使指令碼具有執行許可權 chmod x test.sh 然後.test.sh執行指令碼 2 bin sh test.sh 2.shell指令碼中變數...

Shell基礎及變數3 20

1.shell在linux系統中的位置 使用者請求 shell linux核心 硬體 2.shell命令 1 歷史命令 history raw histfiles 預設儲存1000條,可以在 etc profile中修改 n 列出最近使用的 n條命令,包括 history n c 將所有的histo...