korn shell基礎知識(轉)
korn shell基礎知識(轉)[@more@]【導讀】較詳細介紹IBM AIX作業系統上常用的korn shell的基礎知識。
Korn Shell執行命令的順序
1.關鍵字,如if,for,function等
2.別名(Aliases)
3.內部命令,如cd, whence和函式等
4.函式Functions
5.指令碼Scripts、在PATH中的可執行程式
※找到命令的根源用下面的命令:
whence -v command
或:
type command
Alias(別名)
alias aliasname=command
取消一個別名:
unalias aliasname
列出當前所有的別名:
alias
【TIP】
用來顯式當前目錄下的所有目錄的別名:alias ldir='ls -l|grep ^d'
提問:alias|grep ^ls會看到:ls=/usr/bin/ls,請問:系統為什麼要定義這個別名?
Functions(函式)
定義的位置:
Function可以在命令列、.kshrc(ENV檔案,見下篇)或在shell script中定義
定義的方法:
function funcname {
shell commands
}
或:
funcname () {
shell commands
}
列出所有當前的functions
functions
取消一個function
unset -f funcname
輸出一個function:
typeset -fx funcname
取消輸出一個function:
typeset +fx funcname
※function是"typeset -f"的預定義的別名
Korn Shell 的選項
Korn Shell有一些選項,如果在.kshrc(ENV檔案,見下篇)中設定他們,那麼他們就是全域性的,並且可以傳遞給subshell。
列出所有的Korn Shell選項:
set -o
設定一個選項
set -o OptionName
取消一個選項
set +o OptionName
Korn Shell 選項的意義
allexport 自動export隨後定義地所有變數(檔名中不含有.).(等於set -a)
errexit 如果一個命令的返回值不為0,就執行錯誤陷阱(ERR trap)。但對profile檔案例外。(等於set -e)
bgnice 後臺程式以較低的優先順序執行,這是預設值
emacs 使用emacs風格的行內編輯器
gmacs 使用gmacs風格的行內編輯器
ignoreeof 遇到檔案結束符時不退出shell。要想退出shell必須使用exit命令或者敲Ctrl-D 11次。
keyword 為了保持與Bourne shell的相容性。(set -k)
markdirs 在完成檔名替換後在目錄名後面加一個斜線(/)。
monitor Runs background jobs in a separate process and prints a line upon completion. (set -m)
noclobber 不能用>重定向符覆蓋已經存在的檔案。只能用>|來重寫已經存在的檔案。noexec 讀入命令只檢查它的語法但不執行。 (set -n)
noglob 禁止檔名替換。(set -f)
nolog 不在歷史檔案中儲存函式的定義。
nounset 在試圖擴充套件沒有定義的變數時顯示錯誤資訊。(set -u)
privileged 禁止執行HOME/.profile file 並且使用/etc/suid _profile 而不是ENV檔案。 (set -p)
verbose 顯示shell讀入的輸入.(set -v)
trackall Designates each command as a tracked alias when first encountered.(set -h)
vi 使用vi風格的行內編輯器
viraw Processes each character as it is typed in vi mode.
xtrace 在執行命令前,先顯示命令.(set -x)
※舉例:使vi成為inline editor
set -o vi
Debuging(除錯)
除錯一個shell script的方法:
#set -o xtrace
然後再執行shell
或者直接執行
#ksh -x shellprog args
或
#sh -v shellprog args
Debug 一個function
#typeset -ft funcname
Prompts(提示)
PS1 主shell提示符(普通使用者預設是 $,而root預設是#)
PS2 繼續提示符( 預設 > )
什麼是繼續提示符?
在命令列上輸入
for i in 11 12 13 14 15 16
do
lspv hdisk$i
done
從第二行開始,螢幕最左面就是繼續提示符。
PS3 在選擇迴圈中的選擇提示符(預設是 #? )
PS4 除錯提示符 (預設是 + )
【tip】:命令列上提示主機名稱和當前目錄
export PS1="[`hostname`-"'$PWD]'
注意:一定是""包括``才能取得命令的結果,''包括變數才能隨時更改變數的值
效果:
[hostname-/tmp]
Korn Shell執行命令的順序
1.關鍵字,如if,for,function等
2.別名(Aliases)
3.內部命令,如cd, whence和函式等
4.函式Functions
5.指令碼Scripts、在PATH中的可執行程式
※找到命令的根源用下面的命令:
whence -v command
或:
type command
Alias(別名)
alias aliasname=command
取消一個別名:
unalias aliasname
列出當前所有的別名:
alias
【TIP】
用來顯式當前目錄下的所有目錄的別名:alias ldir='ls -l|grep ^d'
提問:alias|grep ^ls會看到:ls=/usr/bin/ls,請問:系統為什麼要定義這個別名?
Functions(函式)
定義的位置:
Function可以在命令列、.kshrc(ENV檔案,見下篇)或在shell script中定義
定義的方法:
function funcname {
shell commands
}
或:
funcname () {
shell commands
}
列出所有當前的functions
functions
取消一個function
unset -f funcname
輸出一個function:
typeset -fx funcname
取消輸出一個function:
typeset +fx funcname
※function是"typeset -f"的預定義的別名
Korn Shell 的選項
Korn Shell有一些選項,如果在.kshrc(ENV檔案,見下篇)中設定他們,那麼他們就是全域性的,並且可以傳遞給subshell。
列出所有的Korn Shell選項:
set -o
設定一個選項
set -o OptionName
取消一個選項
set +o OptionName
Korn Shell 選項的意義
allexport 自動export隨後定義地所有變數(檔名中不含有.).(等於set -a)
errexit 如果一個命令的返回值不為0,就執行錯誤陷阱(ERR trap)。但對profile檔案例外。(等於set -e)
bgnice 後臺程式以較低的優先順序執行,這是預設值
emacs 使用emacs風格的行內編輯器
gmacs 使用gmacs風格的行內編輯器
ignoreeof 遇到檔案結束符時不退出shell。要想退出shell必須使用exit命令或者敲Ctrl-D 11次。
keyword 為了保持與Bourne shell的相容性。(set -k)
markdirs 在完成檔名替換後在目錄名後面加一個斜線(/)。
monitor Runs background jobs in a separate process and prints a line upon completion. (set -m)
noclobber 不能用>重定向符覆蓋已經存在的檔案。只能用>|來重寫已經存在的檔案。noexec 讀入命令只檢查它的語法但不執行。 (set -n)
noglob 禁止檔名替換。(set -f)
nolog 不在歷史檔案中儲存函式的定義。
nounset 在試圖擴充套件沒有定義的變數時顯示錯誤資訊。(set -u)
privileged 禁止執行HOME/.profile file 並且使用/etc/suid _profile 而不是ENV檔案。 (set -p)
verbose 顯示shell讀入的輸入.(set -v)
trackall Designates each command as a tracked alias when first encountered.(set -h)
vi 使用vi風格的行內編輯器
viraw Processes each character as it is typed in vi mode.
xtrace 在執行命令前,先顯示命令.(set -x)
※舉例:使vi成為inline editor
set -o vi
Debuging(除錯)
除錯一個shell script的方法:
#set -o xtrace
然後再執行shell
或者直接執行
#ksh -x shellprog args
或
#sh -v shellprog args
Debug 一個function
#typeset -ft funcname
Prompts(提示)
PS1 主shell提示符(普通使用者預設是 $,而root預設是#)
PS2 繼續提示符( 預設 > )
什麼是繼續提示符?
在命令列上輸入
for i in 11 12 13 14 15 16
do
lspv hdisk$i
done
從第二行開始,螢幕最左面就是繼續提示符。
PS3 在選擇迴圈中的選擇提示符(預設是 #? )
PS4 除錯提示符 (預設是 + )
【tip】:命令列上提示主機名稱和當前目錄
export PS1="[`hostname`-"'$PWD]'
注意:一定是""包括``才能取得命令的結果,''包括變數才能隨時更改變數的值
效果:
[hostname-/tmp]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-952382/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell指令碼的基礎知識指令碼
- Linux下Shell基礎知識深入淺出(轉)Linux
- shell基礎知識查缺補漏
- Linux shell基礎知識_8(下)Linux
- HTML基礎知識(轉)HTML
- [轉]Linux基礎知識Linux
- 交換機基礎知識(轉)
- 講敘Linux系統之Shell程式設計基礎知識(轉)Linux程式設計
- 【轉】JavaScript物件的基礎知識JavaScript物件
- 裸裝置基礎知識(轉)
- 加密和 PKI 基礎知識 (轉)加密
- shell基礎(轉)
- 基礎知識
- oracle架構的基礎知識(轉)Oracle架構
- SQL Server 連線基礎知識(轉)SQLServer
- AI 基礎知識AI
- Webpack 基礎知識Web
- Dart基礎知識Dart
- RabbitMQ基礎知識MQ
- webpack基礎知識Web
- javascript基礎知識JavaScript
- ThinkPHP基礎知識PHP
- Laravel基礎知識Laravel
- Redis基礎知識Redis
- Docker基礎知識Docker
- 程式基礎知識
- Envoy基礎知識
- DockerFile基礎知識Docker
- Nginx基礎知識Nginx
- CSS基礎知識CSS
- Java基礎知識Java
- PRML 基礎知識
- BGP基礎知識
- PHP基礎知識PHP
- React基礎知識React
- httpclient基礎知識HTTPclient
- HBase基礎知識
- Jquery基礎知識jQuery