标签: scripting

grep -- 删除分隔符标记后的文本

我有一个文件,我需要在其中消除;每一行第一个之后的所有内容。

所以一个这样的文件:

sdfsdsdf;
fsdfsddf;sdfsd;
Run Code Online (Sandbox Code Playgroud)

会导致这样:

sdfsdsdf
fsdfsddf
Run Code Online (Sandbox Code Playgroud)

我已经调查过grepsed。我会很感激包含这些命令中的任何一个的答案。

command-line grep scripting sed

13
推荐指数
2
解决办法
3万
查看次数

每隔一周通过 cron 运行一个脚本

我已经对如何做到这一点进行了大量研究,我发现 cron 中没有直接的方法来运行工作,比如每隔一个星期四。

现在,我倾向于制作一个每周只运行一次的脚本,并且在它运行时会触摸一个“标志”文件,如果它运行并且文件已经存在,则删除该文件(而不是执行双周行动)。

我的问题是,是否有其他更优雅或更简单的方法来实现每隔一周自动运行一次 bash 操作脚本的目标?

谢谢!

scripting bash cron

13
推荐指数
2
解决办法
1万
查看次数

如何制作那些老式的 GUI(比如 debian/arch 安装程序)

我最近进行了很多安装,如果可能的话,我通常会选择从 Live CD 的 GRUB 菜单中进行文本安装。大多数安装程序看起来像这样:

在此处输入图片说明

我一直认为这些 GUI(如果您可以这样称呼它们的话)真的很棒而且很轻巧。看到很多应用程序/发行版都在使用它们,它一定是共享库还是什么?有没有办法制作这样的东西?

distros scripting gui

13
推荐指数
3
解决办法
2730
查看次数

替换文件时保持(或恢复)文件权限

我有一个命令,它接受一个文件作为参数,修改文件,然后将它写入第二个参数中指定的文件名。我会调用那个程序modifyfile

我希望它“就地”工作,所以我编写了一个 shell 脚本 (bash),将它修改为一个临时文件,然后将其移回:

TMP=`mktemp`
modifyfile "$original" "$TMP"
mv -v "$TMP" "$original"
Run Code Online (Sandbox Code Playgroud)

这具有破坏此文件权限的不幸副作用。该文件使用默认权限重新创建。

有没有办法告诉mv命令在不改变其权限的情况下覆盖目标?或者有没有办法从原始保存用户、组和权限并恢复它们?

scripting bash permissions files

13
推荐指数
3
解决办法
6342
查看次数

里面有命令的句子怎么续

例如,我一直试图在我的脚本文件中说“目前有 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)

你如何让命令在中间工作?我一直在尝试查看和复制示例,但它似乎对我的命令替换问题没有帮助。

scripting bash

13
推荐指数
3
解决办法
1317
查看次数

如何grep unicode?在 bash 脚本中

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)

linux grep scripting openssl

13
推荐指数
2
解决办法
2万
查看次数

“存储”远程 SSH 会话?

我正在尝试在脚本中执行这些操作。我必须在远程主机上运行一些命令。目前,我正在这样做:

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但我不确定它是否可以在脚本中使用。

performance scripting ssh

13
推荐指数
2
解决办法
2873
查看次数

使用 bash 脚本编辑文件的最佳方法是什么?

在 RHEL 5.8 上使用 /bin/bash 并且我想自动编辑文件。我需要脚本来搜索文件并替换文件中的一行。线路示例:

Other line
Current date 01121990
Other line
Run Code Online (Sandbox Code Playgroud)

搜索此行并将日期字符串替换为预定日期。我无法回显到新文件并输入我的日期,因为此文件将从特定于服务器的文件中复制。谢谢!

scripting bash rhel

12
推荐指数
1
解决办法
4万
查看次数

如何在 {}(花括号扩展)中获得 0 填充的数字?

我正在尝试编写一个简单的脚本来从主机列表中检索内存和交换使用情况。目前,我能够实现这一目标的唯一方法是编写 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 …

scripting bash for

12
推荐指数
4
解决办法
8334
查看次数

如何在 bash 中创建按顺序编号的文件名?

我需要一个脚本来创建一个文件,其中包含一个序列中的下一个文件。脚本的每次执行应该只创建一个文件,并且脚本可以在任何一天运行零次或多次。文件应以当前日期命名,%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 bash shell-script

12
推荐指数
2
解决办法
5万
查看次数

标签 统计

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