|
shell原理认知:
关于shell中的通配符*
shell先展开通配符后再传给命令,例如"ls
-ld /usr/include/*"先展开为"ls-ld file-list,"
查看历史:
可以通过history命令来查看命令历史
可一使用!!执行上一条命令
bash启动:
查找全局设置/etc/profile,之后查找用户主目录下的设置,.bash_profile
.bash_login .profile。按优先级,前面的文件执行了后面的就不会执行。
命令行提示符:
命令行提示符通过内建变量PS1和PS2定义,PS1是主提示符,PS2是同一条命令换行后显示的,叫从提示符或副提示符,更多详细信息可查看man
bash PROMPTING段。通过export命令可修改变量
重定向:
使用>符号重定向会使覆盖原有文件,打开bash选项noclobber则不会
打开noclobber:set
-o noclobber
关闭noclobber:set
+o noclobber
>如果不指明,默认使用标准输出1>
把标准输出和错误输出指定为同一个:command
> outputfile 2>&1
tee命令可以既在标准输出中输出又保存到文件
块语句重定向多个语句的输出一起重定向可以使用{}({
command;command;command;} >output.file)把语句括起来,然后使用重定向
另一种方式是把命令序列放到子shell上执行,用()括起(command;command;)
>output.file
脚本中对语句块使用重定向:部分重要代码,注意理解:
whileread line
do
count=$((count+1))
echo$(count):$(line)
done$filename.lined
管道:
让接受参数的命令接收来自管道的数据:rm
-i $(find . -name ‘*.out’)
Here
Document:
command
delimiter
文件描述符:
shell命令行每个命令自动打开3个描述符STDIN
0,STDOUT 1, STDERR 2
一个脚本需要把不同的数据输出到不同的文件:
echo"data to file descriptor 3" >&3
echo"data to file descriptor 4" >&4
echo"data to file descriptor 5" >&5
运行命令./shname
3>outputfile3 4>outputfile 5>outputfile
一个脚本多个命令输入或输出都使用同一个文件,但文件名很长:
exec 4>outfile.name
exec 5>&4
echo "data to file descriptor" 1>&5
echo "data to file descriptor" >&4
exec 4>&-
exec 5>&-
打开描述符:
exec
fd>outputfile如果文件已存在,则覆盖
exec
fd>>outputfile以追加方式
打开后就可以使用了:command1>&fd
输入描述符的情况类似
exec
fd |
|
|