标签: scripting

bash 脚本运行的时间(天/分钟/秒)

事实上,当我想要估计脚本完成所需的时间时。

startdate=$date

stuffs

enddate=$date
Run Code Online (Sandbox Code Playgroud)

我希望得到这两个日期之间的差异,通常脚本完成时间不到 1 周。所以我需要它的天数和分钟数。

linux scripting bash date time

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

测试数组中是否存在重复值

我正在尝试找到一种简单的方法来测试数组中的重复值。能够识别具有重复项的特定行固然很好,但并非完全必要,但重要的一点是能够看到存在重复项。

我有一个数组,$key_array其中包含一些数字:

# echo ${key_array[@]}
1 2 3 4 3 3
Run Code Online (Sandbox Code Playgroud)

该数组可以有任意数量的数字,其中一些数字可能与其他数字重复。它们只是整数。(以 a 开头的数字0,例如03,根本不应该进入数组,但万一发生这种情况,捕获303作为彼此的重复项比将它们视为不同的数字更好。)

我需要确定这些数字是否重复。我想如果没有别的办法的话,这可以通过退出代码来完成。我所追求的是这样的:

if $(some command); then
 echo "Array contains duplicates."
 exit 1
fi
$(commands to run after duplicate check)
Run Code Online (Sandbox Code Playgroud)

最后的想法是,如果存在重复项,脚本会通知用户并退出(对于识别重复项在哪里并不是非常重要,只需告诉用户检查重复项就足够了),或者如果没有任何重复项,它继续运行并运行许多其他东西。

我怎样才能最好地完成这个任务?

shell scripting bash

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

搜索一个文件以查看它是否包含另一文件的信息

我有两个文件。第一个是unip.txt,第二个是ipex.txt,每个文件都包含 IP 地址。

unip.txt:

49.235.113.205
50.115.166.136
51.15.70.104
51.15.87.74
51.15.134.103
146.148.13.9
148.70.23.131
148.72.212.161
148.216.29.46
149.56.141.193
Run Code Online (Sandbox Code Playgroud)

ipex.txt:

51.15.134.103
148.70.23.131
151.141.0.0
97.89.32.238
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何基本上搜索该unip.txt文件以查看它是否包含该ipex.txt文件中的任何 IP。我想这将是一个循环来搜索每一行,但我不知道该怎么做。

scripting files

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

在 ssh 会话中停止命令而不退出 ssh

我\xc2\xa0有一个\xc2\xa0ssh会话,并且正在运行\xc2\xa0脚本。\xc2\xa0\n我\xc2\xa0想要终止脚本而不退出ssh会话。\xc2\xa0\n如果\xc2 \xa0I\xc2\xa0 在本地 PC 中运行 \xc2\xa0 脚本,I\xc2\xa0press Ctrl+ C\nand\xc2\xa0\xc2\xa0 脚本停止,而如果 I\xc2\xa0press Ctrl+C在远程会话中我关闭 ssh 会话本身(以及本例中的脚本)。\xc2\xa0\n如何在不中断 ssh 连接的情况下停止远程 shell 中的脚本?

\n

我使用 Windows 中的 Git Bash 通过常用命令\nin a\xc2\xa0 标准 Ubuntu 发行版进行连接。ssh user@ip

\n

在我的 Windows 客户端中,.ssh/config如下所示:

\n
Host 192.168.XXX.YYY\n  HostName 192.168.XXX.YYY\n  User auser\n  ForwardAgent yes\n\nHost 192.168.XXX.ZZZ\n  HostName 192.168.XXX.ZZZ\n  User auser\n
Run Code Online (Sandbox Code Playgroud)\n

它们与我正在使用的远程服务器无关。

\n

scripting ssh git

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

Unix 删除超过 30 天的文件和文件夹,但跳过一个特定目录以及嵌套在其中的文件/文件夹

我正在尝试找到一种方法来删除特定路径中超过 30 天的所有文件和目录。但在该路径中有一个我不想删除或修改的特定目录。我一直在阅读 -prune 但似乎无法让它发挥作用。到目前为止我尝试过的命令是:find "<path to directory" -prune -o -name "<name of excluded directory" -type f -mtime +30 -exec rm {} +

scripting

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

sed 基于 2 个单词,然后用变量替换整行

我有一个txt文件,看起来像这样,

1:Ana:apple:08:00:wait
1:Joe:banana:08:30:wait
1:Oscar:orange:08:45:ready
1:Monica:apple:08:50:ready
1:Mark::orange:ready
Run Code Online (Sandbox Code Playgroud)

