J'ai appris à programmer avec un livre d’introduction très cool sur C et j’écris chaque exemple et tâche pour que je puisse apprendre la syntaxe par cœur. J'ai fait tous les fichiers manuellement jusqu'à maintenant, mais les clics, les noms et les sauvegardes sont épuisants.
Je besoin d' un moyen de créer plusieurs fichiers comme bspl0001.c
, bspl0002.c
, bspl0003.c
, etc. , et de les enregistrer dans le répertoire « learning_c » ou quelque chose.
Je ne connais pas Ubuntu / Linux et, honnêtement, je ne l’utilise que via VirtualBox car l’IDE Geany était facile à configurer. Ainsi, je ne sais pas vraiment comment fonctionne le terminal.
edit Je viens de me retrouver dans mon ancien compte et je me demande pourquoi je ne voudrais jamais apprendre une syntaxe de code par cœur. Curieusement, j'ai presque fini mes études de licence en sciences et mathématiques. Merci beaucoup pour l'aide avec le recul!
la source
Réponses:
Vous pouvez le faire avec ces commandes:
Explication:
mkdir learning_c
learning_c
dans le dossier actuel~
cd
commande (iecd Desktop
)cd learning_c
touch bspl{0001..0003}.c
touch
est un outil pour créer des fichiers vides et modifier les horodatages; nous créons des fichiers vides.touch myfile
créera un fichier vide appelémyfile
.Le code laid qui suit (
bspl{0001..0003}.c
) est appelé une extension d'accolade . C'est une fonctionnalitébash
intéressante du shell qui vous permet de créer de longues listes de combinaisons de chaînes arbitraires. Vous pouvez en apprendre plus à ce sujet dans le Wiki Bash Hackers . Dans ce cas, vous ferez une longue liste de paramètres qui seront transmis àtouch
. Vous pouvez également utiliser son équivalent long:Vous pouvez changer le nombre de fichiers: si vous voulez 12 fichiers, vous pouvez les exécuter
bspl{0001..0012}.c
.0012
au lieu de12
) s'assurent que la sortie utilise 4 chiffres zéros .la source
touch bspl000{1..3}.c
touch {test,tes2,tes3}.js
touch tes{t,2,3}.js
Créer un fichier correctement numéroté (suivant) avec une combinaison de touches de raccourci
Pourquoi créer tous les fichiers à la fois? L'inconvénient est que vous aurez beaucoup de fichiers vides et inutilisés. Ce que j'utilise réellement: appuyez sur une combinaison de touches pour:
Tout en un presse. De cette façon, vous évitez beaucoup de fichiers (encore) inutilisés; Les fichiers ne sont créés que si vous en avez besoin.
Une version simplifiée ci-dessous (ne pas exécuter l'étape 3). À chaque pression sur une touche, un fichier correctement numéroté sera créé, tel que:
Comment utiliser
Exécutez le script à partir d'un raccourci: Paramètres système> Clavier> Raccourcis personnalisés. Ajoutez la commande:
la source
Vous pouvez utiliser le code python suivant, vous pouvez le modifier pour répondre à vos besoins.
Enregistrez le code suivant avec le nom de fichier
filecreator.py
Et puis exécutez-le avec cette commande:
la source
La
bash
voie est bonne, mais que se passe-t-il si vous travaillez avec une coque qui ne supporte pas l'expansion des accolades?touch file{1..10}
ne fonctionne pas pour moimksh
par exemple. Voici trois manières alternatives qui fonctionnent indépendamment du shell.seq
Une approche plus neutre vis-à-vis du shell consisterait à combiner
seq
commande pour générer une séquence de nombres formatés avec desprintf
options et à la passer àxargs
commande. Par exemple,Perl
Bien entendu, Perl, en tant qu'outil assez large *, peut également le faire. La commande spécifique à une ligne que nous avons ici est la suivante:
En pratique, nous spécifions 3 arguments de ligne de commande: préfixe du nom de fichier, index de départ et index de fin. Nous utilisons ensuite
do { } for $ARGV[1] .. $ARGV[2]
pour itérer une plage de nombres spécifique. Disons,$ARGV[1]
était 5 et$ARGV[2]
était 9, nous itérerions plus de 5,6,7,8 et 9.Que se passe-t-il à chaque itération dans les accolades? nous prenons chaque nombre spécifié avec
$_
, et en utilisantsprintf()
function, créez une chaîne m qui relie le préfixe (premier argument de ligne de commande$ARGV[0]
) et le nombre donné, mais en remplissant le nombre avec 4 zéros (ce qui est fait par leprintf
style de formatage,%04d
partie), et fixer les.c
suffix.As un résultat à chaque itération , nous faisons un nom commebspl0001.c
.Le
open(my $fh, ">", $var);close($fh)
agit efficacement en tant quetouch
commande, créant un fichier avec le nom spécifié.Bien que légèrement long, il fonctionne assez bien, à la manière du script python de Jacob Vlijm. Il peut aussi être converti en script pour plus de lisibilité, comme ceci:
Permet de tester cela. D'abord le one-liner:
Et maintenant le script:
awk
Une autre approche consisterait à
awk
exécuter une boucle for et à rediriger vers un fichier spécifique. L'approche est similaire à celle de Perl one-line avec des arguments en ligne de commande. Bienawk
qu’il s’agisse avant tout d’un utilitaire de traitement de texte, il peut encore faire de la programmation système.la source