基本上,我想创建一组快速命令,以便我可以在终端中输入并让它执行以下操作:
cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/of/symlink
cd /new/path/of/symlink
我所在的公司软件存放在中央位置,并使用符号链接来解决使用 Subversion 存储库分支(或其他任何分支)时出现的问题,因为软件依赖特定路径运行。我的困境是,我往往需要定期(一天几次)在各个分支和主干之间来回切换。因此,我希望至少创建某种可以在终端中运行的脚本,并输入一个独特的命令示例:
./subchange trunk
或者
./subchange branch1
我不介意对每个需要切换到的文件夹进行上述内容的硬编码,或者为每个文件夹创建一个唯一的标识符,以使我的生活更轻松一些,但我不确定如何实际创建脚本以便我可以将其用作自定义命令,或者我需要使用哪种脚本才能在 Linux 中工作。所以现在任何建议/帮助对我来说都是有益的。
答案1
如果脚本是可执行的并且其父目录位于您的目录中$PATH
,则可以将其用作命令。例如,您可以使用您提到的命令创建一个 bash 脚本:
#!/bin/bash
cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/of/symlink
cd /new/path/of/symlink
然后,您可以将其另存为文件subchange
,并使用使其可执行chmod +x subchange
。我的系统上有一个脚本目录(例如/tech/scripts
),我将其添加到我的$PATH
。环境变量通常在、或类似文件$PATH
中设置。您可以通过执行以下操作添加目录:~/.profile
~/.bashrc
/etc/bashrc
export PATH=/tech/scripts:$PATH
如果您将其添加到启动文件中,则需要重新启动 shell 或将其作为源 (例如source ~/.bashrc
)。现在您可以subchange
在命令行上使用,它将执行这些命令。要向命令添加参数,您可以使用运算$1
符。在 bash 中,这代表第一个参数,因此如果我这样做,subchange trunk
那么$1
将是trunk
。然后您可以根据需要将其添加到脚本中:
#!/bin/bash
cd /path/to/folder/of/symlink
sudo rm -f symlink
sudo ln -s /new/path/$1/symlink
cd /new/path/$1/symlink
#!
文件顶部的部分称为舍邦(她动了……她动了……)。对于 unix 系统上的脚本,它会告诉系统通过哪个二进制文件运行以下命令。在这种情况下,我们指定是/bin/bash
因为我们希望将此文件作为 bash 命令执行,并且 bash 二进制文件位于 中/bin
。这可以指定另一种语言并指向其二进制文件。