it-swarm.com.de

Gibt es eine Verknüpfung zu mkdir foo und sofort eine CD hinein?

Das mache ich oft

$ mkdir foo
$ cd foo

Dies funktioniert wie ein einzelner Befehl, ist jedoch ein weiterer Tastendruck und spart keine Zeit.

$ mkdir foo && cd foo

Gibt es dafür eine Abkürzung?

Bearbeiten

Mit der Hilfe unten scheint dies die eleganteste Antwort zu sein.

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

Ich bin kein Linux/Bash-Experte, aber versuche dies in deinen .bashrc zu schreiben.

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

PS Danke an Dennis für die Verwendung von command mkdir.

45
Andy

Die Shells bash, zsh

Wenn Sie nicht möchten, dass sich eine andere Funktion erinnert, und Bashismen nicht stören:

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

Die bash-Befehlsvariable $_ (Dollar-Unterstrich) enthält den neuesten Parameter. Wenn ein Benutzer also Folgendes in die Befehlszeile eingeben würde: echo foo bar && echo $_ baz, wäre die Ausgabe wie folgt:

foo bar
bar baz

Die fish Shell

In der Fischschale würde ich Folgendes eingeben:

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

Die Alt-Taste in Kombination mit der Aufwärts- oder Abwärtspfeiltaste durchläuft den Befehlsparameterverlauf.

92
kzh

Für oh-my-zsh Benutzer:
$ take 'directory_name'

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

18
Avijit Gupta

Wie wäre es mit:

$ mkdir newdirname; cd $_

Es ist ein bisschen einfacher, als && zu verwenden und die Antworten von quack quixote und kzh zu kombinieren.

10
Alex

Sie können so etwas ausprobieren:

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

Speichern Sie dieses Skript an einem Ort, der sich in Ihrem Pfad befindet, z. B./usr/local/bin oder ~/bin (Sie müssen diesen letzten in Ihren Pfad in Ihrer ~/.profile-Datei einfügen). Dann können Sie es einfach anrufen.

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

Hier ist eine einfache Funktion, die ich in meine ~/.config/fish/config.fish-Datei geschrieben habe und die diese Aufgabe erfüllt:

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

Mit dem Tag -pv können Verzeichnisse mit Unterverzeichnissen erstellt werden.

1

Ich habe festgestellt, dass die folgende Funktion nur ein Verzeichnis erstellen kann. Wenn ich gleichzeitig Unterverzeichnisse erstellen möchte, funktioniert dies nicht:

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

Also habe ich es geändert und jetzt funktioniert es großartig!

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

Abhängig vom gewünschten Ergebnis, ob das Verzeichnis bereits existiert.

Fehler, wenn das Verzeichnis bereits vorhanden ist

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

Verzeichnis wechseln egal

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

Verwendung mkcd some/path/to/my/dir

0
bingles