标签: command-line

在bash循环中执行时找到"未找到命令"

我正在尝试编写一个bash脚本来生成文件列表.我想我只是在循环中调用'find'.不幸的是,它在循环中产生了"find:command not found"错误,我不知道为什么.

为了简短起见,这个缩减版本复制了这个问题,而没有让我们陷入无关紧要的代码中.

#!/bin/bash
IFSprev=$IFS
IFS=$'|'
PATHS='openvpn|vms'
SOURCE='/mnt/store/'

#find "${SOURCE}vms" -type f
for PATH in ${PATHS}
do
   echo -----------------------------------
   find "${SOURCE}${PATH}" -type f
done
IFS=$IFSprev
Run Code Online (Sandbox Code Playgroud)

在进行故障排除时,我添加了第一个'find'命令...添加后,它随后在循环中工作.如果我再次注释掉它,循环中的'find'将恢复抛出错误.

鉴于我要将循环输出重定向到文件,我可以使用额外的'find'命令,甚至只需重定向到null.但是,我是一个好奇的家伙,我真的想找到问题所在.

感谢您的任何意见.

bash command-line for-loop find

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

从markdown转换为html时,包含带有pandoc的javascript文件

我正在使用pandoc将markdown文件转换为独立的html文件。我有包含在-c命令行选项中的css文件。我想对javascript文件做同样的事情,但是我没有找到包含类似于该-c选项的脚本文件的选项。

有这样的选择吗?如果没有,最有效的方法是什么?

html javascript command-line include pandoc

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

在shell脚本中使用许多相同类型的cli参数?

在shell脚本中,可能是bash,我们如何才能将许多相同类型的参数添加到内部数组中?一个例子是这样的:

./combine -f file1 -f file2 -f file3 -o output_file
Run Code Online (Sandbox Code Playgroud)

我知道这个简单的问题可以通过cat和重定向单独解决.但我感兴趣的是如何让我们说bash我们可以把所有三个-f参数都放在一个数组中,这样我们可以用它们做些什么呢?

由于要求的性质,我们需要某种形式的标志,因为会有其他参数.

在像python这样的语言中,它非常简单,尤其是像docopt这样的库.您可以按预期指定一个数组,然后就完成了.

非常感谢

bash shell command-line command-line-arguments

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

将多个命令的输出重定向到文件

我在Linux Shell中同时运行多个命令,例如

echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"
Run Code Online (Sandbox Code Playgroud)

我想将所有输出重定向到file1。我知道我可以>file1在每个单独的命令之后添加,但这似乎很庞大。我怎样才能做到这一点?

bash shell command-line command output

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

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

获取Ansible-Playbook运行信息

如果一切正常,或者某些任务进行了更改,则ansible-playbook运行将返回0。

我正在寻找一种方法,以便在上次运行期间发生更改时在命令行中获取信息。

有人知道这种方法吗?

背景是我想通过Jenkins管道监视我的服务器,并在发生更改时得到警报。

谢谢你的帮助。

command-line return jenkins ansible

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

Mac,列出我的设备所连接的USB端口名称

我目前需要弄清楚我的USB设备所连接的端口名称是什么.更具体地说,我需要知道如何处理以下内容在此输入图像描述

我正在使用Mac,我已经运行了命令行system_profiler SPUSBDataType,它给了我以下内容.我感兴趣的设备是第二个:CP2102 USB到UART桥接控制器.但是我如何弄清楚该设备连接的串口是什么?我的第一张照片需要它.

USB:

    USB 3.0 Bus:

      Host Controller Driver: AppleUSBXHCIWPT
      PCI Device ID: 0x9cb1 
      PCI Revision ID: 0x0003 
      PCI Vendor ID: 0x8086 

        Bluetooth USB Host Controller:

          Product ID: 0x8290
          Vendor ID: 0x05ac  (Apple Inc.)
          Version: 1.46
          Speed: Up to 12 Mb/sec
          Manufacturer: Broadcom Corp.
          Location ID: 0x14300000 / 2
          Current Available (mA): 500
          Current Required (mA): 0
          Extra Operating Current (mA): 0
          Built-In: Yes

        CP2102 USB to UART Bridge Controller:

          Product ID: 0xea60 …
Run Code Online (Sandbox Code Playgroud)

macos usb command-line ls

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

如何在包含来自vim或命令行的某个字符串的任何行之前插入行?

我有一个包含大量数据的文件,例如:

something_id: someId
something_version: someVersion
something_log: someLog
Run Code Online (Sandbox Code Playgroud)

我想在包含something_log哪个行之前添加一行文本something_test: example1

我该怎么做?任何帮助,将不胜感激!

vim command-line grep sed

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

在命令行中将BASH参数传递给gawk

我想创建一个简单的gawk脚本来提取某个文件的第n列.我希望在命令行输入文件的名称n的值.我用这个脚本制作可执行文件chmod +x.

因此,要从文件foo中提取第三列,我将输入:

 awkextract foo 3 
Run Code Online (Sandbox Code Playgroud)

我对脚本的尝试awkextract是:

 #!/opt/local/bin/gawk -v k=$2 -f 
 {print $k}
Run Code Online (Sandbox Code Playgroud)

但是无意义的结果表明这不起作用.我如何解决它?

PS.我知道我可以通过cut命令来做到这一点,我只是在尝试......

bash awk command-line gawk

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

杀死由Bash脚本启动的所有进程

我有许多bash脚本执行很多类似的任务,他们使用一些外部二进制程序.问题是二进制程序通常不会像它们应该那样终止.由于我的脚本运行了数千次,因此很快发生这些进程的许多空闲/接近死亡的实例正在累积.我无法修复这些程序,因此我需要确保我的bash脚本正在终止它们.

SE中有一些主题已经处理了终止bash脚本过程的任务.我已经应用并测试了那里写的内容,并且在某种程度上它起作用了.但它对我的情况不起作用,我不明白为什么,因此我开了一个新问题.

我的脚本有一个层次结构,这里以简化的方式显示:脚本A调用脚本B,脚本B并行调用脚本C的多个实例以使用所有CPU.例如,脚本B并行运行脚本C的5个实例,当脚本C的一个实例完成时,它启动一个新的脚本C,总共运行数千个脚本C.脚本C调用几个不能很好地终止的外部二进制文件/命令.它们在后台并行并相互通信.

但是,我的脚本C能够检测外部命令何时完成其工作,即使它们尚未终止,然后我的bash脚本退出.

为了在完成bash脚本期间终止所有外部程序,我添加了一个退出陷阱:

# Exit cleanup
cleanup_exit() {
    # Running the termination in an own process group to prevent it from preliminary termination. Since it will run in the background it will not cause any delays
    setsid nohup bash -c "
        touch /tmp/trace_1  # To see if this code was really executed to this point

        # Trapping signals to prevent that this function is terminated preliminary
        trap '' SIGINT SIGQUIT SIGTERM SIGHUP ERR
        touch /tmp/trace_2  # To see …
Run Code Online (Sandbox Code Playgroud)

linux bash shell command-line

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