【问题标题】:Creating a terminal command programmatically?以编程方式创建终端命令?
【发布时间】:2015-10-01 03:41:09
【问题描述】:

我希望这个问题没问题。基本上我想做的是创建一个小程序,使用 Ubuntu 终端,我可以调用它并从任何目录执行命令。举个简单的例子,像print Hello World 这样的东西会简单地将Hello World 打印出来。 关于如何做到这一点的任何建议?

#include <iostream>

int main(int argc, char* argv[])
{
    for (char letter : arv) {
        std::cout << letter;
    }
}

我认为这样的东西会起作用,只是一个非常简单的程序,但我怎样才能让它安装一个我可以在任何地方使用的命令呢?
我希望这是有道理的,如果我需要详细说明某些事情,请告诉我。
为了解释为什么这不是重复的,我会详细说明一下,我不是在问如何从程序中调用命令。部分回答是我可以将我的可执行文件移动到/usr/bin/ 目录,这很有帮助,但是我对如何做到这一点更加好奇,以便如果用户下载并使用我的程序,他们将不会不必将文件移动到/usr/bin/,他们只需下载并拥有他们的全局命令。

【问题讨论】:

  • 我想你误会了,我不想从程序中调用命令,我想从终端的命令行中调用它。就像你会打电话给 ls 或 gedit 之类的。
  • 然后只需将您的可执行文件放在路径中的某个位置(/usr/bin、/usr/local/bin)或修改用户的路径环境以在主目录中包含一些目录。
  • 好的,谢谢,我现在得到了那部分,但我怎么能“自动”做到这一点,这样如果用户使用我的程序,他们就不需要做任何事情?

标签: c++ linux ubuntu c++11 terminal


【解决方案1】:

命令只是环境变量PATH指定的目录之一中的程序。

运行echo $PATH 以查看目录(以冒号分隔)。

用户只需将程序复制到这些目录中的任何一个即可“安装”您的程序。按照惯例,/usr/local/bin 用于安装在包管理器之外的程序,但任何一个都可以。他们还可以将其复制到一个新目录并将该目录添加到他们的PATH

如果您希望它“自动”发生,那么您需要让用户运行一个为他们执行此操作的不同程序。

【讨论】:

  • 非常感谢,这就是我要找的。如果您不介意我要求您继续,有人会如何将目录添加到他们的PATH?我知道如何在 Windows 中做到这一点,但我对 Linux/Ubuntu 不太确定。谢谢!
  • “命令只是环境变量 PATH 指定的目录之一中的程序。”并且设置了可执行位:如果没有设置该位(使用chmod +x command-to-be-given-execute-permissions),则它是否在PATH 中并不重要。
【解决方案2】:

你需要使用别名命令 http://www.hostingadvice.com/how-to/set-command-aliases-linuxubuntudebian/ 或将您的脚本/bin 移动到 /bin/

【讨论】:

  • 如何更直观地执行此操作?就像你安装 maven 的时候一样,你可以打电话给mvn。我想要它,所以如果用户要使用我的程序,他们将能够调用一个简单的命令来使用它。如示例中的print
  • /bin 用于核心系统可执行文件。甚至包管理器通常都不会触及它。
  • @PSkocik 是/usr/bin 还是/usr/local/bin 首选?
  • /usr/local/bin 是(对于您想与其他用户共享的可执行文件,否则只需将其放在 ~ 下,例如 ~/.bin.~/.local/bin/ 并确保您的 $PATH 中有它)。 /usr/bin 如果是打包程序。
猜你喜欢
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 2011-07-24
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2019-07-29
相关资源
最近更新 更多