hanjinping 2012-03-20
linuxshell中"2>&1"含义
脚本:nohup/mnt/Nand3/H2000G>/dev/null2>&1&
对于&1更准确的说应该是文件描述符1,而1一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0表示键盘输入1表示屏幕输出2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
LinuxShellScriptingTutorial(ABeginner’shandbook)
LinuxShellScriptingTutorial(LSST)v1.05r3
QuickIntroductiontoLinux
Shell是用来交互的用户程序或者环境,是一个从标准输入(键盘)或者文件中执行命令的命令行语言解释程序。它不是系统内核的一部分,它使用系统内核来执行程序,创建文件等。
$cat/etc/shells(查看系统支持的所有shell)
echo$SHELL(查看当前正在使用的Shell)
Shell内置变量:
echo$?(查看执行Shell命令后的退出状态0代表成功,非0代表有问题)
echo$#(查看Shell的参数个数)
echo$*(查看Shell的所有参数)
echo$@(查看Shell的所有参数)
echo$$(查看Shell的PID)
echo&$!(查看上一个启动的后台进程的PID)
echo$0(ShellScript的文件名称)
echo$n(ShellScript的第n个参数)
系统变量:默认大写,用户自定义变量:默认小写
用户自定义变量:变量名=变量值
变量名规则:
echo命令:用来显示文本或者变量的值
Shell运算:exprop1math-operatorop2
双引号”、单引号’、左引号`(Backquote,居于键盘的左上角和~在同一个键位、执行命令的作用,eg:echo"Todayis`date`")
退出状态
readvariable1variable2...variableN从键盘中得到用户输入的数据并保存的相应变量中(多个变量用空格隔开)
command1;command2多个命令一起执行
输入输出重定向
>,把命令或者脚本执行结果输出到文件,如果文件已经存在,那么覆盖
>>,把命令或者脚本执行结果输出到文件末尾,不会覆盖原有信息
<,Linux-command<filename,从文件而不是键盘中得到输入参数
管道|,前一个命令的输出作为后一个命令的输入ls|more
$tail+20<hotel.txt|head-n30>hlist
&后台进程符号,单一个&符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
ShellScript:是保存在纯文本文件中的一系列命令,类似与MS-DOS下的批处理文件,但是比批处理文件更加强大。
编写Shell脚本:
1,使用文本编辑器vi、mcedit来编写shellsrcipt
2,chmod授权
3,执行bashyour-script-name、shyour-script-name、./your-script-name、.command-name
4,注意:./代表当前目录,只有一个.的时候代表在当前的shell环境下执行脚本