您知道这种情况:您正在输入一条长命令(例如提交消息)的一半,并意识到您忘记执行一些无法添加的先决条件命令&&。通常,当我遇到这种情况时,我会选择我用鼠标键入的内容,将其复制到剪贴板,按 Ctrl-U 清除该行,运行我的先决条件命令并从剪贴板粘贴。但也许有更好的方法,最好不需要使用鼠标?我正在寻找 bash 和/或 zsh 的解决方案。
我试图找到这三行:
<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
Run Code Online (Sandbox Code Playgroud)
并将它们替换为:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)
当我尝试
sudo sed -i 's:<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
Run Code Online (Sandbox Code Playgroud)
它没有找到它,我也尝试将 \n 放入其中,但它仍然不起作用:
sudo sed -i 's:<!--\n <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\n -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
Run Code Online (Sandbox Code Playgroud)
这些不会引发任何错误,只是不会取消注释该行。任何建议都会有所帮助谢谢!
好的,从我的角度来看,这是一个非常实用的用例。
假设我有一个简单的 shell oneliner,它将输出记录到一个文件中。这可以是任何东西,例如 tcpdump。是否有任何通用和简单的方法来确保输出文件不会超过给定的大小?
这背后的共鸣是防止错误地填充安装点上的整个可用空间。如果我忘记了脚本,或者它每小时会产生 GB 的数据,那么这个简单的调试任务可能会导致潜在的系统崩溃。
现在,我知道一些工具中内置的选项(例如 tcpdump 中 -W/-C 的组合)。我需要的是一个非常通用的故障保护。
长话短说 - 当我运行一个脚本时:
% this -is --my=very|awsome|script >> /var/tmp/output.log
Run Code Online (Sandbox Code Playgroud)
如何确保 output.log 永远不会超过 1GB。
脚本可能会崩溃、被杀死或其他什么。
我正在寻找的解决方案应该简单易行,仅使用流行发行版(如 ubuntu/debian/fedora)中可用的工具。一般来说,一些广泛可用的东西。无论语言/技术如何,复杂的多行程序都不是这里的选择。
我想知道是否可以编写一个脚本来监视文件中的更改并在检测到更改时执行某些操作。
详细解释:
我想编写一个简单的脚本,在日志更改时提醒我。为此,我使用 grep 来查找我感兴趣的行。现在它是这样工作的:
grep line /var/log/file | mail -s Log email@domain.tld
Run Code Online (Sandbox Code Playgroud)
问题是即使没有找到匹配的行,这也会发送邮件。mailutils 的邮件实用程序似乎没有开关告诉它丢弃正文为空的邮件。
有没有一种快速简便的方法呢?
我必须通过删除每个文件名的前 5 个字符来重命名目录中的多个文件。
我怎样才能做到这一点我 bash/shell?我正在使用 Ubuntu 11.10。谢谢。
我需要在 Scientific Linux (RHEL) 安装脚本中自动安装 CPAN 和一些 Perl 模块。不幸的是,就我所见,我想要的特定模块(至少其中一个)无法作为 RPM:s 找到。
所以我需要安装 CPAN,自动配置它(或使用配置文件),然后自动安装所需的模块(包括依赖项)。
这似乎不是一个非常不寻常的要求,但我还没有看到任何关于此的非常好的文档。问题是,每当第一次启动 CPAN 时,都会运行交互式配置。这可以以某种方式跳过吗?以及如何直接从命令行启动模块安装?
有没有办法递归地查找用户拥有的所有文件并将它们更改为 Gnu/Linux 中的另一个用户/组?
我认为一定有一些神奇的单线,但我的命令行巫术技能达不到那个程度:)
谢谢!
我正在尝试为 bash 脚本设置另一个代码块,以检查 HTTPS 上的公共网站是否已启动。我们可以使用 CURL 来做到这一点吗?除了 CURL 之外,还有什么可以使用的建议。谢谢
Debian(Raspbian)的新手,我在这个问题上挣扎了几天。我有一个要在启动时执行的启动脚本。
我执行了以下命令,以使脚本可执行并将其与默认参数一起添加到启动序列中。
sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults
Run Code Online (Sandbox Code Playgroud)
尝试测试脚本时,我执行以下操作:
sudo /etc/init.d/testsam start
Run Code Online (Sandbox Code Playgroud)
但是这样做时,我收到一个错误:无法执行 /etc/init.d/testsam: No such file or directory。
我将脚本最小化为非常基本的,但仍然不知道实际原因。我希望有人能指出我正确的解决方案?这是当前的脚本。
#! /bin/bash
# /etc/init.d/testsam
case "$1" in
start)
#echo "starting script"
;;
stop)
#echo "stopping script"
;;
*)
#echo "Usage: /etc/init.d/testsam {start|stop}"
exit 1
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助