我必须找到只包含两个单词“banana”和“wait”的第一行,然后用$myvar替换整行

到目前为止我已经尝试过这段代码,但我认为我在同时匹配 2 个单词时遇到一些问题。

sed -i "0,/banana.wait/c\$myvar" myfile
Run Code Online (Sandbox Code Playgroud)

感谢任何可以帮助我的人

linux scripting bash sed pattern-matching

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

AWK 从文本文件读取路径

我有一个名为path_resume.txt的文件,其中包含其他文件的一些路径。

里面path_resume.txt

./a2111oi/sky130_fd_sc_hd__a2111oi_0.txt
./a2111oi/sky130_fd_sc_hd__a2111oi_2.txt
./a2111oi/sky130_fd_sc_hd__a2111oi_4.txt 
Run Code Online (Sandbox Code Playgroud)

每个路径都指向另一个具有相同结构的文本文件,如下所示:

HEAD
INFO
BEGIN sky130_fd_sc_hd__a2111oi_0
...
...
END BEGIN
END INFO
END HEAD
Run Code Online (Sandbox Code Playgroud)

我试图从 path_resume.txt 读取每个 .txt 文件,复制BEGINEND BEGIN之间的所有行,并增量保存到另一个名为 output.txt 的文件:

BEGIN sky130_fd_sc_hd__a2111oi_0
...
...
END BEGIN
BEGIN sky130_fd_sc_hd__a2111oi_2
...
...
END BEGIN
BEGIN sky130_fd_sc_hd__a2111oi_4
...
...
END BEGIN
Run Code Online (Sandbox Code Playgroud)

当我跑步时:

awk '{while((getline a < $0)> 0) print a}' path_resume.txt
Run Code Online (Sandbox Code Playgroud)

我可以正确读取 path_resume.txt 中的每个文件,但无法删除不需要的行。

当我跑步时:

awk '/BEGIN/{flag=1}/END BEGIN/{flag=0}flag' ./a2111oi/sky130_fd_sc_hd__a2111oi_0.txt
 >> output.txt
Run Code Online (Sandbox Code Playgroud)

我可以删除不需要的行,但是我必须手动传递文件的路径。我不知道如何合并这两个命令来实现我的目标。我很感激任何帮助。

linux scripting awk text-processing

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

获取多个子脚本时,由于脚本错误而导致 SSH 会话终止

我在服务器上遇到 SSH 问题。运行单个脚本(源 s01.sh 等)工作正常,并在控制台中显示错误。但是,当使用主脚本获取这些脚本时,SSH 连接会在遇到错误时意外终止。主脚本master.sh如下:

#!/bin/bash
set -e

source s01.sh
source s02.sh
Rscript s03.R
source s04.sh
Run Code Online (Sandbox Code Playgroud)

我在交互式 SSH 会话中使用以下命令获取主脚本

source master.sh
Run Code Online (Sandbox Code Playgroud)

使用 set -e,我希望脚本在出现错误时停止,但相反,它导致整个 SSH 会话中断。这种情况仅发生在组合脚本中,而不会发生在单独采购中。为什么会发生这种情况?如何防止 SSH 会话因脚本错误而关闭?

我知道这可能涉及 SSH 服务器配置,但我不确定要调查哪些设置。

scripting bash ssh error-handling r

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

“sudo chown -R hadoop:hadoop hadoop”是做什么的?

我看到以下脚本,发布在网上,是在 hadoop 安装过程中使用的。

  sudo tar xzf hadoop-0.20.2.tar.gz
  sudo mv hadoop-0.20.2 hadoop
  sudo chown -R hadoop:hadoop hadoop
Run Code Online (Sandbox Code Playgroud)

我并不是很明白。有什么作用

    sudo chown -R hadoop:hadoop hadoop
Run Code Online (Sandbox Code Playgroud)

在这里做什么?感谢您的解释。

linux scripting shell-script

1
推荐指数
1
解决办法
7744
查看次数

tail -f 等效

我看到tail命令延迟了几秒钟。我发现它的原因与 nfs 服务有关。我正在使用 Arch linux,但还没有找到如何禁用所有这些服务。

我已经搜索过并有一些迹象表明其他工具不会受到影响,例如cat什么可以给出等效的结果tail -f

scripting tail

1
推荐指数
1
解决办法
975
查看次数