我正在寻找可以输入的内容来缩短长路径。此路径恰好指向一个单独的硬盘驱动器,我希望这会有所帮助。
背景
- 我们的公司为我们提供了包含系统驱动器和更大、更快的工作驱动器的 Ubuntu 机器。
- 公司政策规定,所有软件开发(即编译可执行代码,但不是所有工作)都必须在特定文件夹中完成。我们的防病毒软件已配置为不阻止或隔离特定目录结构内更改的可执行文件。不幸的是(我不确定我是否遵循了这部分的细节),为了防止恶意软件感染这些白名单目录,它们是多层级的。换句话说,所有开发工作都必须在任意长的路径的末尾完成。
- 我已成功将大硬盘安装在策略指定的路径上。换句话说,这条长而任意的路径指向我所称的驱动器根目录(在 DOS 中)。
我想要的是
- 能够打字
cd foo
并让操作系统执行cd /my/company/arbitrary/path
- 能够使用其他 Linux 命令复制/访问文件并获得类似的替换。
- 理想情况下,尽管这不是必需的,但我希望命令提示符显示路径的缩短形式。
我的问题
- 如果我使用“符号链接”或“软链接”让操作系统自动执行此替换,这能满足我的需求吗?还是它存在一些限制,可能会影响我的工作流程?(提醒:我的所有工作并非都在此驱动器上完成。)
- 有没有更聪明的方法可以做到这一点?我可以利用路径实际上“指向”物理设备的挂载点(或“根”)这一事实吗?
- 当我在工作区内时,我可以执行其他技巧来缩短命令提示符以显示当前工作目录的用户友好的较短版本吗?
答案1
处理此问题的通常方法是:
在本地目录中创建一个符号链接
ln -s /very/long/path/to/some/folder/hidden/deep/in/the/file/system ~/foo
现在您可以
cd foo
从本地目录执行此操作,然后转到/very/long/path/to/some/folder/hidden/deep/in/the/file/system
。根据系统的设置方式,您可能必须使用cd -P foo
进行设置,以识别您是在/very/long/path/to/some/folder/hidden/deep.in/the/file/system
而不是 在~/foo
。举例说明:$ ls -l foo lrwxrwxrwx 1 terdon terdon 61 Jan 7 14:46 foo -> /very/long/path/to/some/folder/hidden/deep/in/the/file/system $ cd foo $ pwd /home/terdon/foo
现在,做同样的事情,但使用
cd -P
:$ cd -P foo $ pwd /very/long/path/to/some/folder/hidden/deep/in/the/file/system
为命令创建别名。打开 shell 的配置文件(
~/.bashrc
如果使用 则使用bash
)并添加以下行:alias cdfoo='cd /very/long/path/to/some/folder/hidden/deep.in/the/file/system'
然后,保存文件,打开一个新终端,并运行
cdfoo
。这将直接带你到/very/long/path/to/some/folder/hidden/deep.in/the/file/system
。将名称存储在变量中。打开文件
~/.profile
(或者~/.bash_profile
如果该文件已经存在并且您正在使用bash
)并添加以下行:foo="/very/long/path/to/some/folder/hidden/deep/in/the/file/system"
现在,您可以注销并重新登录,或者运行
. ~/.profile
以读取新的变量定义。从现在开始,您将能够执行cd $foo
并移动到目标目录。请注意,如果您的路径包含空格或任何其他空格或通配符,则应该引用变量:cd "$foo"
。
在上述三个选项中,第一个(符号链接)和第三个(变量)可让您执行任何您想执行的操作。使用符号链接,您可以执行cd foo
其他cp bar/file foo/
所有操作。当您进入提示时,提示中将显示的内容cd
取决于提示的设置方式。
答案2
foo="/my/company/arbitrary/path"
然后您可以cd "$foo"
等等。如果路径中没有空格,您可以省略引号以方便输入。