Shell版本
sh:Bourne Shell,最初UNIX的shell。
csh:C shell。
ksh:Korn shell。
bash:Bourne Again Shell。 Linux默认shell。
tcsh:C shell的扩展。
pdksh:ksh不免费,这个免费。
echo -n "Date and time is:" -n不换行。
echo "your name is: `whoami` " ``会将其中的字符串解释成命令。
shell脚本执行方式
bash< xxx.sh:从xxx.sh中读取命令行并执行。
bash xxx.sh:可带参数。
chmod a+x xxx.sh:使xxx.sh对所有用户有“执行”权限。输入脚本名可以直接执行。
特殊字符
双引号:除$美元, `倒引号, \反斜杠之外,其余都视作普通字符。
单引号:单引号内部的字符都视作普通字符。
倒引号:左上角Esc下面的键,内部字符串被解释为命令。shell先执行,并以其结果代替整个倒引号部分。
反斜杠:把特殊字符变成普通字符,阻止shell把其后面的字符解释为特殊字符。
I/O重定向
输入:<作用是把命令的stdin重定向到指定文件,从文件中读取内容作为输入。
输出:>作用是把命令的stdout重定向到文件,执行的结果写入到文件中。执行多个命令到同一文件,前面命令会被覆盖。
输出附加:>>,附加到文件后面,不会破坏原文件内容。
即时文件:<<, 由"<<",一对标记符及其间的若干输入符组成。允许把shell程序的输入行定向到一个命令中。?????
注释:#开始表示注释。#!后面表示shell的绝对路径。#! /bin/csh #! /bin/bash
管道线:以|隔开的若干命令。每个命令都有独立进程,前一个命令输出作为下一个的输入。
命令执行操作符
顺序执行:可以执行一条命令,也可以执行多条,以“;”分开,前面执行失败不影响后面继续执行。
逻辑与: 命令1&&命令2,命令1成功,继续命令2。否则不继续。执行成功返回0,否则非0。
逻辑或: 命令1 || 命令2,执行1,不成功执行2;否则,1成功,则不执行2。
变量
变量名区分大小写。赋给变量的值如果有空格,制表符或换行,用双引号。同一变量,可以一次存放int,另一次存放string。
通过美元符号访问,如yourname=$myname;
内部变量
$#(传给程序的参数个数,不包括本身)
$?(最后一条命令完成的执行结果)
$0*(自己的名字)
$*(传给程序的所有参数的字符串,不包括本身)
环境变量
HOME:/home/username
LOGNAME:用户的注册名,由Linux自动设置。它是系统与用户交互的名字。
MAIL:用户系统邮箱路径,/var/spool/mail/username
PATH:shell从中查找命令的目录列表。
PS1:定义了用户的主提示符是如何构成的。如\u@\h:\w#对应比如wgsupport@Firebox:~#。[\u@\h \W]\$对应[ryo@t430-lap Documents]$。
PWD:用户当前工作目录的路径。
SHELL:用户当前使用的shell,也指出了用户shell解释程序放在什么地方。
TERM:用户终端类型。
位置参数
shell脚本被别人调用时可以传入参数,第一个$1,第二个$2直到$9。
用set可以设置或重置参数。
当参数大于9时,用shift左移参数。shift移动一个,shift 4移动4个。
sh:Bourne Shell,最初UNIX的shell。
csh:C shell。
ksh:Korn shell。
bash:Bourne Again Shell。 Linux默认shell。
tcsh:C shell的扩展。
pdksh:ksh不免费,这个免费。
echo -n "Date and time is:" -n不换行。
echo "your name is: `whoami` " ``会将其中的字符串解释成命令。
shell脚本执行方式
bash< xxx.sh:从xxx.sh中读取命令行并执行。
bash xxx.sh:可带参数。
chmod a+x xxx.sh:使xxx.sh对所有用户有“执行”权限。输入脚本名可以直接执行。
特殊字符
双引号:除$美元, `倒引号, \反斜杠之外,其余都视作普通字符。
单引号:单引号内部的字符都视作普通字符。
倒引号:左上角Esc下面的键,内部字符串被解释为命令。shell先执行,并以其结果代替整个倒引号部分。
反斜杠:把特殊字符变成普通字符,阻止shell把其后面的字符解释为特殊字符。
I/O重定向
输入:<作用是把命令的stdin重定向到指定文件,从文件中读取内容作为输入。
输出:>作用是把命令的stdout重定向到文件,执行的结果写入到文件中。执行多个命令到同一文件,前面命令会被覆盖。
输出附加:>>,附加到文件后面,不会破坏原文件内容。
即时文件:<<, 由"<<",一对标记符及其间的若干输入符组成。允许把shell程序的输入行定向到一个命令中。?????
注释:#开始表示注释。#!后面表示shell的绝对路径。#! /bin/csh #! /bin/bash
管道线:以|隔开的若干命令。每个命令都有独立进程,前一个命令输出作为下一个的输入。
命令执行操作符
顺序执行:可以执行一条命令,也可以执行多条,以“;”分开,前面执行失败不影响后面继续执行。
逻辑与: 命令1&&命令2,命令1成功,继续命令2。否则不继续。执行成功返回0,否则非0。
逻辑或: 命令1 || 命令2,执行1,不成功执行2;否则,1成功,则不执行2。
变量
变量名区分大小写。赋给变量的值如果有空格,制表符或换行,用双引号。同一变量,可以一次存放int,另一次存放string。
通过美元符号访问,如yourname=$myname;
内部变量
$#(传给程序的参数个数,不包括本身)
$?(最后一条命令完成的执行结果)
$0*(自己的名字)
$*(传给程序的所有参数的字符串,不包括本身)
环境变量
HOME:/home/username
LOGNAME:用户的注册名,由Linux自动设置。它是系统与用户交互的名字。
MAIL:用户系统邮箱路径,/var/spool/mail/username
PATH:shell从中查找命令的目录列表。
PS1:定义了用户的主提示符是如何构成的。如\u@\h:\w#对应比如wgsupport@Firebox:~#。[\u@\h \W]\$对应[ryo@t430-lap Documents]$。
PWD:用户当前工作目录的路径。
SHELL:用户当前使用的shell,也指出了用户shell解释程序放在什么地方。
TERM:用户终端类型。
位置参数
shell脚本被别人调用时可以传入参数,第一个$1,第二个$2直到$9。
用set可以设置或重置参数。
当参数大于9时,用shift左移参数。shift移动一个,shift 4移动4个。