我试图让perl脚本在文本文件的末尾添加换行符,然后写入以下内容:
/ bin中/假
该文件如下所示:
/ bin / sh的
/斌/破折号
/斌/庆典
/斌/ rbash
在/ usr / bin中/ TMUX
的/ usr /斌/屏幕
我尝试过运行以下脚本:
perl -pi -e的/// usr // bin // screen /// usr // bin // screen“\ n”// bin // false / g'/ etc / shells
但没有任何运气。它不接受换行符,只返回语法错误。你能帮忙吗??
答案 0 :(得分:1)
此:
s///usr//bin//screen///usr//bin//screen"\n"//bin//false/g
确实有语法错误。从你使用双倍的事实开始
路径上的栏,你应该逃过它们(\/
),还有
它中间有一个奇怪的换行符。你也可以使用其他
分隔符而不是正斜线,以避免全部逃脱。
s!/usr/bin/screen\n!/usr/bin/screen\n/bin/false!
另外,别忘了关闭你的最后一行。你也可以使用\K
(有关详细信息,请参阅perldoc perlre
)以简化正则表达式
结果:
s!/usr/bin/screen\n\K!/bin/false\n!
但无论如何,这似乎有点矫枉过正。您可以使用shell功能
通过附加>>
:
echo /bin/false >> /etc/shells