编写命令来切换到特定目录

编写命令来切换到特定目录

有一些目录我需要比其他目录更频繁地访问,比如音乐、工作、编程等。所以我希望有专属命令,比如“gotomusic”或“gotodropbox”来访问这些文件夹,否则我必须输入类似的内容cd /media/sda9/Work/Dropbox等等。

这是个好主意吗?有没有更好的方法可以达到同样的效果?

我尝试编写以下脚本“gotomusic”

#!/bin/bash

cd /media/sda8/Music

但它不起作用。这样做有什么错?

谢谢!

答案1

我认为你可以在 stackoverflow 上找到正确的解决方案:

从脚本更改当前目录

答案2

您可以使用别名来执行此操作,只需添加您的~/.bashrc

alias gotomusic='cd /home/user/music'
alias gotopics='cd /home/user/pictures'

ETC...

答案3

问题是,您无法更改父进程的工作目录。

与您的问题相关的流程如下:

您的交互式 shell 的当前工作目录是$PWD。然后您启动gotomusic,并且您的交互式 shell(我将其称为parentbash)将启动 的新实例bash(我将其称为childbash)作为新进程。childbash继承 的几个属性parentbash。除其他属性外,它从 继承了其工作目录parentbash

由于您指示childbash从脚本中读取命令,它会将其自己的工作目录更改为/media/sda8/Music并终止。

此时parentbash再次处于活动状态,其状态与 执行之前相同childbash

为了parentbash调用其cd内置命令,您应该获取脚本。这很容易做到

source gotomusic

但问题仍然是这种方法是否适合快速目录更改。

目录书签系统有多种实现方式bashmarks,但我认为最好的解决方案是您可以从最常用的目录列表中轻松选择。我不知道是否存在类似的东西,bash但如果您想使用,zsh您可以在 [1]。

相关内容