我们有两个 zip 文件,想对它们进行比较。
我们还对计算它们与文件大小之间的百分比差异感兴趣。有没有一个工具可以快速做到这一点?
我正在尝试通过这样的登录命令检查用户密码:
# echo "name\npassword" | login
Run Code Online (Sandbox Code Playgroud)
但命令结束时没有写任何东西。echo由于 SIGPIPE 而结束。为什么login在要求名称和密码之前停止?
当我对passwd命令执行相同操作时,它可以工作:
# echo "password\npassword" | passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Run Code Online (Sandbox Code Playgroud)
我有 Ubuntu 12.04 和 Bash 4.2.25
IT 专业人员最喜欢使用的脚本语言是什么?为什么?我看到开发人员主要使用 Javascript,而 Windows 管理员使用旧版 VBScript 和 Powershell,UNIX/Linux 管理员使用 bash/shell。是否有适用于所有平台的全球通用脚本语言?
我将主机名列表存储在名为 ssh_hosts.txt 的文件中。在 shell 脚本中,我循环访问 ssh_hosts.txt 中的主机名,并通过 SSH 在指定主机上执行命令。shell 脚本如下所示。
问题是脚本在处理第一个主机后退出。但是,如果我除了通过 ssh 在指定主机上执行命令之外执行其他操作,脚本将运行完成。
在下面的示例中,我注释掉了对 ssh 的调用,并将其替换为当前主机名的简单回显。这将运行直至完成。
我从 Windows 7 上的以下 Cygwin 版本下运行的 bash shell 执行此脚本:
$ uname -a
CYGWIN_NT-6.1 myHostname 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
Run Code Online (Sandbox Code Playgroud)
涉及到的SSH版本有:
$ ssh -V
OpenSSH_6.0p1, OpenSSL 1.0.1c 10 May 2012
$ ssh myUsername@remoteHost 'ssh -V'
myUsername@remoteHost password:
OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016
Run Code Online (Sandbox Code Playgroud)
这是 shell 脚本:
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Usage: $(basename $0) <user name>"
exit 1
fi
USER="$1" …Run Code Online (Sandbox Code Playgroud) 我遇到一个奇怪的问题,可能与硬件初始化有关。我正在开发一个基于 Java 的自动数据采集系统,该系统在带有 Ubuntu 16.04 的 SBC 上运行。数据采集程序目前是通过 cron 启动的,尽管我打算切换到 systemd。
如果我重新启动系统,它就会启动并运行良好。但是,如果断电并冷启动(这是正常方式),程序将崩溃并出现错误free(): corrupted unsorted chunks。如果我再次启动它,它似乎运行良好。我需要找出原因,希望能找出原因,但这可能需要一些时间,同时系统需要进一步测试,我需要一种解决方法,可以在崩溃时重新启动它。仅添加延迟并没有帮助。
我想做的是重新启动 Java 进程或从 bash 包装脚本重新启动系统,但前提是它崩溃了。如果它以零退出代码退出(或者,理想情况下,以预定的允许退出代码集中的任何代码退出),则不应重新启动它,并且脚本也应退出。
我写了一个小脚本来旋转目录的所有奇数图片,但我无法让它工作。这是代码。
#!/bin/bash
count=1
for picture in `ls -v *.png`
do
if ["$picture" == "picture_$count.png"]
then
mogrify -rotate 90 "$picture"
count=$(($count+2))
fi
done
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我试图在常规语法中的以下命令中使用反斜杠:
find /path/folder-* -type f -iname "file*" -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Jenkins 管道上构建此命令时,会出现有关此语法的错误。甚至在我执行此命令之前,Jenkins 表单字段上就会出现红色语法警告,提示意外字符:“\”。
我可以做什么来替换或修复这个反斜杠的错误?
Groovy 命令:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Run Code Online (Sandbox Code Playgroud)
注意:rm -f目前我对所有情况都有。将全部替换rm …
自从搜索这个以来,我已经看到了这个答案,但最初我写了这个脚本:
for i in `seq 1 $1`;
do cd ../;
done;
Run Code Online (Sandbox Code Playgroud)
它不会更改目录。这是为什么,运行为
./updir.sh 5
Run Code Online (Sandbox Code Playgroud) 所以我编写了一个简单的 bash 脚本来在每次打开新的终端窗口时运行一个名为“cmatrix”的程序。
我已经更改了文件的权限,因此每个人都可以接收它,并验证它在调用时是否会按照我想要的方式运行,但现在我不知道将脚本放在哪里,以便它在每个新的 bash 上运行终端启动。我知道如果我希望它在启动时运行,我会将其放置在 usr/local/bin 中,但我只希望它在打开新的终端窗口时运行。
非常非常简单:
cmatrix -bs -C cyan
Run Code Online (Sandbox Code Playgroud)
感谢任何和所有的帮助!
谢谢
我需要创建一个 bash 脚本来打开一个新的屏幕会话,然后在该会话中运行一个程序。有可能这样做吗?任何帮助表示赞赏。
bash-scripting ×10
bash ×7
linux ×4
shell-script ×2
terminal ×2
cygwin ×1
find ×1
groovy ×1
java ×1
jenkins ×1
linux-mint ×1
mac ×1
openssh ×1
powershell ×1
script ×1
shell ×1
ssh ×1
ubuntu ×1