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?
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
}
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
.
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
fish
ShellIn 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.
Für oh-my-zsh Benutzer:$ take 'directory_name'
Referenz: https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet
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.
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.
$echo 'mkcd() { mkdir -p "[email protected]" && cd "$_"; }' >> ~/.bashrc
$mkcd < pathtofolder/foldername >
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.
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`"
}
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