为桌面目录创建别名

为桌面目录创建别名

如果我输入cd Desktop,无论终端当前在哪个文件夹中打开,我都希望它导航到/home/bob-ubuntu/Desktop

在我的.bashrc文件中,底部有以下几行:

alias desktop='/home/bob-ubuntu/Desktop'

alias Desktop='/home/bob-ubuntu/Desktop'

然后我获取它,但是当我输入时cd Desktop还是cd desktop出现相同的错误?

答案1

alias desktop='/home/bob-ubuntu/Desktop'
cd desktop

别名是命令名称。命令的参数cd不是命令名称。在此上下文中不使用别名。

如果您只输入desktop,这将调用别名。但默认情况下你会得到一个错误

bash: /home/bob-ubuntu/Desktop: Is a directory

将行添加shopt -s autocd到您的目录中~/.bashrc,以便在命令位置键入目录名称来执行cd该目录。这样,您可以~/Desktop通过仅键入~/Desktop(而不是cd ~/Desktop)或使用别名 来更改目录desktop

或者,为有效的命令定义别名:

alias desktop='cd /home/bob-ubuntu/Desktop'

答案2

有很多方法:

  • 您可以为它创建一个变量$desktop和/或$D作为它的快捷方式。
  • 你可以alias desktop='cd /home/bob-ubuntu/Desktop'
  • 您可以使用$USER/Desktop
  • 你可以使用$XDG_DESKTOP_DIR如果XDG用户目录已设置。
  • 您可以添加到命令的环境变量/home/bob-ubuntuCDPATHcd

但你最好只使用:

cd ~/Desktop

蒂尔达不应该受伤! :D

请注意,您还可以使用 tilda 切换到$HOME系统中多个用户的目录,如下所示:

cd ~root
ls ~ftp
echo ~nobody

答案3

正如 icarus 在评论中建议的那样,一种简单的方法是创建一个别名cd ~/Desktop

但是,如果您确实想cd这样做,您可以为一个函数别名来cd处理检查目录是否为Desktop

_cd () {
  if [ "$1" == "Desktop" ]; then
    cd ~/Desktop
  else
    cd $1
  fi
}
alias cd="_cd"

然而,这也会导致制表符完成cd中断

相关内容