實際上已經用過了許多shell嵌入命令。可能要想什麼是shell嵌入,這些命令是在實際的Bourne shell裡創建而不是存在於/bin或usr/bin目錄裡。嵌入命令比系統裡的相同命令要快。
本章內容有:
標准的Bourne shell嵌入命令列表
例如,cd和pwd命令可同時在系統和嵌入命令中發現。如果要運行系統版,簡單輸入命令路徑即可:
/bin/pwd
在查看調試腳本、打開或關閉shell選項時,曾用到set命令。set也可用於在腳本內部給出其運行參數,以下舉例說明。假定有一段腳本控制兩個參數,但並不向腳本傳遞參數而是在腳本內部設置其取值。可以用set命令完成此功能。
格式為:
set param1 param2 ..
下面的腳本設置參數為accounts.doc和accounts.bak,然後對參數進行循環處理。
[root@localhost huangcd]# ./set_ex
accounts.doc
accounts.bak
[root@localhost huangcd]# cat set_ex
#!/bin/bash
set accounts.doc accounts.bak
while [ $# != 0 ]
do
echo $1
shift
done
times命令給出用戶腳本或任何系統命令的運行時間。第一行給出shell消耗時間,第二行給出運行命令消耗的時間。下面是times命令的輸出結果:
[root@localhost huangcd]# times
0m0.056s 0m0.125s
0m0.630s 0m0.599s
使用t y p e查詢命令是否仍駐留系統及命令類型。type打印命令名是否有效及該命令在系統的位置。例如:
[root@localhost huangcd]# type mayday
bash: type: mayday: not found
[root@localhost huangcd]# type pwd
pwd is a shell builtin
[root@localhost huangcd]# type cp
cp is aliased to `cp -i'
ulimit設置運行在shell上的顯示限制。通常此命令定位於文件/etc/profile中,但是可以從當前shell或用戶.profile文件中將之移入用戶需要的位置。ulimit一般格式如下:
ulimit options
ulimit有幾個選項,以下是一些常用的選項:
選項含義
-a 顯示當前限制
-c 限制內核垃圾大小
-f 限制運行進程創建的輸出文件的大小
[root@localhost huangcd]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11357
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 11357
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost huangcd]# ulimit -c 1
[root@localhost huangcd]# ulimit -a
core file size (blocks, -c) 1
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11357
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 11357
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
wait命令等待直到一個用戶子進程完成,可以在wait命令中指定進程ID號。如果並未指定,則等待直到所有子進程完成。
等待所有子進程運行完畢:
$ wait