Linux中的Shell
重定向标准输入,使用符号 <,指示shell将某个命令的输入重定向为来自某个文件而不是键盘。
格式为:command [arguments] < filename
重定向标准输出,使用符号 >,将某个命令的输出重定向到所指定的文件,而不是屏幕。
格式为:command [arguments] > filename
注意:若所指定的文件存在,此命令会覆盖原有内容。
cat > sample.txt 将输入的字符保存到sample.txt中,书写简单的文本文件比较方便
cat a.txt b.txt c.txt > sample.txt 将a,b,c文件的内容拼结到sample.txt中,作为文件的串接
添加标准输出,使用符号 >>,将添加信息到文件的结尾,不会覆盖原有文件。
重定向标准错误,执行程序的时候,进程会打开3个文件描述符,0表示输入、1代表输出、2代表错误。
重定向标准输入<0简写<,重定向标准输出>1简写>,重定向标准错误>2
cat x y > hold1 2> hold2:将标准输出重定向到hold1,标准错误重定向到hold2
cat x y > hold 2>&1:2>&1表示文件描述符2为文件描述符1的副本,结果是标准输出和标准错误都输出到hold
/dev/null数据池,用户将不希望保留的输出重定向到这个地方。这样输出结果就会自动消失
echo "hi there" > /dev/null
从数据池读取,得到一个空字符串
cat /dev/null > messages 清空messages文件,但保留权限
后台运行程序,使用符号 &
ls -l | lpr &
[1] 22092 --自动获取的作业号与进程号
后台作业执行完后,有以下信息
[1]+ Done ls-l | lpr
-号表示第一个作业,+号表示最后一个作业,中间的作业不跟符号。只有一个作业用+表示
特殊字符,?匹配单个符,*匹配0个或多个字符,[]表示只匹配中括号内的一个字符
命令替换$(...) `...` 使用命令输出来替换一个命令
echo $(date) 或 `date` 输出的是当前日期,如果没有使用命令替换 echo date 直接输出date字符
chmod使用文件可执行:
chmod u+x whoson 赋于文件whoson对拥有者的执行权限
独立和成组命令
;分离命令,如x;y;z表示三条命令
\继续执行命令,当光标到了屏幕的最右端,可以用(\)指示本行与下一行为一个整体的命令
()组合命令
(a;b) & c &:a和b是一组命令,它们是顺序执行的
a & b & c &:没有成组命令,它们是并发执行的
位置参数
$0:调用的程序名
$1-$n:命令行参数
$*、$@:显示所有命令行参数
$#:命令行参数个数
$?:返回的结果 0为ture,非0为假
$$:保存PID号