一、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...