每当我创建一个新文件夹时,我是否可以向bash概要文件添加一个命令?

每当我创建一个新文件夹时,我是否可以向bash概要文件添加一个命令?,bash,cd,Bash,Cd,我一直在创建命令,将我喷射到我想在其中工作的文件夹,这很好,但是。。。 有没有办法在我创建新文件夹时自动添加命令? 例如,我在comp上创建了一个文件夹,并将其添加到我的bash配置文件中: 别名foldername='cd/Applications/MAMP/htdocs/foldername/wp content/themes/foldername' 我在mac电脑上;el capitan。您可以在中创建函数。bashrc: # Changes directory to project in

我一直在创建命令,将我喷射到我想在其中工作的文件夹,这很好,但是。。。 有没有办法在我创建新文件夹时自动添加命令? 例如,我在comp上创建了一个文件夹,并将其添加到我的bash配置文件中:

别名foldername='cd/Applications/MAMP/htdocs/foldername/wp content/themes/foldername'


我在mac电脑上;el capitan。

您可以在
中创建函数。bashrc

# Changes directory to project in htdocs
function project () {
    cd "/Applications/MAMP/htdocs/$1"
}
mkdircd ()
{
    [ -z "$1" ] && {
        printf "usage: mdcd <dir>\n";
        return 1
    }
    mkdir -p "$1" && cd "$1" || {
        printf "error: unable to create directory '%s'\n" "$1";
        return 1
    }
    return 0
}

...

alias mdcd='mkdircd'
一旦您获得了bashrc的源代码或启动了一个新的shell,您就可以使用

project FOLDER_NAME

如果您愿意安装较新版本的
bash
(例如通过自制),可以设置
autocd
选项

$ shopt -s autocd
$ pwd
/Users/me
$ mkdir foo
$ foo
cd foo
$ pwd
/Users/me/foo
如果您愿意更改shell,Mac OS X附带的
zsh
版本有一个同名选项

% setopt autocd
% pwd
/Users/me
% mkdir foo
% foo
% pwd
/Users/me/foo

注释中引用的另一种方法是createa simple函数,该函数创建并更改目录。别名为
mdcd
它只创建目录,并在成功创建时更改目录。我在我的
~/.bashrc
中使用它:

# Changes directory to project in htdocs
function project () {
    cd "/Applications/MAMP/htdocs/$1"
}
mkdircd ()
{
    [ -z "$1" ] && {
        printf "usage: mdcd <dir>\n";
        return 1
    }
    mkdir -p "$1" && cd "$1" || {
        printf "error: unable to create directory '%s'\n" "$1";
        return 1
    }
    return 0
}

...

alias mdcd='mkdircd'
mkdircd()
{
[-z“$1”]&&{
printf“用法:mdcd\n”;
返回1
}
mkdir-p“$1”和cd“$1”||{
printf“错误:无法创建目录'%s'\n”“$1”;
返回1
}
返回0
}
...
别名mdcd='mkdircd'

您可以尝试一下,看看它是否适合您的需要。

您也可以使用
CDPATH
环境变量来实现这类功能(假设您的目标目录位于一个(或三个)公共目录下)

根据POSIX规范:

引用目录的路径名的分隔列表。cd实用程序在尝试更改目录时应使用此列表,如说明中所述。一个空字符串代替目录路径名表示当前目录。如果未设置CDPATH,则应将其视为一个空字符串


因此,如果您设置
CDPATH=。:/Applications/MAMP/htdocs/foldername/wp content/themes
,您就可以从任何地方使用
cd foldername
进入
/Applications/MAMP/htdocs/foldername/wp content/themes/foldername
…当然,前提是当前目录中没有目录
foldername
(如果您想让它也起作用,您需要颠倒
CDPATH
中项目的顺序。)

如果您只使用
mkdir
创建新文件夹,那么当然可以将
mkdir
别名为函数包装器或编写包装器脚本,尽管您尝试的操作完全是偏执的,并且会产生许多后果(别名覆盖内置和外部命令、大runcom、重复别名相互覆盖、悬空别名指向任何地方,等等)。如果您想在使用Finder创建新文件夹时使用此功能,则不需要,尤其是在SIP之后。您可能需要尝试一种旨在加快shell中导航速度的众多工具:
fasd
(我使用的),
autojump
z
,等等。请小心制作可能会为重要命令添加别名的内容。如果制作一个名为
ls
?:-)@ghoti…的目录或一个名为alias的目录,该怎么办D@hek2mgl - :-)我个人有一个非常类似的函数,名为
mkcd
,所以竖起大拇指,但这实际上与所问的问题无关……这是一个很接近的问题,但所问的问题可能会导致他的系统出现问题,如评论中所述。这是评论中解释的后续内容当我考虑是否最好尝试将其全部塞进评论或帖子作为答案时,后者似乎是更好的选择。这里有很多东西需要消化。如果有可能我会把事情搞砸的话,我可能会坚持我目前的方法。感谢所有的答案。或者,只需将
CDPATH=。:/Applications/MAMP/htdocs
添加到you~/.bash\u配置文件,然后只需
cd文件夹\u名称