![别名创建一个新目录并转到它](https://linux22.com/image/94964/%E5%88%AB%E5%90%8D%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9B%AE%E5%BD%95%E5%B9%B6%E8%BD%AC%E5%88%B0%E5%AE%83.png)
因此,在这里我已经创建,或者至少尝试为接受命令行参数的命令创建一个别名,使用该名称创建一个新目录,然后转到该目录。
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
笔记:
该
-p
选项mkdir
告诉它在需要时创建丢失的父目录。在上面的示例中,dir1
不存在,但mkdir -p dir1/dir2
创建了dir1
和dir2
。因为我们使用了 shell 操作符
&&
,所以只有命令成功cd
时才会执行该命令。mkdir
别名在非常简单的情况下非常有用,其中固定字符串可以替换单词。别名不处理参数。
因为我们使用 shell 函数代替别名,所以我们可以
$1
根据需要引用参数,例如在本例中为 。