是否有 mkdir foo 并立即 cd 的快捷方式?

mac*_*cek 99 terminal bash shortcuts command-line

这是我经常做的事情

$ mkdir foo
$ cd foo
Run Code Online (Sandbox Code Playgroud)

这作为单个命令工作,但它需要更多的击键并且不节省时间。

$ mkdir foo && cd foo
Run Code Online (Sandbox Code Playgroud)

这有捷径吗?

编辑

使用下面的帮助,这似乎是最优雅的答案。

# ~/.bashrc
function mkcd {
  if [ ! -n "$1" ]; then
    echo "Enter a directory name"
  elif [ -d $1 ]; then
    echo "\`$1' already exists"
  else
    mkdir $1 && cd $1
  fi
}
Run Code Online (Sandbox Code Playgroud)

kzh*_*kzh 105

bashzsh

如果您不想记住另一个函数并且不介意 bashisms:

$ mkdir /home/foo/doc/bar && cd $_
Run Code Online (Sandbox Code Playgroud)

$_(美元下划线)bash命令变量包含了最新的参数。因此,如果用户要在命令行中键入以下内容:echo foo bar && echo $_ baz,则输出将如下所示:

foo bar
bar baz
Run Code Online (Sandbox Code Playgroud)

fish壳牌

在鱼壳中,我会输入以下内容:

> mkdir /home/foo/doc/bar
> 光盘 alt + ↑

alt 键与向上或向下箭头键组合将循环查看命令参数历史记录。

  • 这也适用于 `zsh`。 (4认同)
  • 你能解释一下 $_ 是什么吗?新手来了 (3认同)

And*_*ndy 47

我不是 Linux/bash 专家,但试着把它放在你的.bashrc.

function mkdir
{
  command mkdir $1 && cd $1
}
Run Code Online (Sandbox Code Playgroud)

PS 感谢丹尼斯使用command mkdir.

  • 而不是`\`which mkdir\``,只需使用`command mkdir`。 (2认同)
  • `command` 在 **`bash`** 的手册中有描述(它是内置的;它不是一个单独的命令)。你也可以试试**`help command`**。 (2认同)

Avi*_*pta 39

对于oh-my-zsh用户:
$ take 'directory_name'

参考:https : //github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet


小智 11

关于什么:

$ mkdir newdirname; cd $_
Run Code Online (Sandbox Code Playgroud)

它比使用&& 容易一些,结合quack quixote 和kzh 的答案。

  • `&&` 的意义在于,如果 `mkdir` 命令失败,`cd` 将不会被执行 (27认同)

pet*_*ohn 7

你可以尝试这样的事情:

#!/bin/sh
mkdir $1 && cd $1
Run Code Online (Sandbox Code Playgroud)

将此脚本保存到路径中的某个位置,例如 /usr/local/bin 或 ~/bin(您必须将最后一个放入 ~/.profile 文件中的路径中)。然后你可以简单地调用它。

  • 这怎么工作?它似乎只有在执行 `~/bin/mkcd` 脚本的上下文中的 `cd`,而不是脚本的调用者。 (5认同)

小智 5

$echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
$mkcd < pathtofolder/foldername >
Run Code Online (Sandbox Code Playgroud)


Ale*_*hes 5

这是我放入~/.config/fish/config.fish文件中的一个简单函数,用于完成此任务:

function mkcd
    mkdir -pv $argv;
    cd $argv;
end
Run Code Online (Sandbox Code Playgroud)

-pv标签允许创建带有子目录的目录。