Comment apprendre la programmation dans un environnement Unix? Dois-je apprendre d’abord la coquille?

J’ai appris le langage standard c et c ++. Cependant, je ne sais pas comment utiliser les appels système et écrire des programmes avec des processus, etc. Je veux donc apprendre la programmation dans l’environnement Unix / Linux. Quel est le pas? devrais-je. Devrais-je apprendre la coquille en premier?

Je suis en programmation de systèmes en ce moment, et le professeur nous donne une étude sur Unix, y compris les appels système et la rédaction de versions plus simples des principaux utilitaires existants.

Une source que j’ai trouvée très utile était la lecture du code source complet des utilitaires et une référence rapide des appels système . Le manuel est Comprendre la programmation UNIX / Linux et je vous recommande vivement de le prendre.

Nous n’avons pas du tout eu recours aux scripts shell, hormis l’utilisation de redirections d’entrées, de grep et de pipes, donc je ne sais pas à quel point cela serait utile pour vous à ce stade.

Si vous souhaitez programmer dans un environnement UNIX, vous devrez d’abord vous familiariser avec ce système avant de vous lancer dans les appels système et autres. Je recommande l’ environnement de programmation UNIX pour une introduction saine à UNIX en général. C’est un peu daté mais toujours un bijou de livre et une lecture incontournable pour tout programmeur.

Si vous avez un système Unix / Linux, vous devriez au moins connaître un peu le script shell et ses outils, juste pour savoir ce que font vos scripts de démarrage ou pour vous déplacer rapidement dans votre système (par exemple en utilisant ls, mv, cp etc.). A part ça, pour de vrais programmes, vous pouvez utiliser un langage de programmation (Python, Ruby en tête). Un grand nombre de langages de programmation modernes, comme Python, fournissent déjà des API au niveau du système. Python est livré avec un shell lui-même, donc si vous êtes un kernel dur, vous pouvez également l’utiliser pour vos tâches quotidiennes. Ce petit exemple montre que vous pouvez faire une liste de répertoires dans le shell Python

>>> import os >>> os.chdir("/tmp") >>> os.listdir(".") 

C’est la même chose que de taper ls sur la ligne de commande. Que diriez-vous de déplacer / copier des fichiers? Au lieu d’utiliser shell mv et cp ,

 >>> import shutil >>> shutil.copy("file","/destiation") >>> shutil.move("file1","/destination") 

À mon humble avis, si vous prévoyez de programmer des choses système / bas niveau, alors C / C ++ peut être ce dont vous avez besoin, mais pour un fonctionnement normal du système ou des opérations quotidiennes, un langage de programmation comme Python / Ruby

Non, vous n’avez pas besoin d’apprendre le shell. Il suffit de chercher un livre ou une page Web décrivant les appels système Unix pour C.

Si vous allez programmer dans un environnement Unix “traditionnel” (c’est-à-dire utiliser un éditeur de texte et tout faire depuis la ligne de commande), vous voudrez être assez compétent avec le shell et très compétent avec l’éditeur de votre choix ( et vous avez la liberté de choix, mais si ce n’est pas emacs vous allez au mauvais endroit …).

Mais il n’est pas vraiment nécessaire d’étudier d’ abord la coquille. Sachez simplement que le shell fournit des outils puissants. Ensuite, chaque fois que vous vous trouvez vous-même en train de penser “il doit y avoir une meilleure façon!” , allez apprendre ce qu’il ya de mieux.