我的机器上有许多文件夹,其中许多文件夹中又包含更多文件夹,这些文件夹中又包含更多文件夹,等等...现在,当我每天执行某些cd
操作(作为备份过程的一部分)时,即使使用自动更正功能cp
,输入文件或位置的所有文件路径也会变得相当烦人。TAB
因此,我认为真正有用的是,如果我可以创建一个别名,例如命令的别名,而不是文件路径的别名。这可能吗?
以下是我希望它如何工作的一些示例:
我希望能够分配
~/Documents/SectionA/Sub-folder65/SectionF-2
给等于一个别名,以便pandaPictures
我可以使用它来做以下事情:cp pandaPictures/pic1.png ~/Pictures cd pandaPictures cd pandaPicture/Specials
TAB当文件路径包含这些文件路径别名时,如果自动完成功能能够与文件路径一起工作,那就太好了。
我还希望能够分配
PandaImages/2016/Sector7
一个别名,以便safePandaImages
我可以使用它来做以下事情:cp ~/Documents/Images/safePandaImages/panda.jpg ~/Pictures cd ~/Pictures/Photos/Images/Wallpaper/safePandaImages
在我上面给出的例子中,如果无法或非常不切实际,第二部分就不是绝对必要的(别名不仅在开头,而且在中间和结尾)。但如果可以,我不介意它看起来不像上面那样(例如,如果你必须在[]
别名周围加上 s 或其他东西,以便清楚地表明它不仅仅是一个常规文件路径)。
我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。
答案1
坦白地说,这是变量的工作:
pandaPictures=~/Documents/SectionA/Sub-folder65/SectionF-2
cp "$pandaPictures"/pic1.png ~/Pictures
cd "$pandaPictures"
cd "$pandaPictures"/Specials
或者:
safePandaImages=PandaImages/2016/Sector7
cp ~/Documents/Images/"$safePandaImages"/panda.jpg ~/Pictures
cd ~/Pictures/Photos/Images/Wallpaper/"$safePandaImages"
Bash 还不够智能,无法完成变量的内容,但 zsh 可以:
$ foo=/usr
$ cp $foo/ # press Tab
bin/ include/ lib/ lib32/ lib64@ local/ sbin@ share/ src/
使用 bash,您可以首先让它扩展每个变量、别名、命令替换等,CtrlAltE然后使用制表符补全:
$ foo=/usr
$ cp $foo # press Ctrl-Alt-E
$ cp /usr
尽管如此,如果你经常这样做,编写脚本。编写一个脚本。将其添加到 crontab。忘掉它。
答案2
变量可能是最好的解决方案,但您也可以创建符号链接来实现相同的目的,至少对于第一种情况而言。这样做的好处是可以轻松实现自动完成。
ln -s ~/Documents/SectionA/Sub-folder65/SectionF-2 ~/pandaPictures
cp ~/pandaPictures/pic1.png ~/Pictures
cd ~/pandaPictures
cd ~/pandaPictures/Specials