我需要一个 bash 脚本,它将获取一个文件并为文件中已有的每个 \n 字符添加第二个 \n 字符:
那是:
abcd\nbcda
变成
abcd\n\nbcda
我该如何开始。或者,我应该用另一种语言编写它并将其包装在 bash 中吗?
kill -9 $PID &>/dev/null在脚本中杀死进程时,在下一个命令终止后仍会向终端打印一条消息。你如何阻止这种行为?
例如
while true; do
/usr/bin/dostuff -a -b -c
PID=$(pidof -o %PPID /usr/bin/dostuff)
sleep 1;
kill -KILL $PID &>/dev/null
echo "hello"
done
Run Code Online (Sandbox Code Playgroud)
会打印类似的东西
hello
./my-cript.sh: line 12: 7134 Killed
/usr/bin/dostuff -a -b -c
Run Code Online (Sandbox Code Playgroud)
当我只想打印“你好”时
编辑: 干净的解决方案是在子shell中运行程序,或者否认它。
#SOLUTION
while true; do
/usr/bin/dostuff -a -b -c &
disown
PID=$!
sleep 1;
kill -KILL $PID &>/dev/null
echo "hello"
done
Run Code Online (Sandbox Code Playgroud) 我想编写一个脚本来重复一个通常包含管道的命令行
./myscript.sh ls -lart |grep ^d
Run Code Online (Sandbox Code Playgroud)
而在myscript.sh我做了一堆东西,然后想执行ls -lart |grep ^d和管道从输出到别的东西。
(如果这真的很简单并且有 1 线解决方案,请提前抱歉)。
到目前为止我已经尝试过
$@ | someothercommand
Run Code Online (Sandbox Code Playgroud)
和
$* | someothercommand
Run Code Online (Sandbox Code Playgroud)
但无济于事...
./script &>> log.txt
我得到了一个不错的日志文件,但是如果我有由 cron 执行的相同命令,那么可以说 crontab 看起来像这样:
* * * * * '/home/user/script &>> /home/user/log.txt'
Run Code Online (Sandbox Code Playgroud)
log.txt 将是空的,我试过 " 和 ' 和 ` 并且没有刻度来包含命令,知道为什么流不会被写入文件吗?
我知道我必须计算有多少实例正在运行:
ps x | grep apache2 | wc -l
Run Code Online (Sandbox Code Playgroud)
结果如果它正在运行:2,否则:1
我也知道有一个叫命令test,我可以用它来进行验证,但我不知道如何使用test与wc
在我的 /var/log 目录中,我有这三个文件(从 ls -l 中提取)
size filename
205198 ntp.log
2446 ntp.log #
4096 ntp.log -
Run Code Online (Sandbox Code Playgroud)
文件“ntp.log -”以蓝色突出显示。
名字后面的#和-是什么意思??
需要在bash提示中添加什么格式字符以指示最近的history项目运行(或当前命令编号,如果可以将 1 添加到最后一个history条目)?
我的提示字符串是这样的:
\[\033[33m\][\u@\[\033[1;31m\]\h]\]\033[0m {\W}\n\033[1;34m\]\w\]\033[0m >
Run Code Online (Sandbox Code Playgroud)
给我以下显示:
[user@host] {~}
~ >
Run Code Online (Sandbox Code Playgroud)
用户为黄色,主机为红色。括号中的条目是当前目录,大于号之前的条目是完整的pwd.
我可以将当前命令号附加到第一行,这样我就会有如下内容:
[user@host] {~} (nnn)
~ >
Run Code Online (Sandbox Code Playgroud)
其中(nnn)在当前(或刚处理)命令数,运行时,如图history?
在 Windows 上,我曾经快速运行 adir *.mp3来查找当前目录中所有带有 mp3 扩展名的文件。有没有类似的快速方法可以用 bash 做到这一点?该ls命令似乎有一种方法可以忽略模式,但不能只显示模式。我可以做find . -maxdepth 1 -iname '*.mp3'或ls|grep -i '\.mp3$'但这些都不会在半秒或更短的时间内从我的手指中流出)
有没有更快的替代品?