Ce n'est pas une question de devoirs, c'est une question d'un ancien examen. Toute personne donnant une réponse ne contribuera pas à la malhonnêteté académique. Pour ceux toujours sceptiques, je cherche simplement quelle commande je pourrais utiliser pour cela. P>
Vous avez un fichier appelé One_MB qui est exactement de 1 mégaoctet de taille. Vous souhaitez en créer un fichier exactement de 128 mégaoctets de taille. Veuillez écrire un script shell pour le faire avec au plus 9 lignes et aucune boucle, si des instructions, une récursivité ou toute autre structure de contrôle logique. Chaque commande, y compris les paramètres, doit avoir une longueur inférieure à 100 caractères. P>
J'ai commencé à rechercher Xarg, mais je ne pouvais pas comprendre un bon moyen de l'utiliser pour y accomplir. P>
6 Réponses :
Le gros indice ici est que cela peut être "pas plus de 9 lignes". Depuis 2 ^ 7 = 128, il vous suffit de doubler la taille du fichier 7 fois:
Je suis curieux pourquoi ils ont reçu 9 commandes, puis, au lieu de 7. Chambre pour erreur, je suppose :)
Peut-être que c'est: Ligne 1: Shebang, lignes 2-8: le code ci-dessus, la ligne 9: Nettoyage .. (Suppression des fichiers temporaires)
C'était la méthode dominante.
à 100 caractères par commande, vous pouvez le réduire un peu:
cat one_mb one_mb one_mb one_mb one_mb one_mb one_mb one_mb >mb8 cat mb8 mb8 mb8 mb8 >mb32 cat mb32 mb32 mb32 mb32 >mb128 rm -f mb8 mb32
En supposant que Bash, vous pouvez utiliser un piratage d'expansion de Brace à une ligne:
cat one_mb{,}{,}{,}{,}{,}{,}{,} > 128_mb
Je pense qu'il est probablement sûr d'assumer Bash depuis que la question a une balise bash code>. Mais si je marquais cela, je pourrais bien décoller des marques pour être un ** :- ** :-) Non, pas vraiment, bon hack.
Je ne sais pas si cela compte, mais cela vous vint à l'esprit:
seq 1 128 | xargs -Inone cat one_mb >> 128_mb
Merci d'avoir utilisé Xargs, je ne vois toujours pas comment ça marche, mais c'est un lookininer assez doux
Cette commande simplifiée pourrait vous aider à comprendre ce qui se passe un peu mieux: SEQ 1 10 | Xargs -i {} echo faire {} code> aussi, consultez les pages de l'homme Xargs!
Merci pour la version simplifiée. Je n'ai pas l'intention de demander des éclaircissements, je respecte la loi de la RTFM. J'ai donc lu la page de l'homme, mais que vous avez des exemples permettant de préciser pour mieux clarifier une description de haut niveau de la fonctionnalité.
ls -ltrh one_mb
Je pense que ce serait suffisant avec les contraintes que vous avez. Vous pouvez définir une fonction qui prend un entier comme paramètre. Si c'est supérieur à 0, Ensuite, vous appelez simplement la fonction avec la valeur requise et vous avez terminé. P>
bonne tol 'Récursion :) p>
(désolé, trop paresseux pour le codage, et il y a beaucoup d'autres réponses de travail, je voulais juste éviter la récursion d'être oubliée :)) P> cat code> s est le fichier et appelle la même fonction, mais avec le paramètre diminué. P>
"S'il vous plaît écrivez un script shell pour le faire avec au plus 9 lignes et nul b> boucles, si des instructions, Récursion b> ou toute autre structure de contrôle logique."
C'était vraiment b> trop tard, je pensais "si des déclarations, une récursivité, etc." étaient autorisées. Ma faute.