web-dev-qa-db-fra.com

Une commande pour créer un répertoire et un fichier à l'intérieur de celle-ci commande linux

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?

20
chanchal118
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.

29
devnull

Une simple commande ci-dessous suffit.

mkdir a && touch !$/file.txt

THX

0
Rodrigo Andrade

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:

  • Insérez la fonction à la fin du fichier ~/.bashrc à l'aide de la commande echo
  • L'indicateur -p sert à créer les dossiers imbriqués, tels que fldr2
  • Mettez à jour le fichier ~/.bashrc à l'aide de la commande source
  • Utilisez la fonction mkfile pour créer le fichier.
0
Alex P

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
0
Ilya Zarembsky