当用户在命令行apps
中键入并按Enter:我希望它立即将用户带到某个目录,例如/var/foo/bar
。
起初,我以为我可以使用一个符号链接来完成此操作,但是我意识到这是行不通的,因为它不是全局。
当我说"全局"一词时,我的意思是:无论用户当前使用什么目录:它始终将用户移至/var/foo/bar
目录。
我将如何做到这一点?
您可以为相应的cd
命令创建一个别名:
alias apps="cd /var/foo/bar"
有两种主要方法来实现。
1。使用外壳别名
输入您的外壳:
$ alias apps="cd ~/applications"
从现在开始,在此特定的外壳会话上,键入apps
并按Enter将运行cd
并将您带到applications
(~
是您的主目录)。
请注意,这里, apps
不是程序,只是别名,shell识别并重新插入的名称。
要使上述永久定义的别名,您应该将该行添加到 shell配置文件。这是一个位于已知路径的文件,每次打开新外壳时都可以运行。这些文件可能存在之一(~
是您的主目录):
~/.bashrc
~/.bash_profile
~/.profile
因此,如果您在底部添加alias
命令,则将在所有新终端上使用。
2。写一个新程序
编辑:有趣的是,这对您的情况不起作用。程序无法更改外壳的当前目录。不过,这仍然是如何创建程序的一个很好的摘要。将其用于其他东西
创建完成特定任务的新程序非常简单,但是需要一些习惯。我们可以以3个步骤进行操作。
1-在您的主目录中打开一个名为 apps
的文件,然后将其放入:
#!/bin/bash
cd ~/applications # or whatever directory you want
文件的第一行称为a hashbang ,它表示应使用bash
执行此程序,就像您的命令行一样。唯一的另一行是您的bash命令更改目录。
将其保存在~/apps
。
2-通过运行:
使文件可执行$ chmod +x ~/apps
3-最后,将此程序放入您的PATH
中。PATH
是包含程序的目录列表。您的PATH
中已经有一些目录:
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
要使您的程序可用于系统中的所有用户,请将其移至/usr/bin
:
$ sudo mv ~/apps /usr/bin/apps
如果您不能sudo
,您仍然可以通过将您控制的目录添加到PATH
。
$ mkdir ~/bin
$ PATH="$PATH:~/bin"
第二个命令将PATH
扩展到包括~/bin
。就像我为alias
解释的那样,您可以通过将其放入bash配置文件中永久性。
现在,将程序移至新的bin
目录:
$ mv ~/apps ~/bin/apps
您应该能够键入apps
,然后按Enter立即执行您的程序。