【问题标题】:command line pipe syntax on terminal终端上的命令行管道语法
【发布时间】:2016-07-11 07:13:23
【问题描述】:

我正在使用子进程在 nodejs 应用程序中执行以下命令。

  1. which zip 获取 zip 可执行文件的路径
  2. path-to-zip + " -r abc.zip " + path + " && du -hs abc.zip" 使用 & 符号 &&

我们如何将这些命令链接在一起以形成一个命令,以便 path-to-zip 被 1) which zip 替换。

我正在使用which zip 来确保路径正确,如果路径/usr/bin/zip 相同并且在linux 和mac os 中相同,请告诉我它是否没用,如果是这样,那么我'最好在我的应用程序中硬编码路径,请告知。

【问题讨论】:

    标签: linux shell command-line terminal pipe


    【解决方案1】:

    这取决于你的外壳。

    Bash 是 Linux 发行版中最常见的 shell。

    对于Bash,有两种常用的方法称为命令替换来实现这一点。

    1. `which zip` + whatever you want(`意思是`,我输入`由于StackOverflow的语法政策。)

    2. $(which zip) + whatever you want

    命令替换手册

    https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html

    【讨论】:

    • 好吧,/usr/bin/zip 在历史上是否一直在同一条路径下?
    • @user2727195:答案是肯定的,which的结果会根据你的环境路径来决定。
    • 所以理解正确,这个硬编码的路径命令/usr/bin/zip -r abc.zip folder && du -hs abc.zip在所有系统中都可以工作,我可以选择不使用命令替换,对吧?
    • 不,在您的情况下,which 将根据您的路径找到zip,并获得/usr/bin/zip。但是,您不能保证所有系统的zip 命令都在同一个目录中。例如在 FreeBSD 系统中,zip 位于/usr/local/bin/zip,这种情况下,你应该写$(which zip) 来部署这个脚本到不同的系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2021-05-10
    • 2013-09-25
    • 2019-12-22
    相关资源
    最近更新 更多