it-swarm.com.de

Ein Befehl zum Erstellen eines Verzeichnisses und einer darin enthaltenen Datei

Angenommen, mein aktuelles Verzeichnis istA. Ich möchte ein VerzeichnisBund eine Datei "myfile.txt" inBerstellen.

Wie geht das in einem Befehl vom Terminal aus?

Bearbeiten:

Verzeichnis kann mehrfach geschachtelt werden. Ich möchte vielleicht B/C/D und dann "myfile.txt" darin erstellen. Ich möchte den Verzeichnisteil auch nicht wiederholen.

Der folgende Befehl erstellt ein Verzeichnis auf einer beliebigen Ebene.

mkdir -p B/C/D 

und 

mkdir -p B/C/D && touch B/C/D/myfile.txt

erstellt das Verzeichnis und die Datei. Ich möchte den Verzeichnisteil jedoch nach dem Befehl touch nicht wiederholen. Ist das möglich?

20
chanchal118
mkdir B && touch B/myfile.txt

Alternativ können Sie eine Funktion erstellen:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

Führen Sie es mit zwei Argumenten aus: Pfad zum Erstellen und Dateiname. Sprichwort:

mkfile B/C/D myfile.txt

würde die Datei myfile.txt im Verzeichnis B/C/D erstellen.

29
devnull

Ein einfacher Befehl reicht aus.

mkdir a && touch !$/file.txt

Vielen Dank

0
Rodrigo Andrade

Zu diesem Zweck können Sie Ihre eigene Funktion erstellen. Zum Beispiel:

$ echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ;  }' >> ~/.bashrc
$ source ~/.bashrc
$ mkfile ./fldr1/fldr2/file.txt

Erläuterung:

  • Fügen Sie die Funktion mit dem Befehl echo am Ende der ~/.bashrc-Datei ein
  • Das Flag -p dient zum Erstellen der verschachtelten Ordner, z. B. fldr2.
  • Aktualisieren Sie die ~/.bashrc-Datei mit dem Befehl source
  • Verwenden Sie die Funktion mkfile, um die Datei zu erstellen
0
Alex P

devnulls Antwort bietet eine Funktion:

mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }

Diese Funktion funktionierte für mich nicht wie sie ist (ich verwende bash 4.3.48 auf WSL Ubuntu), funktionierte jedoch, nachdem ich die doppelten Striche entfernt hatte. Also hat das für mich funktioniert:

echo 'mkfile() { mkdir -p "$1" && touch "$1"/"$2" }' >> ~/.bash_profile
source ~/.bash_profile
mkfile sample/dir test.file
0
Ilya Zarembsky