分类: LINUX
2006-08-14 12:42:45
Shell命令
${变量名}引用变量的值,变量只有在声明、赋值、unset、export或表示signal时不用$作前缀 | |||
本地变量(P131) | |||
变量名=变量值 |
设置变量 | ||
readonly 变量名 |
设置这个变量为只读 | ||
echo $变量名 |
$引用变量的值,并用echo显示 | ||
unset 变量名 |
清除变量定义 | ||
set|more |
分页查看所有的变量 | ||
变量=${参数变量:-word} |
若设置了参数变量,则用参数变量的值设置变量的值,否则用word置换 | ||
变量=${参数变量:=word} |
若设置了参数变量,则用参数变量的值设置变量的值,否则把变量设置成word,然后再用word替换参数的值 | ||
变量=${参数变量:?word} |
若设置了参数变量,则用参数变量的值设置变量的值,否则显示word并从shell中退出,若省略word则显示标准信息,常用于出错指示 | ||
变量=${参数变量:+word} |
若设置了参数变量,则用word设置变量,否则清空 | ||
环境变量(P132) | |||
变量名=变量值 export 变量名 |
环境变量的设置等同于本地变量,但必须使用export命令导出 | ||
常用环境变量 | |||
HOME |
用于保存注册目录的完全路径名 | ||
PATH |
用于保存用“:”分隔的目录路径名 | ||
TERM |
终端的类型 | ||
UID |
当前用户标识符,由数字构成的字符串 | ||
PWD |
当前工作目录的绝对路径名 | ||
PS1 |
主提示符,特权用户#,普通用户$ | ||
PS2 |
辅助提示符> | ||
export (不带参数) |
显示所有的环境变量 | ||
位置参数变量(P133) | |||
$0~$9 |
$0程序本身$1第一个位置的参数… | ||
shift |
参数列表向前移动一位 | ||
预定义变量(P134):它的值由shell根据环境的变化自动赋值,不能手工更改的值。由$和另一个符号组成 | |||
$# |
传递脚本的参数数量 | ||
$* |
以一个单字符串显示传递脚本所有参数内容 | ||
$? |
命令执行后返回状态,0成功,其它错误 | ||
$$ |
当前进程的进程号 | ||
$! |
后台运行的最后一个进程号 | ||
$0 (数字0) |
当前执行的进程名 | ||
shell环境变量配置文件(P135) | |||
/etc/profile /etc/profile.d/* |
用户登录系统时,bash首先执行profile配置文件和profile.d/目录下的配置文件,对系统的所有用户都有效 | ||
用户主目录下的 .bash_profile及.bashrc |
然后会执行登录用户主目录下的这两个配置文件,通过这两个配置文件设置用户个性化的环境变量 | ||
bash可以识别的转义字符(P137) | |||
a |
ASCII响铃字符(也可以键入07) | ||
d |
Wed Sep 06格式的日期 | ||
e |
ASCII转义字符(也可以键入33) | ||
h |
主机名的第一部分 | ||
H |
主机的全称 | ||
j |
在此shell中通过按^Z挂起的进程数 | ||
l |
此shell的终端设备名 | ||
n |
换行符 | ||
r |
回车符 | ||
s |
shell的名称(如bash) | ||
t |
24小时制时间 | ||
T |
12小时制时间 | ||
@ |
带有am/pm的12小时制时间 | ||
u |
用户名 | ||
v |
bash的版本(如2.04) | ||
V |
bash的版本(包括补丁级别) | ||
w |
当前工作目录(如/home/ch) | ||
W |
当前工作目录的基名(如ch) | ||
! |
当前命令在历史缓冲区中的位置 | ||
# |
命令编号(每次提示时累加) | ||
$ |
root则显示#,否则显示$ | ||
xxx |
插入用三位数表示的ASCII字符0代替未使用的数字(如:007) | ||
\ |
反斜杠 | ||
[ |
这个序列出现在不移动光标的字符序列(如颜色转义序列)之前,使bash能正确计算自动换行 | ||
] |
这个序列应该出现在非打印字符序列之后 | ||
命令历史与命令重复(P141) | |||
history|more |
分页查看全部的历史命令清单 | ||
!! |
重复执行前一个命令 | ||
!n |
执行第n条历史命令 | ||
!字符串 |
执行最后一个以字符串开头的命令 | ||
!!:p |
显示前一个命令内容 | ||
!$ |
重复前一个命令的最后的参数;可以使用Command !$的方式来使用 | ||
管道与重定向(P143) | |
标准输入输出(P143) | |
固定的0号文件描述符被分配给标准输入文件通常对应终端键盘 | |
1号文件描述符分配给标准输出文件通常对应终端的屏幕 | |
2号文件描述符分配给标准错误输出文件也对应终端的屏幕 | |
输入输出重定向及管道(P144) | |
命令<文件名 |
从一个文件输入重定向 |
命令< |
从标准输入读入数据,直到遇到delimiter停止 |
命令>文件名 |
输出重定向到一个文件中 |
命令>>文件名 |
输出追加重定向到一个文件中 |
2>文件名 |
标准错误输出重定向到一个文件中 |
&>文件名 |
将标准输出和错误输出同时重定向到同一文件中 |
命令1|命令2 |
管道 |
脚本执行的4种方式(P148) | |
./脚本名 [参数] |
|
bash 脚本名 [参数] |
必须是bash脚本,不一定设为可执行 |
exec脚本名 [参数] |
此脚本将被执行命令所取代,命令执行完毕之后,这个脚本也会随之结束 |
. 脚本名 [参数] |
只在当前环境执行,不会产生新的进程 |
基本脚本编程(P148) | |
test 条件表达式 |
条件测试(0真1-255假) |
[ 条件表达式 ] |
条件测试(条件表达式两边有空格) |
-a |
逻辑与 |
-o |
逻辑或 |
-! |
逻辑非 |
-e 文件名 |
如果文件存在,则为真 |
-d 文件名 |
如果文件为目录,则为真 |
-f 文件名 |
如果文件为常规文件,则为真 |
-L 文件名 |
如果文件为符号链接,则为真 |
-r 文件名 |
如果文件可读,则为真 |
-w 文件名 |
如果文件可写,则为真 |
-x文件名 |
如果文件可执行,则为真 |
文件1 -nt 文件2 |
如果文件1比文件2新,则为真 |
文件1 -ot 文件2 |
如果文件1比文件2旧,则为真 |
-z 字符串 |
如果字符串长度为零,则为真 |
-n 字符串 |
如果字符串长度非零,则为真 |
字符串1 = 字符串2 |
如果字符串1与字符串2相同,则为真 |
字符串1 != 字符串2 |
如果字符串1与字符串2不同,则为真 |
数值1 -eq 数值2 |
如果数值1等于数值2,则为真 |
数值1 -ne 数值2 |
如果数值1不等于数值2,则为真 |
数值1 -lt 数值2 |
如果数值1小于数值2,则为真 |
数值1 -le 数值2 |
如果数值1小于或等于数值2,则为真 |
数值1 -gt 数值2 |
如果数值1大于数值2,则为真 |
数值1 -ge 数值2 |
如果数值1大于或等于数值2,则为真 |
流程控制(P150) | |
if then else 语句 | |
if 条件语句1 ; then 命令语句1 elif 条件语句2 ; then 命令语句2 else 命令语句3 fi | |
for循环 | |
for 变量名in 列表 do 命令 done | |
until循环 | |
until 条件 do 命令 done | |
while循环 | |
while 条件 do 命令 done | |
case 语句 | |
case 值 in 模式1) 命令1;; 模式2) 命令2;; esac | |
break |
直接跳出循环 |
continue |
中断本次循环,跑到循环开始部分 |
函数(P153) | |
函数名() { command ……; } | |
|
|
|
|
|
|
|
|
|
|
|
|