我有像这样修改文件的bash脚本
sed -i "/hello world/d" /etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)
我从Web应用程序运行此脚本.sed命令在该目录中创建临时文件,但Web应用程序工作的用户无权在该目录中创建文件.我不想为该文件夹的用户授予更多权限.是否可以为sed命令指定临时文件位置?
我是linux新手,很抱歉,如果我的问题太容易了,但我找不到任何解决方案.
谢谢!
小智 6
您可以使用moreutils中的“海绵” 。
sed "/hello world/d" /etc/postfix/virtual | sponge /etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)
该文件必须通过临时文件进行修改,这实际上是sed所做的,但缺少权限。
处理这种情况时,我们只是手动执行此过程。
## TEMP File
TFILE=`mktemp --tmpdir tfile.XXXXX`
trap "rm -f $TFILE" 0 1 2 3 15
##
sed 's_XXX_YYY_' /etc/example > "$TFILE"
cat "$TFILE" > /etc/example
## trap Deletes TFILE on Exit
Run Code Online (Sandbox Code Playgroud)
老问题,但我惊讶地发现没有人建议通过变量使用一些好的 RAM。这就是我最终所做的,根本不需要临时文件:
TEMP_SED=$(sed "/hello world/d" /etc/postfix/virtual)
echo "$TEMP_SED" > /etc/postfix/virtual
unset TEMP_SED
Run Code Online (Sandbox Code Playgroud)
ing时请注意变量周围的引号echo。这是为了保留文件中的任何换行符所必需的。
您始终可以避免内联编辑:
sed "/hello world/d" /etc/postfix/virtual > /tmp/_foo
# mv /tmp/_foo /etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)
但我要提醒一下,网络用户编辑/etc/postfix/virtual是相当危险的。
| 归档时间: |
|
| 查看次数: |
12317 次 |
| 最近记录: |