我正在做一些经常在系统文件树中彼此远离的两个目录之间进行更改的事情。
无论如何,我是否可以为每个命令分配某种短名称以与命令一起使用,cd
以便我可以键入cd directoryA
,cd directoryB
例如,而不是重复键入cd C:/A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt
?
答案1
为了确切地两个目录,使用cd -
$ cd /tmp
$ cd /var/tmp
$ cd -
/tmp
$ cd -
/var/tmp
$ cd -
/tmp
从bash(1)
:
的一个论点
-
被转换为$OLDPWD
在尝试更改目录之前。
答案2
无论如何我可以为每个人分配某种简称
当然可以,使用alias
命令:
alias directoryA='cd /path/to/directoryA'
然后用作命令directoryA
的别名cd
。真的就是这么简单;)
答案3
我会使用 shell 变量:
da=/really/long/path/to/directory/a
db=/other/really/long/path/to/directory/b
cd $da
cd $db
此方法的优点是您可以在任何命令中使用 $da 和 $db 代替文件路径,例如:
cp $da/file1 $db/file2
答案4
您可以通过创建一个目录(或任何文件)来指定缩写名称符号链接到它。符号是一个目录条目,实际上不包含任何数据,但指向可以找到实际数据的另一个路径。对目录项进行操作(例如创建、重命名、删除)可操作符号链接,而对内容进行操作(例如读取、写入cd
和ls
目录等)则对链接的目标进行操作。例如,创建一个符号链接ln
命令:
ln -s /A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt ~/hurt
那么cd ~/hurt
它基本上等同于/A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt
。它基本上等同于,因为 shell 会记住并显示~/hurt
为当前工作目录;如果希望 shell 忘记符号链接,请使用cd -P ~/hurt
。
如果您经常更改特定目录的子目录,则可以使用CDPATH
多变的。当您cd
使用相对路径(即不以 开头的参数/
,无论是显式地还是通过缩写,例如~
或 其值以 开头的变量/
)运行时,shell 会尝试依次更改为 的每个元素的子目录,CDPATH
直到它找到一个存在的。如果您使用CDPATH
,强烈建议您将.
(当前目录)放在前面,否则无辜的外观cd subdir
可能会让您跳转到完全不相关的位置。
CDPATH=.:/A/Really/Long/File/Path/Name/Makes/My
cd Fingers/Hurt
您还可以在 shell 内将缩写定义为变量。$
在变量名前面使用以使用其值。请注意,如果变量的值包含空格等特殊字符,则在使用它时需要使用双引号(除非您使用 zsh 或 Fish 作为 shell)。
hurt=/A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt
cd $hurt
spaced='/A/Really Long/File Path Name/Makes My Fingers/Hurt'
cd "$spaced"
在bash中该cdable_vars
选项使手指更容易完成此操作。
如果路径中的组件很长,请使用补全。如果你的Tab钥匙没有磨损,那么你就做错了。为了获得最佳结果,请避免使用许多开头有几个共同字母的文件名,并避免以难以键入的字符(例如大写字母)开始文件名。