shell指令一般分為内置(自帶)和外來(除了自帶的都是包括後來yum 安裝的)
如何産看内置指令呢:$ man bash 1 (這裡為什麼加個 1是因為man手冊的格式)
man 手冊的組成
MANUAL SECTIONS
The standard sections of the manual include:
1 User Commands ##使用者指令
2 System Calls ## 系統調用
3 C Library Functions #C函數庫
4 Devices and Special Files #裝置和特殊檔案
5 File Formats and Conventions # 檔案的格式和慣例
6 Games et. Al. #遊戲
7 Miscellanea 雜項
8 System Administration tools and Deamons #系統管理工具
Distributions customize the manual section to their specifics, which often include additional sections.
一般區分内置的技巧:用 help 一般情況下 help command 如果是内置指令一般會給出簡化的文法格式,足以應用。
$ help cd
常見指令解析:
echo (在螢幕上輸出資訊) 選項 -n (檔案不換行顯示) -e (可以識别\開頭的特殊字元)
$ echo -n hello
hello[swallow@swallow ~]$ (由于不換行,是以和指令環境變量一起顯示)
對比一下加不加 -e 的差別;
$ echo "a\nb\nc"
a\nb\nc
$ echo -e "a\nb\nc"
a
b
c
一般常見的特殊字元:\n 換行 \r 回車 \t 制表符(相當于按下tab按鍵)
shell變量的應用:(這裡的實驗是先定義一個變量var=abcABC123ABCabc)
1.傳回變量的内容 ($var ${var})
$ echo $var
abcABC123ABCabc
$ echo ${var}
2.傳回長度 (${#var}) 就是在輸入var前加入#
1. $ echo ${#var}
15
2. 檢視長度也可以用用 wc -l (這裡是大寫的L,不要用c)
$ echo $var |wc -L
$ wc -c (這裡的會多出一位。\n)
$ echo $var |wc -c
16
下面我們通過od 指令來看下 $ echo $var 都做了些什麼?
od指令用于輸出檔案的八進制、十六進制或其它格式編碼的位元組,通常用于顯示或檢視檔案中不能直接顯示在終端的字元。
$ echo `echo $var|od -c`
0000000 a b c A B C 1 2 3 A B C a b c \n 0000020
這裡多了一個\n 。是以wc 在統計字元的時候多了個一字元。
溫習下:wc 的指令提示
-c, --bytes
print the byte counts
-L, --max-line-length
print the length of the longest line、
3. 用expr 自帶的length方法
$ echo `expr length $var`
3.使用變量${}删除
比對規則;
# 表示開頭比對最短
## 表示開頭比對最長(比較貪婪)
% 表示從結尾比對最短
%% 表示從結尾比對最長(比較貪婪)
舉例;
$ echo ${var#a*c}
ABC123ABCabc
$ echo ${var##a*c}
$ echo ${var%a*c}
abcABC123ABC
$ echo ${var%%a*c}
[swallow@swallow ~]$
這裡3和5是有差別的要注意。##從前面比對的而%%是從和面比對的。
4.使用變量${}替換
$ var=ABABAB
ABABAB
$ echo ${var/A/a}
aBABAB
$ echo ${var//A/a}
aBaBaB
這裡需要注意的是差別: / 是替換第一個字元。 //替換所有的字元
此外:在讀系統腳本的時候有個困惑的地方:
例如:/etc/init.d/httpd 裡面有幾句類似的
httpd=${HTTPD-/usr/sbin/httpd}
檢視手冊:
${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the
value of parameter is substituted.
此用法的意思是:如果變量沒有指派或為空,會傳回word字元串并代替變量的值。
防止變量缺失導緻異常,如果變量未定義則傳回被用值(word)
本文轉自 swallow_zys 51CTO部落格,原文連結:http://blog.51cto.com/12042068/1893840,如需轉載請自行聯系原作者