linux shell FAQ

来源:互联网 发布:编程求最小公约数 编辑:程序博客网 时间:2024/06/03 14:53

1、tar命令 tar: /mnt/raid5/pgsql/data:归档中找不到 问题

在压缩文件时,当后面的备份目录使用绝对路径时,会出现:

[root@device ~]# tar -zxvf /mnt/raid5/pgsql/data201704.tar.gz /mnt/raid5/pgsql/data
tar: /mnt/raid5/pgsql/data:归档中找不到
tar: 由于前次错误,将以上次的错误状态退出

解决方式1:在压缩时增加-P(大写)参数即可。

需要注意的是:
-P为递归目录,所以解压时也需要增加-P参数,或者再根目录进行解压

解决方案2:压缩和解压时都使用相对路径即可:

tar -zcvf data201704.tar.gz data

tar -zxvf data201704.tar.gz data

2、分界符EOF使用

  在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,可将其理解为分界符(delimiter)。既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:
交互式程序(命令)<<EOF
command1
command2
...
EOF
       ”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。
       "EOF"一般常和cat命令连用。
注意,最后的”EOF“必须单独占一行。

0 0
原创粉丝点击