别名从终端打开不同目录中的多个文本文件

别名从终端打开不同目录中的多个文本文件

经过几个小时的搜索和尝试不同的 gedit 插件,我没能成功为 gedit 添加会话保护程序来打开 Ubuntu 14.04 中的一些文件(请参阅这里)。

因此,我正在尝试创建一个永久的 bash 别名,并进行编辑~/.bashrc以添加它。

别名是:

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c
      && cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

然后我使用. ~/.bashrc重新加载对别名所做的更改。但是这个别名只打开第一个文件(这里是 test1.c),如果我交换第 2 行和第 3 行,它会打开 test2.c。这意味着路径没有问题。相反,我得到的错误是在第二个,&&bash:意外标记‘&&’附近有语法错误。为什么会出现此错误?我应该使用什么别名来一次打开多个文件?

答案1

关于如何写这个别名:

别名不需要单独打开文件 -gedit可以采用多个文件。

alias a="gedit ~/Desktop/abc/test1.c ~/Desktop/xyz/test2.c"

这还将用 替换您的主目录路径~。如果它适用于其他用户,请使用~konstantinosubuntu而不是~

为了使命令独立于终端,以便关闭终端时它仍继续运行,您可以添加&在后台运行它,并nohup使其在终端关闭时不退出:

alias a="nohup gedit ~/Desktop/abc/test1.c ~/Desktop/xyz/test2.c &"


关于示例的语法:

的问题在于&&&&需要将 放在上一行的末尾。否则,行尾就是命令的末尾 - 目前没有问题 - 下一行的开头有一个“&&”,这在这个地方毫无意义。

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c &&
         cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

或者,可以将整个别名放在一行中。或者,非常类似,可以使用行尾带有 \ 的续行符。从逻辑上讲,这会将其写成两行,但执行时却是一行。

您在评论中指出,gedit在打开第二个文件之前需要关闭第一个文件,而您不希望出现这种情况。如果是第一个实例,则该命令在前台gedit file.txt运行。如果已经在运行,它会在该实例中打开一个新选项卡,然后退出。要使别名同时在 gedit 中打开两个文件,请使用 在后台运行第一个实例。这不能与 一起使用,需要将其删除:geditgedit&&&

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c &
         cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

(有趣的是,只有一个字符不同,但含义却有很大不同。)

如果您打算gedit通过使用cd命令以某种方式将多个当前工作目录与运行相关联,那么这将行不通。一个进程只有一个当前工作目录。它将是gedit此处的第一个实例。


在讨论了这些例子之后,为了更清楚,我认为你最好使用类似第一部分中的功能,gedit一次打开一个包含多个文件的文件。

相关内容