在 Unix shell 中,如何通过行号从文本文件中选择一行?
假设我希望将animals.txt 中第3 行的任何内容写入标准输出(bat bat bat)。
monkey monkey monkey
cat cat cat
bat bat bat
horse horse horse
Run Code Online (Sandbox Code Playgroud)
有没有标准的程序或简单的方法来做到这一点?
(还有一种情况是文本文件没有包含足够的行来包含您要求的行号)
如何在 shell 脚本中处理名称中包含空格的文件。
这是我正在尝试的
find /abc/xyz -name 'BY567*.csv' | while read fname
do
mv "$fname" ./archive/$(basename $fname)-$(date +%Y%m%d-%T)
done
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,它会在空格后去掉文件名。就像文件名是 BY567_Test file.csv 一样,它将更改为 BY567_Test-datetimestamp 而不是 BY567_Test file.csv-datetimestamp。
我在 linux 中用一行编写了一个名为“a.sh”的 shell 脚本:
光盘..
: 然后我运行它:
chmod +x a.sh
sh ./a.sh
Run Code Online (Sandbox Code Playgroud)
:我如何在没有得到的情况下运行它:
“找不到命令”或“无法 cd”。也许我已经看这段代码太久了,或者我做错了什么?
注意:此后我发现了问题所在。Emacs 在每一行的末尾插入了一些奇怪的“^m”字符
可能的重复:
删除超过 30 天的文件的脚本
我的硬盘突然满了,我四处寻找,直到我终于发现隐藏在Library/Logs/Console/myname/中的“console.log.9”文件是112 Gigs!
我无法打开并正确检查它。
我做了一些研究,并找到了使用 find 和 exec 命令从特定路径查找和删除超过 30 天的日志文件的方法。
find /export/home/ftp ( -name console.log -or -name server.log ) -mtime +30 -exec rm -f {} +
但我想每天轮换 console.log 并且是否有任何 shell 脚本可以每天轮换 console.log。
请帮我解决这个问题。
以前从未见过在 BASH 中使用过这个:
pidfile=${PIDFILE-/var/run/service.pid}
我以前从未见过/使用过的${PIDFILE-部分是部分。
我发现一个 shell 命令可以向目标主机发送大量数据:
dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'
Run Code Online (Sandbox Code Playgroud)
我想我可以用它来测试网络带宽,但它无法显示进程状态。
我有一个 test.sh 脚本
#!/bin/sh
php /home/v/file.php
sh /root/x/some.sh
Run Code Online (Sandbox Code Playgroud)
当我从命令行以 root 身份执行文件时,它可以工作。
sh /home/v/test.sh
Run Code Online (Sandbox Code Playgroud)
当我将它设置为 crontab -e(是根 cron)时,它不起作用
* * * * * sh /home/v/test.sh
Run Code Online (Sandbox Code Playgroud)
我做错了什么?谢谢
我们 (openSuSE) linux 系统上的用户尝试运行 sudo,并触发了警报。他设置了环境变量 EGG -
EGG=UH211åH1ÒH»ÿ/bin/shHÁSH211çH1ÀPWH211æ°;^O^Ej^A_j<X^O^EÉÃÿ
Run Code Online (Sandbox Code Playgroud)
至少可以说,这看起来很不寻常。
EGG 是合法的环境变量吗?(我发现了一些对 PYTHON_EGG_CACHE 的引用 - 可能是相关的?但是没有为该用户设置该环境变量)。如果它是合法的,那么我想这个群体最有可能认识到它。
或者,鉴于嵌入/bin/sh在上面的字符串中,是否有人将其识别为漏洞利用指纹?这不是我们第一次破解帐户(叹气)。
find . -name "*.[hc]|*.cc"
Run Code Online (Sandbox Code Playgroud)
上面的不起作用,为什么?
更新
如何找到具有单一模式的这 3 种文件?
这是我需要解决的具体问题(但我的问题不同,所以即使您不知道fail2ban是什么,也请继续阅读):
我正在尝试在 linux 服务器上使用 fail2ban 来禁止对多个服务(ssh、dovecot、apache、postfix 等)的暴力攻击。现在我偶然发现了一个问题,fail2ban 似乎同时执行多个 iptables 命令(使用 Python 中的线程)并且这经常失败(特别是在启动时),其中 iptables 返回“资源暂时不可用”。错误。
我想通过“同步”对 iptables 的调用来解决这些问题。我正在寻找一个程序来创建一些互斥锁/锁定文件,并且只有当这个文件可以被创建时,它才会启动真正的命令并在命令完成后删除互斥锁文件。如果互斥文件已经存在,则程序会等待互斥文件消失,然后尝试获取它。
使用这样的命令,我可以将 fail2ban 中的 iptables-actions 配置为相互等待,这样它们就不会同时执行。
我很确定已经有这样的程序了,所以我不必自己编写。但到目前为止我还没有找到。