Question Y at-il un raccourci vers mkdir foo et immédiatement cd dedans?


C'est quelque chose que je fais souvent

$ mkdir foo
$ cd foo

Cela fonctionne comme une commande unique, mais il y a plus de frappes et économise du temps.

$ mkdir foo && cd foo

Y at-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
}

81
2018-06-15 14:22


origine


Vous pouvez renommer la fonction en mkdir si tu utilises command mkdir $1 au lieu de juste mkdir $1 dans le corps de la fonction. - Andy
(1) pourquoi pas simplement "mkdir $ 1; cd $ 1" au lieu de "&&"? de cette façon le "cd" réussit même si le "mkdir" échoue, et vous n'avez pas besoin de l'échafaudage déjà existant. (2) comme écrit, votre fonction ne fonctionnera pas (pour vous demander un nom de répertoire). vous devez mettre cela dans une clause "if" séparée du test d'existence (actuellement dans "elif"). - quack quixote


Réponses:


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.


38
2018-06-15 14:29



Au lieu de `which mkdir`, utilisez juste command mkdir. - Dennis Williamson
Merci Dennis. Il n'y a rien sous man command - pourriez-vous me diriger vers une référence? (Je peux trouver ce que ça fait, mais ça vaut le coup d'être sérieux;) - Andy
command est décrit dans le manuel de bash (dont il est un intégré, ce n'est pas une commande séparée). Vous pourriez aussi essayer help command. - grawity
Cela fonctionne aussi pour zsh btw - Florian Loch


le bash, zsh Coquilles

Si vous ne souhaitez pas qu'une autre fonction soit mémorisée et que cela ne vous dérange pas:

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

le $_ (soulignement dollar) La variable de commande 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 la sortie serait la suivante:

foo bar
bar baz

le fish coquille

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

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

La touche alt combinée avec la flèche vers le haut ou vers le bas permet de parcourir l'historique des paramètres de commande.


89
2017-08-12 11:26



Cela fonctionne dans zsh aussi. - Nabil Kadimi
Pouvez-vous expliquer ce que $ _ est? Débutant ici. - arg20


Pour oh-mon-zsh utilisateurs:
$ take 'directory_name' 

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


14
2017-07-12 15:39



Pouvez-vous expliquer cela plus en détail? - bwDraco


Qu'en est-il de:

$ mkdir newdirname; cd $_

C'est un peu plus facile que d'utiliser &&, en combinant les réponses de quack quixote et de kzh.


10
2018-03-14 02:09



Le point de && est-ce cd ne sera pas exécuté si le mkdir commande échoue - slhck
@slhck en fait c'était le point de la question: cd même si mkdir échoue (par exemple s'il existe déjà, ce qui oblige l'utilisateur à écrire une deuxième commande pour réellement le placer sur le chemin). Cependant, contrairement à ce que cette réponse dit, ce n'est pas pour la facilité: && n'est pas plus compliqué que; - moala


Vous pouvez essayer quelque chose comme ça:

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

Enregistrez ce script à un endroit qui se trouve dans 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
2018-06-15 14:30



Comment cela peut-il fonctionner? il semble que seulement cd dans le cadre de l'exécution du ~/bin/mkcd script, pas l'appelant du script. - Erik Allik


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

5
2017-09-19 06:01





Selon le 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 indépendamment

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

Usage mkcd un peu / chemin / vers / mon / dir


0
2017-10-13 11:51





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
}

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

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

0
2017-12-20 05:32





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

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

le -pv tag permet la création de répertoires avec des sous-répertoires.


0
2017-07-23 12:30