我正在努力让我更容易保持我的网址缩短程度。当我必须通过ssh进入并继续向我的.htaccess添加另一行时,它变得非常乏味且非常烦人。所以我想知道是否有一种方法可以轻松添加一行文本,并且可以放入脚本
示例:
<Directives here>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
<Other Directives here as well as ending Directive>
现在让我说咯咯笑我想为此添加127.0.0.1和192.168.0.1,但由于我无法直接回显我想要的地方,我该如何解决这个问题。接受Bash或Python答案
答案 0 :(得分:0)
sed -e '$i Deny from 192.168.0.1' .htaccess
这可以假设你想在最后一行之前插入。第二次读到你的问题后,我注意到你写了“&lt; Other Directives here ...&gt;”。虽然这是一个隐藏的提示,但我想你想在第一部分插入一行代码,如下所示:
<Directive_1>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
</Directive_1>
...
<Directive_n>
...
</Directive_n>
以下sed命令将在第一部分的结束标记之前插入一行:
sed -e '/^<\/Directive_1>$/i Deny from 192.168.0.1' .htaccess
答案 1 :(得分:0)
这是另一种方式,在sh / ksh / bash中: http://stromberg.dnsalias.org/~strombrg/contextual
答案 2 :(得分:0)
使用head
,echo
和tail
的组合,您可以创建包含所需行的临时文件,然后mv
或cp
结束原始文件。
将Deny from 127.0.0.1
添加到您的示例.htaccess:
(head -n -1 .htaccess
echo 'Deny from 127.0.0.1'
tail -n 1 .htaccess) > .htaccess.tmp
mv -b .htaccess.tmp .htaccess
# cat .htaccess
<Directives here>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
Deny from 127.0.0.1
<Other Directives here as well as ending Directive>
head -n -1
:获取除最后一行echo
新行tail -n 1
以外的所有原始行:获取最后一行原始行。 () >
将所有内容写入临时文件。 mv -b
覆盖原始文件,保存备份。
当然,此解决方案假设您知道要添加新内容的文件末尾有多少行。