shell基础语法备忘录二
时间:2021-06-19 19:36:57
收藏:0
阅读:0
2021-06-19
关键字:
1、shell中的文件描述符
与Linux文件系统一样,shell中也有文件描述符的概念,且每一个shell进程中都默认有三个已打开的文件描述符。它们分别代表“标准输入”、“标准输出”与“错误输出”,对应的文件描述符号分别为 0、1、2。描述符号3及以后的正整数值可自由使用。
从一个shell中以新进程的形式启动的子shell会继承父shell中的三个默认文件描述符。
shell中文件描述符的使用通常是在需要重定向流的走向时。重定向语法格式如下所示:
#output [n]> #input [n]<
n代表非负整数值。n是可选的,如果不填,则输出时代表标准输出(即描述符为1),输入时代表标准输入(即描述符为0),以下是一些示例语句:
#将命令执行结果保存到文件 ls -l /etc > ls.record #将命令执行结果输出到屏幕,错误信息保存到文件 ls -l /etc 2> ls.error #将命令执行结果及错误信息均保存到文件 ls -l /etc > ls.record 2> ls.error #将标准输出和错误输出同时重定向,与上一条命令等价 ls -l /etc &> ls.output
#追加内容到已存在文件
ls -l /etc 1>> ls.record #从指定文件中查找内容 grep name 0< names.txt #与上一条命令等价 grep name < names.txt
如果想快速创建一个空文件,则可以使用以下命令:
> new.file :> new.file
2、将错误输出重定向到标准输出
语法如下:
ls -l /etc > ls.record 2>&1
3、半永久式重新分配文件描述符
使用exec命令可以在本shell登录中永久改变描述符流向,具体如下表所示:
重定向方式 | 含义 |
exec 2> file | 将所有命令的错误输出重定向到文件file |
exec n< file | 以只读的方式打开名称为file的文件,并使用文件描述符n,n是大于3的整数。 |
exec 2> file | 以写的方式打开名称为file的文件,并使用文件描述符n。 |
exec n<>file | 以读写的方式打开文件file,并使用文件描述符n。 |
exec n>&- | 关闭文件描述符n |
exec n>&m | 使得文件描述符n成为文件描述符m的副本,即将文件描述符m复制到n |
4、根据进程名查询运行状态及进程号
使用 pidof 命令可以实现此目的。具体语法如下:
pidof [option] program
option可以不填。一般的用法是pidof 后加要查询的进程名称,查询成功返回0值且打印相应进程号,多个进程号以制表符隔开。若指定进程未在运行则返回1值。
5、查询当前shell的层级
在shell中可以嵌套登录到另一个shell,通过以下命令可以查询到当前的shell登录级数:
echo $SHLVL
6、临时开启子shell执行命令
可以使用圆括号来实现,圆括号中的所有命令均会在子shell中以新进程的身份执行。具体语法如下所示:
(command1;command2;command3...)
(
command1
command2
...
)
7、bash shell的常用内部命令
如下表:
内部命令 | 含义 |
. | 加载库脚本文件进本shell中执行。简单理解成是读取shell脚本中的内容进来本shell中执行即可。 |
alias | 设置命令别名。函数是将一组命令打包设置一个别名,alias则是针对一个命令打包设置别名。 |
bg | 将作业置于后台运行。 |
cd | 改变当前工作目录。 |
echo | 打印指定的文本。 |
eval | 将参数作为shell命令来执行。用引号包括住命令及其参数。 |
exec | 将指定的程序取代shell或者永久改变当前shell的流方向。 |
exit | 退出shell |
export | 将变量声明为环境变量。 |
fc | 与命令历史一起运行。 |
fg | 将作业置于前台运行。 |
getopts | 处理参数中的选项内容。 |
history | 显示命令历史 |
jobs | 显示在后台运行的作业。 |
kill | 向进程发送信号。 |
logout | 从shell中注销。 |
pwd | 显示当前的工作目录 |
set | 设置shell环境变量。 |
shift | 变换命令行的参数,将参数往左移一位,最左边的参数将被删除。 |
8、bash shell中的常用保留字段
如下表:
保留字段 | 含义 |
! | |
: |
|
break | |
case | |
continue | |
declare | |
do | |
done | |
elif | |
else | |
esac | |
for | |
let | |
local | |
read | |
return | |
test | |
then | |
until | |
wait | 等待后台作业完成。 |
while |
评论(0)