我有一个文件,我需要在其中消除;每一行第一个之后的所有内容。
所以一个这样的文件:
sdfsdsdf;
fsdfsddf;sdfsd;
Run Code Online (Sandbox Code Playgroud)
会导致这样:
sdfsdsdf
fsdfsddf
Run Code Online (Sandbox Code Playgroud)
我已经调查过grep和sed。我会很感激包含这些命令中的任何一个的答案。
我已经对如何做到这一点进行了大量研究,我发现 cron 中没有直接的方法来运行工作,比如每隔一个星期四。
现在,我倾向于制作一个每周只运行一次的脚本,并且在它运行时会触摸一个“标志”文件,如果它运行并且文件已经存在,则删除该文件(而不是执行双周行动)。
我的问题是,是否有其他更优雅或更简单的方法来实现每隔一周自动运行一次 bash 操作脚本的目标?
谢谢!
我最近进行了很多安装,如果可能的话,我通常会选择从 Live CD 的 GRUB 菜单中进行文本安装。大多数安装程序看起来像这样:

我一直认为这些 GUI(如果您可以这样称呼它们的话)真的很棒而且很轻巧。看到很多应用程序/发行版都在使用它们,它一定是共享库还是什么?有没有办法制作这样的东西?
我有一个命令,它接受一个文件作为参数,修改文件,然后将它写入第二个参数中指定的文件名。我会调用那个程序modifyfile。
我希望它“就地”工作,所以我编写了一个 shell 脚本 (bash),将它修改为一个临时文件,然后将其移回:
TMP=`mktemp`
modifyfile "$original" "$TMP"
mv -v "$TMP" "$original"
Run Code Online (Sandbox Code Playgroud)
这具有破坏此文件权限的不幸副作用。该文件使用默认权限重新创建。
有没有办法告诉mv命令在不改变其权限的情况下覆盖目标?或者有没有办法从原始保存用户、组和权限并恢复它们?
例如,我一直试图在我的脚本文件中说“目前有 10 个人在线”。
如果没有下一行的“目前在线人员”部分,我似乎永远无法使命令工作。
目前,我有
w='who | wc -l'
echo "There are $w people online at the moment"
Run Code Online (Sandbox Code Playgroud)
但是,我总是以输出结束
There are who | wc -l users online at the moment
Run Code Online (Sandbox Code Playgroud)
你如何让命令在中间工作?我一直在尝试查看和复制示例,但它似乎对我的命令替换问题没有帮助。
if grep -q "?" out.txt
then
echo "working"
else
cat out.txt
fi
Run Code Online (Sandbox Code Playgroud)
基本上,如果文件“out.txt”包含“?” 文件中的任何地方我都希望它回显“工作”,并且如果文件“out.txt”不包含“?” 文件中的任何地方,然后我希望它 cat out.txt
编辑:所以这就是我在做什么。我正在尝试暴力破解 openssl 解密。
openssl enc 成功返回 0,否则返回非零。注意:您会得到误报,因为 AES/CBC 只能根据正确的填充来确定“解密是否有效”。所以文件解密了,但它不是正确的密码,所以里面会有乱码。乱码中的一个常见字符是“?”。因此,如果输出包含“?”,我希望 do 循环继续运行。
这是我的 git 链接https://github.com/Raphaeangelo/OpenSSLCracker 这是脚本
while read line
do
openssl aes-256-cbc -d -a -in $1 -pass pass:$line -out out.txt 2>out.txt >/dev/null && printf "==================================================\n"
if grep -q "?" out.txt
then
:
else
cat out.txt &&
printf "\n==================================================" &&
printfn"\npassword is $line\n" &&
read -p "press return key to continue..." < /dev/tty;
fi …Run Code Online (Sandbox Code Playgroud) 我正在尝试在脚本中执行这些操作。我必须在远程主机上运行一些命令。目前,我正在这样做:
ssh root@host 'bash -s' < command1
ssh root@host 'bash -s' < command2
ssh root@host 'bash -s' < command3
Run Code Online (Sandbox Code Playgroud)
但是,这意味着我必须反复连接到服务器,这会增加处理命令之间的大量时间。我正在寻找这样的东西:
varSession=$(ssh root@host 'bash -s')
varSeesion < command1
varSeesion < command2
varSeesion < command3
Run Code Online (Sandbox Code Playgroud)
同样,我需要通过脚本运行这些命令。我已经看过了,screen但我不确定它是否可以在脚本中使用。
在 RHEL 5.8 上使用 /bin/bash 并且我想自动编辑文件。我需要脚本来搜索文件并替换文件中的一行。线路示例:
Other line
Current date 01121990
Other line
Run Code Online (Sandbox Code Playgroud)
搜索此行并将日期字符串替换为预定日期。我无法回显到新文件并输入我的日期,因为此文件将从特定于服务器的文件中复制。谢谢!
我正在尝试编写一个简单的脚本来从主机列表中检索内存和交换使用情况。目前,我能够实现这一目标的唯一方法是编写 3 个单独的脚本:
for a in {1..9}; do echo "bvrprdsve00$a; $(ssh -q bvrprdsve00$a "echo \$(free -m|grep Mem|/bin/awk '{print \$4}';free -m|grep Swap|/bin/awk '{print \$4}')")"; done > /tmp/svemem.txt;
for a in {10..99}; do echo "bvrprdsve0$a; $(ssh -q bvrprdsve0$a "echo \$(free -m|grep Mem|/bin/awk '{print \$4}';free -m|grep Swap|/bin/awk '{print \$4}')")"; done >> /tmp/svemem.txt;
for a in {100..218}; do echo "bvrprdsve$a; $(ssh -q bvrprdsve$a "echo \$(free -m|grep Mem|/bin/awk '{print \$4}';free -m|grep Swap|/bin/awk '{print \$4}')")"; done >> /tmp/svemem.txt
Run Code Online (Sandbox Code Playgroud)
这样做的原因是主机名总是以 3 位数字结尾,而这些主机从 001-218 开始,所以我需要为每组 (001-009、010-099、100-218) 执行不同的 for …
我需要一个脚本来创建一个文件,其中包含一个序列中的下一个文件。脚本的每次执行应该只创建一个文件,并且脚本可以在任何一天运行零次或多次。文件应以当前日期命名,%y%m%d并-01附加第二个文件,在给定日期创建的第三个文件将具有-02等。例如:
20170125.txt // first file create on the day.
20170125-01.txt // 2nd file
20170125-02.txt // 3rd file
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经有了这个创建我的第一个每日文件的超级基本脚本,但我对在那之后如何进行增量编号感到困惑。
#! /bin/bash
DATE=`date +%Y%m%d`
touch "$DATE.txt"
Run Code Online (Sandbox Code Playgroud) scripting ×10
bash ×6
grep ×2
command-line ×1
cron ×1
distros ×1
files ×1
for ×1
gui ×1
linux ×1
openssl ×1
performance ×1
permissions ×1
rhel ×1
sed ×1
shell-script ×1
ssh ×1