Supposons que mon répertoire actuel estA. Je veux créer un répertoireBet un fichier "myfile.txt" dansB.
Comment faire cela en une seule commande depuis Terminal?
Modifier:
Répertoire peut être imbriqué plusieurs fois. Par exemple, je veux peut-être créer B/C/D puis "myfile.txt" à l'intérieur. Je ne veux pas aussi répéter la partie de répertoire.
La commande suivante créera un répertoire à n’importe quel niveau.
mkdir -p B/C/D
et
mkdir -p B/C/D && touch B/C/D/myfile.txt
créera le répertoire et le fichier. Mais je ne veux pas répéter la partie du répertoire après la commande touch
. Est-ce possible?
mkdir B && touch B/myfile.txt
Sinon, créez une fonction:
mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }
Exécutez-le avec 2 arguments: chemin pour créer et nom de fichier. En disant:
mkfile B/C/D myfile.txt
créerait le fichier myfile.txt
dans le répertoire B/C/D
.
Une simple commande ci-dessous suffit.
mkdir a && touch !$/file.txt
THX
Pour cela, vous pouvez créer votre propre fonction. Par exemple:
$ echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ; }' >> ~/.bashrc
$ source ~/.bashrc
$ mkfile ./fldr1/fldr2/file.txt
Explication:
~/.bashrc
à l'aide de la commande echo
-p
sert à créer les dossiers imbriqués, tels que fldr2
~/.bashrc
à l'aide de la commande source
mkfile
pour créer le fichier.devnull's answer fournit une fonction:
mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }
Cette fonction ne fonctionnait pas pour moi telle quelle (je suis sous bash 4.3.48 sur WSL Ubuntu), mais a fonctionné une fois les doubles tirets supprimés. Donc, cela a fonctionné pour moi:
echo 'mkfile() { mkdir -p "$1" && touch "$1"/"$2" }' >> ~/.bash_profile
source ~/.bash_profile
mkfile sample/dir test.file