![别名从终端打开不同目录中的多个文本文件](https://linux22.com/image/860212/%E5%88%AB%E5%90%8D%E4%BB%8E%E7%BB%88%E7%AB%AF%E6%89%93%E5%BC%80%E4%B8%8D%E5%90%8C%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
经过几个小时的搜索和尝试不同的 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 中打开两个文件,请使用 在后台运行第一个实例。这不能与 一起使用,需要将其删除:gedit
gedit
&
&&
alias a="
cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c &
cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"
(有趣的是,只有一个字符不同,但含义却有很大不同。)
如果您打算gedit
通过使用cd
命令以某种方式将多个当前工作目录与运行相关联,那么这将行不通。一个进程只有一个当前工作目录。它将是gedit
此处的第一个实例。
在讨论了这些例子之后,为了更清楚,我认为你最好使用类似第一部分中的功能,gedit
一次打开一个包含多个文件的文件。