112 votes

Meilleures pratiques et astuces pour la ligne de commande Linux ?

J'aimerais ouvrir une discussion qui permettrait d'accumuler vos meilleures pratiques et astuces en matière de ligne de commande Linux (CLI).

J'ai cherché une telle discussion pour partager le commentaire ci-dessous mais je n'en ai pas trouvé, d'où ce post.

J'espère que nous pourrons tous en tirer des leçons.

Vous êtes invités à partager vos astuces Bash, grep, sed, AWK, /proc et toutes les autres pratiques d'administration système Linux/Unix, Shell et de programmation pour le bénéfice de tous.

2voto

Timuçin Points 151

Vous pouvez faire des substitutions de chemin pour changer les répertoires en utilisant 2 arguments avec cd :

$ pwd
/foo/bar/blah
$ cd bar bat
/foo/bat/blah

2voto

shodanex Points 212

Utiliser attendre ! Cela rend le scriptage d'outils interactifs beaucoup plus facile. Par exemple, vous pouvez script une session telnet, ou une session ftp.

Faites votre travail sur la ligne de commande, et ensuite juste script. Voici un exemple brut, pour se connecter à une carte de développement, récupérer une image du noyau, et la mettre en flash.

#!/bin/bash
# scripted telnet
IP=$1
IMAGE="platform-AT91SAM9260/images/linuximage"
cp $IMAGE /home/cynove/public_html/
expect -b - <<EndOfTelnet
spawn telnet $IP
expect "login"
send "root\r"
expect "#"
set timeout -1
send "wget -O kimage http://192.168.10.2/~cynove/linuximage\r"
expect "#"
send "ls -al kimage\r"
expect "kimage"
send "flashcp -v kimage /dev/mtd1\r"
expect "Erasing"
expect "#"
send "exit\r"
EndOfTelnet

2voto

Charles Roper Points 8928

J'aime bien les commandes suivantes qui vous donnent Google et Google books dans le terminal

#!/bin/sh

q=$1
w=$2
e=$3
r=$4
t=$5

open "http://www.google.com/search?q=$q+$w+$e+$r+$t&ie=utf-8&oe=utf-8:en-GB:official&client=firefox-a"

et Google books en terminal

#!/bin/sh

q=$1
w=$2
e=$3
r=$4
t=$5

open "http://books.google.com/books?q=$q+$w+$e+$r+$t"

J'ai les éléments suivants dans .bashrc

alias gb='/Users/Mas/bin/googlebooks'                                                                               

alias g='/Users/Mas/bin/google'

J'ai les permissions 777 pour le scripts à /bin/googleScripts/.

Exemples

gb Strang null space            // searches books which have the words

g Lordi Hard Rock Eurovision   // Googles websites which have the words

Ce serait cool d'avoir les titres des livres dans le terminal pour ne pas avoir besoin d'un navigateur externe.

De même, il serait utile d'avoir les urls des recherches Google directement dans le Terminal afin de pouvoir traiter les données dans le Terminal.

2voto

RamyenHead Points 311

L'une de mes astuces cli préférées est de sortir de la CLI.

xdg-open .

Cela ouvre un navigateur de fichiers GUI avec le répertoire actuel. C'est pour Linux. Utilisez "START ." pour Windows et "open ." pour OS X)

Avant d'apprendre à utiliser echo, j'avais peur d'utiliser rm avec des jokers, alors j'ouvrais xdg le dossier en cours et supprimais les fichiers dans l'interface graphique. J'avais également peur de la commande tar, une autre raison d'utiliser xdg-open.

Et pourquoi pas un moyen de revenir au monde du CLI ?

Double-cliquez (ou triple-cliquez) sur la barre d'emplacement de votre navigateur de fichiers GUI et exécutez :

cd "$(xsel)"

c'est d'ici . (ou utiliser open-terminal-here avec nautilus)

2voto

La sécurité en ligne de commande

Les administrateurs système expérimentés font des choses qui semblent paresseuses ou idiosyncratiques au premier abord, mais qui leur sauvent la mise une fois de temps en temps.

Ne tapez pas ce que vous pouvez coller

Préférez le copier-coller à la saisie, que vous copiez à partir d'un livre d'exécution, d'un manuel, ou simplement plus haut dans la fenêtre du terminal. Il est trop facile de se tromper d'argument, de commutateur, de commande, de nom de fichier, etc., surtout lorsque vous êtes en train d'examiner des systèmes, de faire un rapport d'état lors d'une conférence téléphonique et d'essayer de trouver la cause profonde d'un problème.

Coller la ligne de commande est une bonne habitude. Nous devrions l'activer en a) rendant tout scriptable et b) en mettant les commandes dans les manuels au lieu des captures d'écran.

Différencier les fenêtres

"Oups, mauvais Shell !" Derniers mots célèbres. Trouvez un moyen de séparer les Windows qui se connectent à des environnements différents. Donnez aux environnements de production une couleur de fond différente, ou mettez-les sur un moniteur différent.

Ne vous fiez pas au chemin

Un vieux, mais bon, est de faire un Shell Shell appelé "ls" dans votre répertoire. Faites-le suid root, faites-lui créer une copie suid root de /bin/bash dans un répertoire caché de votre propre répertoire, puis supprimez-le et exécutez le vrai /bin/ls. Tout ce que vous avez à faire ensuite est de demander à un administrateur naïf d'exécuter "ls -la" dans votre répertoire et pouf vous avez une racine Shell.

Les vrais administrateurs n'ont jamais de "." dans leurs chemins, exactement pour éviter ce genre d'attaque sournoise. Vous ne devriez pas non plus. Ajouter "./" à l'avant des exécutables proches est une bonne habitude à prendre.

Ne déplacez pas les fichiers. Copiez puis supprimez

"mv oldname newname" est dangereux. Il peut détruire deux fichiers à la fois. Il est préférable de faire une séquence. Copiez le fichier d'origine vers la destination, vérifiez s'il est correct, puis supprimez l'original. Mieux encore, attendez d'avoir totalement terminé le processus, puis supprimez le fichier d'origine. Mieux encore, faites une copie sûre du fichier que vous vous apprêtez à modifier. L'objectif est de rendre tout cela complètement réversible, afin de pouvoir toujours revenir à un état connu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X