别名创建一个新目录并转到它

别名创建一个新目录并转到它

因此,在这里我已经创建,或者至少尝试为接受命令行参数的命令创建一个别名,使用该名称创建一个新目录,然后转到该目录。

alias newfolder='mkdir $2 ; cd "$(history | tail -2 | awk '\''NR == 1'\'' | awk '\''{print $3}'\'')"'

别名创建成功,但当我想使用命令行参数运行命令时,收到此错误消息。

username:~/workspace (master) $ newfolder a
mkdir: missing operand
Try 'mkdir --help' for more information.
bash: cd: newfolder='mkdir: No such file or directory

答案1

您需要一个函数,而不是别名。尝试:

newfolder() { mkdir -p "$1" && cd "$1"; }

例子:

$ pwd
/tmp
$ newfolder dir1/dir2
$ pwd
/tmp/dir1/dir2

笔记:

  1. -p选项mkdir告诉它在需要时创建丢失的父目录。在上面的示例中,dir1不存在,但mkdir -p dir1/dir2创建了dir1dir2

  2. 因为我们使用了 shell 操作符&&,所以只有命令成功cd时才会执行该命令。mkdir

  3. 别名在非常简单的情况下非常有用,其中固定字符串可以替换单词。别名不处理参数。

  4. 因为我们使用 shell 函数代替别名,所以我们可以$1根据需要引用参数,例如在本例中为 。

相关内容