web-dev-qa-db-fra.com

Existe-t-il un raccourci vers mkdir foo et un cd immédiatement?

C'est quelque chose que je fais fréquemment

$ mkdir foo
$ cd foo

Cela fonctionne comme une seule commande, mais cela prend plus de frappe et ne fait pas gagner du temps.

$ mkdir foo && cd foo

Y a-t-il un raccourci pour cela?

Modifier

Avec l'aide de l'aide ci-dessous, cela semble être la réponse la plus élégante.

# ~/.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
}
87
macek

Je ne suis pas un expert Linux/bash, mais essayez de mettre ceci dans votre .bashrc.

function mkdir
{
  command mkdir $1 && cd $1
}

PS Merci à Dennis d'avoir utilisé command mkdir.

45
Andy

Les bash, zsh shell

Si vous ne voulez pas qu'une autre fonction soit mémorisée et ne craignez pas les bashismes:

$ mkdir /home/foo/doc/bar && cd $_

La variable de commande $_ (dollar underscore) bash contient le paramètre le plus récent. Donc, si un utilisateur devait taper ce qui suit sur la ligne de commande: echo foo bar && echo $_ baz, alors le résultat serait le suivant:

foo bar
bar baz

Le shell fish

Dans la coquille de poisson, je taperais ce qui suit:

> mkdir/home/foo/doc/bar 
> cd alt + ↑

La touche Alt combinée avec la touche fléchée haut ou bas permet de parcourir l'historique des paramètres de commande.

92
kzh

Pour les utilisateurs oh-my-zsh :
$ take 'directory_name'

Référence: https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet

18
Avijit Gupta

Qu'en est-il de:

$ mkdir newdirname; cd $_

C’est un peu plus facile que d’utiliser &&, en combinant les réponses de Quack Quichote et de KZH.

10
Alex

Vous pouvez essayer quelque chose comme ça:

#!/bin/sh
mkdir $1 && cd $1

Enregistrez ce script dans un emplacement de votre chemin, par exemple,/usr/local/bin ou ~/bin (vous devez mettre ce dernier dans votre chemin dans votre fichier ~/.profile). Ensuite, vous pouvez simplement l'appeler.

7
petersohn
$echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
$mkcd < pathtofolder/foldername >
5
mshameers

Voici une fonction simple que je mets dans mon fichier ~/.config/fish/config.fish qui accomplit cette tâche:

function mkcd
    mkdir -pv $argv;
    cd $argv;
end

La balise -pv permet la création de répertoires avec des sous-répertoires.

1
Alex Fenwood Hughes

J'ai trouvé que la fonction ci-dessous ne peut créer qu'un seul répertoire. Si je veux créer des sous-répertoires en même temps, cela ne fonctionne pas:

function mkdir
{
  command mkdir $1 && cd $1
}

Alors je l'ai changé et maintenant ça marche très bien!

function mkcd
{
  command mkdir -pv $1 && cd $1 && echo "Now in `pwd`"
}
0
user5723841

En fonction du résultat souhaité si le répertoire existe déjà.

Échec si le répertoire existe déjà

mkcd() {
    mkdir $1 && cd $1
}

Changer de répertoire sans se soucier

mkcd() {
    mkdir $1 ; cd $1
}

Utilisation mkcd un/chemin/vers/mon/répertoire

0
bingles