En mai, Nettuts + a publié un excellent article intitulé «7 Conseils simples et utiles en ligne de commande»; c'était un excellent article pour commencer à utiliser la ligne de commande. Mais il y a beaucoup plus à apprendre sur l'utilisation d'un shell, et je vous emmènerai au prochain niveau de ce tutoriel.!
Si vous utilisez Mac OS X ou votre version préférée de Linux, vous êtes prêt. Lancez le terminal et continuez. Si vous êtes sous Windows, eh bien, le jeu de commandes par défaut ne correspond pas vraiment à ce qu’est un shell bash. Si vous voulez de l’alimentation, consultez Microsoft PowerShell; cependant, les commandes ci-dessous ne fonctionneront pas nécessairement là. Vous pouvez obtenez un shell bash sous Windows, cependant:
D'accord, allons dans!
En tant que développeur, l’une de vos tâches les plus courantes consiste à créer des fichiers. Si vous travaillez à partir de la ligne de commande, la plupart du temps, vous ne ferez que donner le nom du fichier que vous voulez créer à votre éditeur:
$ mate index.html $ mvim default.css
Cependant, il peut arriver que vous souhaitiez simplement créer un ou plusieurs fichiers sans le modifier. Dans ce cas, vous utiliserez le toucher
commander:
$ touch index.html $ touch one.txt deux.txt trois.txt
C'est si facile. En fait, le toucher
La commande sert à mettre à jour la date d'accès / modifiée d'un fichier; c'est juste un bel effet secondaire que si le fichier n'existe pas, il le créera.
Eh bien, puisqu'il s'agit de fichiers, il y a un bon changement: vous voudrez voir le contenu d'un fichier depuis le terminal tôt ou tard. Il y a quelques commandes qui feront cela pour vous. Le premier est chat
; chat
est l'abréviation de «concatenate», et cette commande fait plus que le contenu du fichier de sortie; Cependant, c'est ce que nous allons regarder ici. C'est aussi simple que de transmettre à la commande un fichier:
$ chat shoppingList.txt
Cependant, si le fichier est volumineux, tout le contenu défilera devant vous et vous resterez en bas. Certes, vous pouvez revenir en arrière, mais c'est nul. Comment utiliser Moins
?
$ moins shoppingList.txt
Moins est un meilleur moyen d'inspecter des fichiers volumineux sur la ligne de commande. Vous aurez un écran plein de texte à la fois, mais pas plus. Vous pouvez déplacer une ligne vers le haut ou une ligne vers le bas avec k
et j
respectivement, et déplacez une fenêtre vers le haut ou le bas avec b
et F
. Vous pouvez rechercher un motif en tapant /modèle
. Lorsque vous avez terminé, appuyez sur q
sortir du Moins
téléspectateur.
Étant donné que vous travaillez probablement avec votre juste part de bibliothèques de frameworks, vous vous retrouvez souvent en train de télécharger ces fichiers en cours de travail. Oh, je sais: vous pouvez simplement le télécharger sur le Web, naviguer dans le dossier, le décompresser et copier les éléments dans votre projet, mais cela ne semble-t-il pas être un travail fastidieux? C'est beaucoup plus simple d'utiliser la ligne de commande. Pour télécharger des fichiers, vous pouvez utiliser boucle
; procédez comme suit:
$ curl -O http://www.domain.com/path/to/download.tar.gz
le -O
le drapeau raconte boucle
pour écrire le contenu téléchargé dans un fichier portant le même nom que le fichier distant. Si vous ne fournissez pas ce paramètre, curl affichera probablement simplement le fichier dans la ligne de commande (en supposant que ce soit du texte).
Curl est un outil assez complet, consultez la page de manuel (voir ci-dessous) si vous pensez que vous l'utiliserez beaucoup. Voici un conseil judicieux qui utilise l’extension du support du shell:
$ curl -0 http://www.domain.com/one,two,three.txt
Oui, c'est aussi simple que de télécharger plusieurs fichiers d'un même endroit à la fois. (Notez que cette fonctionnalité n'est pas curl; elle fait partie du shell, vous pouvez donc utiliser cette notation dans d'autres commandes. Consultez ce lien pour plus d'informations.)
Alors maintenant, vous basculez les téléchargements en ligne de commande; Cependant, il y a de très bonnes chances que la plupart des choses que vous téléchargez soient archivées et compressées, avec une extension de .tar.gz (ou alternativement, .tgz). Alors, tu fais quoi avec ça? Faisons un pas en arrière pendant une seconde et comprenons ce que signifie exactement «archivé et gzippé». Vous connaissez probablement les archives. Vous avez vu des fichiers .zip; ils sont une incarnation des archives. Fondamentalement, une archive est un simple fichier qui regroupe plusieurs fichiers. Souvent, les archives compressent les fichiers afin que le fichier final soit plus petit que les fichiers originaux. Cependant, vous pouvez toujours réduire un peu la taille de l'archive en compressant l'archive… et c'est là que gzipping entre en jeu. Gzipping est une forme de compression..
Revenons donc à ce téléchargement. Il a été taré (archivé) et gzippé. Vous pouvez le décompresser puis le désarchiver, mais nous avons tous besoin de moins de frappes au clavier, non? Voici ce que vous feriez:
$ tar xvzf download.tar.gz
Attends quoi? Voici la ventilation: le goudron
est la commande que nous exécutons; xvzf
sont les drapeaux que nous utilisons (habituellement, vous avez un tiret devant vous, mais c’est facultatif ici). Les drapeaux sont les suivants:
X
allons le goudron
sais que nous sommes eXtraçage, pas d'archivage.v
allons le goudron
savons que nous voulons que ce soit verbose (donnez-nous un aperçu de l'action qu'il effectue).z
allons le goudron
savoir que le fichier sur lequel nous travaillons a été compressé (il décompresse donc le fichier).F
allons le goudron
savons que nous allons passer le nom du fichier archive.Si vous voulez créer l’une de ces archives gzippées, c’est aussi simple que de remplacer le X
drapeau avec un c
(à ccréer une archive). le v
et z
les drapeaux sont des options: voulez-vous une sortie? que diriez-vous de gzipping? Bien sûr, laisser F
; vous devrez donner le nom de fichier de la nouvelle archive (sinon, tout sera affiché en ligne de commande). Après cela, vous passerez à la commande tous les fichiers que vous souhaitez mettre dans l'archive:
$ tar cvzf archive.tar.gz index.html css js auth.php $ tar cvzf archive.tar.gx * .txt
Juste pour être complet, je mentionnerai que vous pouvez gzip des archives (ou d’autres fichiers) individuellement; lorsque vous le faites, gzip remplace le fichier d'origine par la version gzippée. Pour décompresser gzip, ajoutez le -ré
drapeau (pense réecompress).
$ gzip quelque chose.txt $ gzip -d quelque chose.txt.gz
Une autre chose que vous ferez souvent en tant que développeur web est de modifier les autorisations de fichiers. Vous pouvez définir trois autorisations et trois classes pouvant recevoir ces autorisations. Les permissions sont lis, écrire, et exécuter; les cours sont utilisateur, groupe, et autres. L'utilisateur est généralement le propriétaire du fichier, l'utilisateur qui a créé le fichier. Il est possible d'avoir des groupes d'utilisateurs et la classe de groupe détermine les autorisations pour les utilisateurs du groupe pouvant accéder au fichier. De manière prévisible, la classe des autres inclut tout le monde. Seuls l'utilisateur (propriétaire du fichier) et le super utilisateur peuvent modifier les autorisations de fichier. Oh, et tout ce que vous venez de lire va également aux annuaires.
Alors, comment pouvons-nous définir ces autorisations? La commande ici chmod
(change mode) Il y a deux façons de le faire. Tout d'abord, vous pouvez le faire avec une notation octale; c'est un peu cryptique, mais une fois que vous avez compris, c'est plus rapide. En principe, execute obtient 1 'point', write en obtient 2 et read en 4. Vous pouvez les ajouter pour donner plusieurs autorisations: read + write = 6, read + write + execute = 7, etc. Donc, pour chaque classe, vous Je vais obtenir ce numéro et les aligner pour obtenir un numéro à trois chiffres pour Utilisateur, Groupe et Autres. Par exemple, 764 donnera à l'utilisateur toutes les autorisations, donnera au groupe la capacité de lire et d'écrire et donnera à d'autres le droit de lire. Pour une meilleure explication, consultez l'article de Wikipedia.
Si vous avez du mal à vous souvenir de la notation octale, vous trouverez peut-être plus facile la notation symbolique (même si cela nécessite quelques touches supplémentaires). Dans ce cas, vous utiliserez les valeurs initiales «u», «g» et «o» pour l'utilisateur, le groupe et les autres respectivement (et «a» pour toutes les classes). Ensuite, vous utiliserez «r», «w» et «x» pour lire, écrire et exécuter. Enfin, vous utiliserez les opérateurs '+', '-' et '=' pour ajouter, soustraire et définir les autorisations de manière absolue. Voici comment vous utiliserez ces symboles: classe, opérateur, autorisations. Par exemple, u + rwx
ajoute toutes les autorisations à la classe d'utilisateurs; go-x
supprime la permission exécutable du groupe et des autres; a = rw
définit toutes les classes pour lire et écrire uniquement.
Pour utiliser toute cette théorie sur la ligne de commande, vous commencerez par la commande (chmod
), suivi des autorisations, suivi des fichiers ou des répertoires:
$ chmod 760 someScript.sh $ chmod u = rwx g + r o-x dataFolder
Si vous avez utilisé un contrôle de version tel que Git ou Subversion, vous savez à quel point un tel système est utile lorsque vous souhaitez partager un projet avec d'autres développeurs, ou simplement suivre les versions. Mais que faire si vous voulez envoyer à un ami des mises à jour pour un seul fichier? Ou si un autre développeur vous a envoyé par courrier électronique la nouvelle version d'un fichier que vous avez modifié depuis la dernière copie? Parfois, le contrôle de version à part entière est trop, mais vous avez toujours besoin de quelque chose de petit. Eh bien, la ligne de commande vous a couvert. Vous voudrez utiliser le diff
commander. Avant de modifier un fichier, copiez-le afin de conserver l'original. Après avoir mis à jour, lancez diff
; si vous n'envoyez pas la sortie dans un fichier, elle sera simplement affichée en ligne de commande, alors incluez un >
avec le nom de votre fichier de correctif:
$ cp originalFichier nouveauFile $ vim nouveauFichier #edit newFile $ diff originalFichier nouveauFichier 1c1 < This is a sentence. --- > Ceci est une phrase courte. $ diff originalFile newFile> changes.patch
Comme vous pouvez le voir, le diff
est juste un simple fichier texte qui utilise une syntaxe la diff
et pièce
commande comprendra. Pièce
? Eh bien, c'est la commande qui va de pair avec diff
. Si vous avez reçu un fichier de correctif, vous mettez à jour l'original comme suit:
correctif originalFile2 changes.patch
Et maintenant vous êtes tous mis à jour.
Sudo
n’est pas vraiment une commande comme les autres, mais c’est une commande qui vous conviendra à mesure que vous vous aventurez plus profondément dans le monde de la ligne de commande. Voici le scénario: il y a certaines choses que les utilisateurs réguliers ne devraient tout simplement pas être capables de faire en ligne de commande; ce n'est pas difficile de faire des dégâts irrévocables. Le seul utilisateur qui a le droit de faire tout ce qu'il veut est le super utilisateur ou l'utilisateur root. Cependant, il n’est pas vraiment sûr d’être connecté en tant que super utilisateur, à cause de tout ce pouvoir. Au lieu de cela, vous pouvez utiliser le sudo
(super vousser faire) pour vous donner les droits root pour une seule commande. Le mot de passe de votre compte utilisateur vous sera demandé et, lorsque cela vous sera fourni, le système exécutera la commande..
Par exemple, installer une gemme ruby nécessite des autorisations de super utilisateur:
$ gem install heroku ERREUR: lors de l'exécution de gem… (Errno :: EACCES) Autorisation refusée - /Users/andrew/.gem/ruby/1.9.1/cache/heroku-1.9.13.gem $ sudo gem installer heroku Mot de passe: Réussite heroku-1.9.13 installé
La plupart des commandes que vous utiliserez dans un shell bash sont assez flexibles et ont beaucoup de talents cachés. Si vous pensez qu'une commande peut faire ce que vous voulez, ou si vous voulez juste voir des instructions générales sur l'utilisation d'une commande, il est temps de consulter les manuels, ou les pages de manuel, comme on les appelle. Il suffit de taper homme
suivi de la commande que vous êtes curieux de savoir.
$ man ln
Vous remarquerez que les pages de manuel sont ouvertes dans Moins
.
Une fois la journée terminée, vous pouvez même éteindre votre ordinateur à partir de la ligne de commande. La commande à l'honneur est fermer
, et vous aurez besoin d'utiliser sudo
pour l'exécuter. Vous devrez donner à la commande un drapeau ou deux; les plus communs sont -h
arrêter le système (le fermer), -r
pour redémarrer, et -s
le mettre en sommeil. Ensuite, vous passerez le temps qu'il devrait arriver, soit comme à présent
, +nombreminutes
, ou yymmddhhmm
. Enfin, vous pouvez transmettre un message aux utilisateurs lorsque l'acte est sur le point d'être accompli. Si je voulais mettre mon ordinateur en veille en une demi-heure, je courais ceci:
$ sudo shutdown -s +30
Puisque la ligne de commande est une question d'efficacité, il est supposé être facile de répéter des commandes. Il y a quelques façons de le faire. Tout d'abord, vous pouvez utiliser le l'histoire
commande pour obtenir une liste numérotée d'un grand nombre de vos commandes récentes. Ensuite, pour exécuter l'un d'entre eux, il suffit de taper un point d'exclamation et le numéro d'historique.
$ histoire… 563 chmod 777 one.txt 564 ls -l 565 ls 566 cat one.txt… $! 565
Ceci est un exemple terrible, car je saisis plus de caractères pour utiliser l'historique que pour saisir à nouveau la commande. Mais une fois que vous combinez des commandes pour créer de longues chaînes, ce sera plus rapide..
Il est encore plus rapide d'accéder à la dernière commande et au dernier argument que vous avez utilisés. Pour la dernière commande, utilisez !!
; le cas d'utilisation habituel donné est l'ajout de sudo au début d'une commande. Pour le dernier argument, utilisez !$
; avec cela, passer dans un nouveau dossier est probablement l’exemple le plus courant. Dans ces deux cas, le shell affichera la commande complète afin que vous puissiez voir ce que vous exécutez réellement..
$ gem install datamapper ERREUR: lors de l'exécution de gem… (Errno :: EACCES) Autorisation refusée - /Users/andrew/.gem/ruby/1.9.1/cache/datamapper-1.0.0.gem $ sudo !! sudo gem install datamapper Mot de passe: Datamapper-1.0.0 installé avec succès $ mkdir lib $ cd! $ cd lib
Si vous êtes aussi passionné par la productivité que moi, l’idée d’utiliser autant que possible la ligne de commande devrait vous intéresser. Ce que je vous ai montré ici n’est qu’un échantillon des commandes intégrées… puis, il y en a beaucoup plus que vous ne pouvez en installer vous-même (regardez quelque chose comme le gestionnaire de paquets homebrew, par exemple). Mais peut-être que vous maîtrisez déjà la ligne de commande; Si oui, pouvez-vous partager un autre grand commandement avec le reste d'entre nous? Hit les commentaires!