À propos de Linux

supposition

Sujet principal

Caractéristiques de Linux

Kernel et userland

Le logiciel est divisé en logiciel de base et logiciel appliqué. Le logiciel de base est divisé en deux.

  1. Noyau Le noyau est le cœur du système d'exploitation et est responsable de la plupart des fonctions essentielles, telles que l'interaction directe avec le matériel. Le noyau est chargé d'absorber les différences matérielles et de permettre aux programmes de s'exécuter de la même manière sur n'importe quel matériel.

2, terrain utilisateur La partie autre que le noyau nécessaire au fonctionnement du système d'exploitation. Fait référence aux logiciels de base tels que les stems de fichiers, les commandes d'opération de fichiers et les shells.

coquille

Le shell comprend et exécute la commande saisie. Le shell lui-même a deux fonctions principales.

  1. Accepter l'entrée de commande 2, exécution du script shell Un script shell permet d'automatiser l'entrée de commande. Créez une ligne de commande par ligne dans un fichier. En exécutant le script shell créé, l'exécution des commandes peut être automatisée. Vous pouvez également exécuter le script shell que vous avez créé au démarrage du serveur ou toutes les quelques heures.

Commandes de base

Parcourir les fichiers et répertoires (ls)

#Format
ls [option][Fichier]

#option
-a
// .Tous les fichiers cachés commençant par (TOUS) sont sortis

-l
//Sortie au format long

-t
//Tri et sortie en fonction de la dernière heure de mise à jour (heure)

-r
//Trier et sortir dans l'ordre inverse

-la
//Affichage au format long, y compris les fichiers cachés

-lt
//Liste par tri par heure de modification du fichier

* </ code> indique une chaîne de caractères arbitraire, et quel que soit le nombre de caractères entrés entre eux, il sera affiché comme résultat de la recherche. Exemple) Affichage d'une liste de fichiers se terminant par conf

$ cd /etc
$ ls *.conf

? </ Code> signifie que le nombre de caractères du nom de fichier est connu.

$ cd /etc
$ ls ???.conf

Copier le fichier (cp)

$ cp [option]Copier la source Copier la destination

-i
//Confirmez s'il faut écraser le fichier lors du traitement. Il est utilisé pour s'excuser et empêcher l'écrasement.

-r
//Copiez le répertoire.-Avec l'option r, vous pouvez copier dans tous les fichiers et répertoires du répertoire.

-p
//Enregistrez les informations du fichier d'origine. Lorsque vous copiez avec la commande cp, le nouveau fichier sera copié avec tout le contenu souhaité. Utilisez cette option lorsque vous souhaitez effectuer une copie tout en préservant les anciennes informations sans créer de nouveau contenu.

Déplacer le fichier (mv)

$mv déplacer le fichier source déplacer le fichier de destination

-i
//Confirmer lors du traitement. Écrasement de fichier, etc.

-f
//Exécutez le processus de force.

Supprimer le fichier (rm)

$nom de fichier rm

-i
//Confirmer lors du traitement. Écrasement de fichier, etc.

-f
//Exécutez le processus de force.

-r
//Ciblez la dictée. Supprimez les fichiers et les répertoires du répertoire.
  • Sur les systèmes d'exploitation UNIX, y compris Linux, les fichiers une fois supprimés ne peuvent pas être restaurés. De plus, la commande rm ne peut pas supprimer un répertoire (sans options).

Créer un répertoire (mkdir)

$nom du répertoire mkdir

#option
-p
//Il crée également un répertoire supérieur du répertoire spécifié.

#Lors de la création de 3 répertoires à la fois
$ mkdir -p dir1/dir2/dir3

Supprimer le répertoire (rmdir)

$nom du répertoire rmdir

#option
-p
//Supprimez tous les répertoires jusqu'à la hiérarchie spécifiée. Si la commande rmdir est exécutée sans options, seul le répertoire de niveau le plus bas est supprimé. Cependant, dans les deux cas, le répertoire cible doit être vide.

#Lors de la création de 3 répertoires à la fois
$ mkdir -p dir1/dir2/dir3

Afficher le contenu du fichier (chat)

$nom de fichier cat

-n
Affichage avec les numéros de ligne ajoutés.

Affichage à l'aide d'un téléavertisseur

$plus de nom de fichier

#Commande suivante
Espace Aller à la page suivante
b Revenir à l'écran précédent
f Aller à l'écran suivant
/Recherche de mots pour un mot. Sauter les résultats de la recherche avec la touche n
q Commande Quitter le téléavertisseur (quitter)

$moins de nom de fichier

#Commande suivante
Espace Aller à la page suivante
b Revenir à l'écran précédent
f Aller à l'écran suivant
↑ Aller à la ligne précédente
↓ Aller à la ligne suivante
/Recherche de mots pour un mot. Sauter les résultats de la recherche avec la touche n
q Commande Quitter le téléavertisseur (quitter)

Rechercher un fichier (rechercher)

$trouver le chemin-nom Nom du fichier

Afficher le chemin de commande (lequel)

$quel nom de commande
  • Si le répertoire dans lequel la commande existe n'est pas inclus dans la variable d'environnement PATH, le résultat de cette commande sera une erreur. Par exemple, le chemin d'accès à une commande qui requiert des privilèges d'administrateur peut ne pas être confirmé par la commande which car il n'est pas défini par un utilisateur général.

Expressions régulières et tuyaux

commande grep

La commande grep récupère les données du fichier. Vous pouvez également rechercher des données saisies à partir de l'entrée standard en réglant | grep </ code>.

$ grep [option]Conditions de recherche[Fichier spécifié]

#option
-e
//Traitez les chaînes de caractères comme des modèles de recherche.

-i
//Ne faites pas la distinction entre les majuscules et les minuscules dans le modèle de recherche et dans le fichier d'entrée.

-v
//Sélectionnez les lignes qui ne correspondent pas au modèle de recherche.

Expressions régulières

#Symboles et significations utilisés dans les expressions régulières

^Représente le début d'une ligne
$Représente la fin d'une ligne
.Signifie n'importe quelle lettre
*Signifie 0 ou plusieurs répétitions du caractère précédent
[...] ..Signifie n'importe quelle lettre dans
[^...] ..Signifie que le caractère de
\ Échapper aux symboles d'expressions régulières
#Exemple d'utilisation d'expressions régulières

^Lignes commençant par un a
b$Lignes se terminant par b
a.b Il y a un caractère entre a et b
[ab]ab a ou b suivi de ab(aab,bab)
[^ab]ab a ou ne commençant pas par b (not) suivi de ab (ex: xab,zab etc.)

Commande de base 2

Modifier l'horodatage du fichier (toucher)

Le fichier a toujours un horodatage (date de la dernière modification). L'horodatage peut être confirmé en ajoutant l'option -l de la commande ls. La commande tactile modifie l'heure de la dernière mise à jour. Si le fichier avec le nom de fichier spécifié n'existe pas, un fichier vide est créé.

$ touch [Nom de l'option]nom de fichier

#option
-t
//Spécifiez l'heure de modification du fichier.

Obtenir une partie du fichier (tête, queue)

$ head [Nom de l'option]nom de fichier

#option
-n lignes
//Sort la ligne spécifiée depuis le début en standard.

-c octets
//Sort les octets spécifiés depuis le début en standard.
  • Head sort le début du fichier en standard. Si aucune option n'est ajoutée, les 10 premières lignes sont sorties en standard.
$ tail [Nom de l'option]nom de fichier

#option
-n lignes
//Sort la ligne spécifiée de la fin en standard.

-c octets
//Sort les octets spécifiés à partir de la fin en standard.

-f
//Les changements peuvent être surveillés en temps réel.
  • Tail affiche la fin du fichier en standard. Si aucune option n'est ajoutée, les 10 dernières lignes sont sorties en standard.

Tri des fichiers texte

$ sort [option]nom de fichier

#option
-r
//Trier dans l'ordre inverse.

-k n
//Triez les données dans la nième colonne.

-n
//Trier comme un nombre.

Tri des données dans la colonne n (-k)

Avec l'option -k, spécifiez le numéro de colonne à utiliser comme clé de tri.

$ sort -k 2 score

Effacer les lignes en double (uniq)

Si le même contenu que la ligne précédente est trouvé à l'aide de la commande uniq, la ligne cible n'est pas sortie. Les lignes consécutives avec le même contenu peuvent être combinées en une seule ligne.

$nom de fichier uniq

Remplacement de la chaîne de caractères (tr)

Vous pouvez utiliser la commande tr pour remplacer les données de l'entrée standard caractère par caractère (TRanslate).

$tr chaîne de caractères 1 chaîne de caractères 2

Comparaison de fichiers (diff)

$ diff [option]Fichier 1 Fichier 2

#option
-c
//Sortez la différence de format de diff de contexte.

-u
//Sortez la différence au format diff unifié.

éditeur vi

Lorsque vous ouvrez un fichier avec vi, cela s'appelle le mode commande, et il existe des modes qui vous permettent de déplacer des lignes et des pages par pagination, des opérations d'édition telles que la suppression de lignes, la copie, le découpage et le collage, et le mode d'insertion qui accepte la saisie de caractères. y a-t-il.

Fichier ouvert

$ vi [nom de fichier]

Fermer le fichier

Pour fermer un fichier ouvert à l'aide de la commande vi, appuyez sur la touche ESC </ code>, puis tapez : q </ code>.

  • Abréviation pour quitter

Enregistrez le fichier

Pour enregistrer le fichier ouvert à l'aide de la commande vi, appuyez sur la touche ESC </ code> puis tapez : w </ code>.

  • Abréviation pour écrire

Enregistrez le fichier et quittez

Pour fermer le fichier après l'avoir enregistré avec la commande vi, appuyez sur la touche ESC </ code> puis tapez : wq </ code>.

Forcer la fermeture sans enregistrer le fichier

Pour fermer un fichier ouvert avec la commande vi sans l'enregistrer, appuyez sur la touche ESC </ code> puis tapez : q! </ Code>.

Entrez du texte

Le mode d'insertion pour saisir une chaîne de caractères doit être commuté sur le mode d'insertion avec une commande. Il existe différentes commandes pour passer en mode insertion, mais pour entrer une chaîne de caractères, entrez la commande i </ code> ou la une commande </ code>.

  • Si vous faites une erreur, vous pouvez supprimer le caractère avant le curseur avec Delete ou BS.

Déplacez le curseur

Lors de la modification d'un fichier texte, vous remarquerez peut-être une faute de frappe ou apportez des modifications plus tard, vous souhaiterez peut-être corriger le texte que vous avez déjà saisi. S'il y a un caractère à ajouter, déplacez le curseur à l'endroit que vous souhaitez modifier et entrez le caractère.

*** Déplacez le curseur à gauche et à droite *** Entrez h </ code> vers le bas pour déplacer le curseur vers la gauche avec vi ou l </ code> pour déplacer le curseur vers la droite.

*** Déplacez le curseur de haut en bas *** Vous pouvez déplacer le curseur vers le haut et vers le bas jusqu'à j </ code> vers le bas et k </ code> vers le haut.

*** Aller au début d'une ligne à l'aide d'une commande *** Vous pouvez vous déplacer au début de la ligne courante en exécutant la commande 0 </ code>.

*** Aller à la fin de la ligne en utilisant la commande *** Vous pouvez vous déplacer à la fin de la ligne actuelle en exécutant la commande $ </ code>.

Déplacer page par page

La commande vi peut éditer des fichiers petits à grands. Utilisez la commande pour déplacer l'écran d'avant en arrière par page (nombre de lignes spécifié par défaut) pour une édition rapide.

Pour passer à la page suivante, utilisez la commande "Ctrl" f </ code>, et pour passer à la page précédente, utilisez la commande "Ctrl" b </ code>.

Déplacer la ligne spécifiée

Spécifiez le numéro de ligne après : </ code>. Par exemple, si vous souhaitez passer à la 10e ligne, entrez : 10 </ code>.

*** Aller au document en utilisant la commande *** Vous pouvez revenir au début du document, c'est-à-dire à la première ligne en exécutant la commande gg </ code>.

*** Passer à la fin du document à l'aide de la commande *** Vous pouvez vous déplacer à la fin du document, c'est-à-dire à la dernière ligne en exécutant la commande G </ code>.

Couper et coller des caractères

Exécuter en mode commande.

x 1 caractère supprimé
dd Supprimer une ligne
yy copie d'une ligne
copie de ligne nyy n
p Coller sur la ligne suivante ou suivante du caractère du curseur
P Coller avant ou avant le caractère du curseur
u Annuler le couper-coller une fois (annuler)

Ligne couper et coller

Pour copier plusieurs lignes, spécifiez le nombre de lignes que vous souhaitez copier yy </ code>.

Si vous faites une erreur en éditant le texte et en l'annulant, entrez la commande u </ code>.

Remplacer et rechercher

Pour un fichier volumineux qui ne saisit pas l'image entière, il est extrêmement difficile d'atteindre la position cible en n'utilisant pleinement que les commandes de déplacement du curseur et de déplacement de la page. Vous pouvez vous déplacer rapidement vers l'emplacement souhaité en utilisant la commande pour rechercher une chaîne de caractères dans un fichier texte. Vous pouvez également utiliser la commande replace pour rechercher rapidement une chaîne de caractères dans une phrase et la remplacer par une autre chaîne de caractères.

/Rechercher une chaîne de caractères Rechercher une chaîne de caractères
n Nouvelle recherche vers le bas
N Rechercher à nouveau vers le haut
:Ligne cible s/Chaîne de recherche/Chaîne de remplacement/Option remplacer la chaîne de caractères

#Option de remplacement
:ns/old/nouveau Remplacer le premier ancien de la nième ligne par neuf et terminer
:ns/old/new/g Remplacez tous les anciens de la nième ligne par des
:%s/old/new/g Remplacez le terme de recherche pour l'ensemble du fichier
:%s/old/new/gc Demander une confirmation à chaque remplacement
  • Si g </ code> n'est pas spécifié, il ne sera remplacé qu'une fois par ligne.

Groupes et utilisateurs

Un compte utilisateur est requis pour utiliser Linux. Vous pouvez utiliser Linux en vous connectant en tant qu'utilisateur. C'est parce que l'utilisateur connecté a le droit d'utiliser le système appelé Linux. Vous pouvez utiliser des groupes pour regrouper plusieurs utilisateurs. En définissant correctement les groupes et les utilisateurs, il est possible de donner la permission de visualiser / modifier et d'exécuter des fichiers et des répertoires, des programmes arbitraires, des scripts shell, etc. uniquement aux utilisateurs nécessaires. La commande de création / modification / suppression de groupes et d'utilisateurs étant une commande administrative, elle doit être exécutée par l'administrateur root user </ code>.

Créer un utilisateur

$useradd nom d'utilisateur

#option
-c commentaire
//Spécifiez un commentaire (chaîne de caractères).

-g nom du groupe
//Spécifiez le nom du groupe principal.

-Nom du groupe G
//Spécifiez un groupe auxiliaire.

-d
//Spécifiez le répertoire de base.

-s
//Spécifiez la coque.

-u numéro d'identification de l'utilisateur
//Spécifiez le numéro d'identification de l'utilisateur.

Changer de compte utilisateur

$nom d'utilisateur usermod

#option
-c commentaire
//Modifiez le commentaire (chaîne de caractères).

-g nom du groupe
//Modifiez le nom du groupe principal.

-Nom du groupe G
//Changer de groupe auxiliaire.

-l Nom d'utilisateur
//Modifiez un nom d'utilisateur existant.

-u numéro d'identification de l'utilisateur
//Changer le numéro d'identification de l'utilisateur.

Supprimer l'utilisateur

$nom d'utilisateur userdel

#option
-r
//Supprimer le répertoire personnel.

Créer un groupe

Utilisez des groupes pour gérer ensemble les privilèges de plusieurs utilisateurs. L'utilisateur appartient toujours à un ou plusieurs groupes et le groupe auquel l'utilisateur appartient principalement est appelé groupe principal. En plus des groupes fournis depuis le début, l'administrateur système peut définir des groupes selon les besoins.

$groupadd nom d'utilisateur

#option
-g Numéro d'identification du groupe
//Spécifiez le numéro d'identification du groupe.

Modifier les informations d'enregistrement de groupe

$ groupmod [-g gid] [-n new-group-name]Groupe à changer

#option
-n
//Spécifiez lors de la modification du nom de groupe existant.

-g
//Modifiez l'ID de groupe existant. Les ID de groupe inférieurs à 100 ne peuvent pas être spécifiés car ils sont utilisés par le système.

Supprimer le groupe

nom du groupe groupdel

Utilisateurs et groupes disponibles

Linux fournit des utilisateurs et des groupes auxquels ils appartiennent afin qu'ils puissent utiliser le système immédiatement après l'installation. Vous pouvez ajouter plusieurs utilisateurs et groupes selon vos besoins.

Utilisateurs et groupes généraux

Vous avez besoin d'un compte pour vous connecter à Linux. Lorsqu'un compte est créé, un groupe portant le même nom que le nom d'utilisateur est créé et l'utilisateur est enregistré dans le système s'il appartient au groupe d'utilisateurs. Les groupes permettent de regrouper plusieurs utilisateurs. Les utilisateurs individuels peuvent être regroupés par service ou autre unité. En utilisant des groupes, vous pouvez définir des droits d'accès pour les répertoires sur le système et créer des répertoires auxquels seuls les utilisateurs appartenant à un groupe spécifique peuvent accéder, ou seuls les utilisateurs appartenant à un groupe spécifique peuvent devenir des utilisateurs root. L'opération devient possible.

utilisateur root

L'utilisateur root est un utilisateur spécial qui peut modifier les paramètres système, installer et supprimer des programmes, et créer et supprimer des utilisateurs sans aucune restriction. L'utilisateur root diffère des utilisateurs généraux en ce sens qu'il peut accéder aux répertoires de tous les utilisateurs et lire / écrire le contenu indépendamment de leurs droits d'accès. Si vous pouvez vous connecter en tant qu'utilisateur root de cette manière, vous pouvez effectuer toutes les opérations, vous devez donc gérer strictement le compte de l'utilisateur root.

commande su

La commande su est une commande qui permet à un utilisateur déjà connecté en tant qu'autre utilisateur de devenir temporairement un autre utilisateur. Lors de l'exécution de la commande su, démarrez le shell en tant qu'utilisateur root si aucun utilisateur n'est spécifié comme option. Si vous exécutez la commande su sans aucune option, connectez-vous en tant qu'utilisateur root sans changer le répertoire actuel. Pour changer le répertoire courant en répertoire personnel de root et vous connecter, exécutez "su-" ou "su --root" pour changer le répertoire courant, puis connectez-vous en tant qu'utilisateur root. Si vous vous connectez en tant qu'utilisateur root, vous pouvez exécuter des commandes pour la gestion du système. Si plusieurs personnes gèrent un système Linux et travaillent en se connectant directement en tant qu'utilisateur root, seul l'historique en tant qu'utilisateur root reste, et non l'historique de qui a fait quoi. Si vous passez d'un utilisateur général à un utilisateur root, vous pouvez immédiatement voir quand vous avez commencé à travailler en tant qu'utilisateur root. Compte tenu de la sécurité et de la gestion, il est souhaitable de se connecter en tant qu'utilisateur général, d'obtenir les privilèges d'utilisateur root et de travailler sur le système.

su
su - [Utilisateur]

#option
su -(Ou su- root)
//Peut être l'utilisateur root.

su - user
//Peut être l'utilisateur spécifié.

Commande sudo pour exécuter des commandes en tant qu'utilisateur root

Vous pouvez utiliser la commande sudo pour exécuter des commandes avec des privilèges de super utilisateur (root). En exécutant des commandes en utilisant sudo si nécessaire, ce qui ne peut pas être fait avec les privilèges utilisateur pendant le travail normal, il est possible d'exécuter des paramètres et des programmes qui nécessitent des privilèges root sans passer l'utilisateur à root avec la commande su. .. Lorsque la commande sudo est exécutée avec l'option -u, la commande est exécutée par n'importe quel utilisateur. Si vous exécutez la commande sudo sans aucune option, vous pouvez exécuter la commande avec les privilèges root. Dans CentOS, la commande sudo ne peut pas être utilisée avec les paramètres par défaut. Pour utiliser la commande sudo, vous devez enregistrer l'utilisateur dans un groupe avec des privilèges de super utilisateur (root) appelé le groupe wheel. Les paramètres sudo rendent la commande sudo accessible aux utilisateurs en éditant le fichier / etc / sudoers. Le fichier / etc / sudoers peut être édité en exécutant la commande vicudo.

commande sudo
//Exécuter des commandes avec des privilèges de super utilisateur (root)

#option
-u utilisateur
//Exécutez la commande en tant qu'utilisateur spécifié.

Droits des utilisateurs et droits d'accès

L'ID utilisateur et l'ID de groupe du créateur du fichier sont le propriétaire et le groupe propriétaire du fichier. Le propriétaire et le groupe propriétaire sont des attributs importants pour les informations sur les fichiers. Le propriétaire peut être changé avec la commande chown, et le groupe propriétaire peut être changé avec la commande chgrp.

Changement de propriétaire

Utilisez la commande chown pour changer le propriétaire d'un fichier.

utilisateur chown[.groupe]annuaire
utilisateur chown[.groupe]Fichier

#option
-R
//Répertoires cibles. Parcourez et modifiez de manière récursive les répertoires et les fichiers d'un répertoire.
  • Vous devez être un utilisateur root pour changer d'utilisateurs et de groupes. Les répertoires et les fichiers peuvent être modifiés sans distinction. Vous pouvez également utiliser: pour séparer les utilisateurs et les groupes.

Changer de groupe propriétaire

répertoire du groupe chgrp
fichier de groupe chgrp

#option
-Ciblez le répertoire R. Changer de manière récursive les répertoires et les fichiers d'un répertoire.

Accès qui peut être défini sur le fichier

Les autorisations d'un fichier peuvent être définies à trois niveaux: l'utilisateur qui possède le fichier, l'utilisateur qui exclut le propriétaire du fichier du groupe de propriété de fichier et les autres utilisateurs. Le fichier dispose de trois autorisations de lecture, d'écriture et d'exécution divisées par l'utilisateur pour chacun des trois niveaux. Utilisez la commande chmod pour changer le mode du fichier.

#Exemple: d rwx rwx rwx

d  rwx       rwx         rwx
Utilisateur appartenant Groupe appartenant à Autre

#sens
r Lire
w Ecrire
x Exécuter ou déplacer le répertoire

rwx peut être spécifié pour les utilisateurs, les groupes et les trois autres. Si r est affiché, le fichier peut être lu, et si w est affiché, le fichier peut être écrit. Si x est affiché, le fichier peut être exécuté en tant que programme, ou s'il s'agit d'un répertoire, il peut être déplacé vers le répertoire.

Changement des droits d'accès

mode chmod[,mode]...annuaire
mode chmod[,mode]...Fichier
répertoire du mode octadécimal chmod
fichier en mode octadécimal chmod

#option
-Ciblez le répertoire R. Changez le répertoire dans le répertoire de manière récursive (s'il y a un répertoire dans le répertoire, suivez tous les répertoires qu'il contient).

Définissez le mode de fichier pour posséder des utilisateurs, posséder des groupes et d'autres utilisateurs. Il existe deux manières d'écrire la spécification de mode.

  1. Écrivez plusieurs formats de mode et spécifiez-les séparés par des virgules. Spécifiez le niveau de chaque utilisateur avec 2 ou 8 chiffres décimaux.

Groupe d'utilisateurs et autres Autorisation r w x r w x r w x Huitième chiffre 4 2 1 4 2 1 4 2 1 Valeur de consigne Valeur totale Valeur totale Valeur totale

Le mode peut être réglé sur r (lecture), w (écriture), x (exécuter ou modifier le répertoire) pour u (utilisateur propriétaire), g (groupe propriétaire), o (autres utilisateurs), etc. Ajouter (+) ou annuler (-). Pour spécifier la même autorité pour u, g et o, spécifiez a.

Mode de création de fichier

Lorsqu'un nouveau fichier est créé, une autorisation telle que 644 ou 644, qui est une autorisation spécifiée pour chaque utilisateur, est définie et le fichier est créé. Vous pouvez utiliser la commande umask pour contrôler la création de fichiers avec des autorisations spécifiées.

umask [Valeur de masque du huitième mode]

Script shell

Les commandes entrées par le shell sont dans un format qui peut être exécuté séquentiellement par le script shell. En l'appliquant, il est possible d'automatiser le travail par entrée de commande.

Shell et script shell

coquille Shell signifie coquille. Lors de l'utilisation des fonctions fournies par le noyau, il est nécessaire de fonctionner de manière interactive avec le système d'exploitation. Le shell a son nom car il entoure le système d'exploitation, en particulier le noyau, et fournit des fonctionnalités interactives. Le shell a le rôle d'accepter l'entrée d'une commande, d'exécuter la commande et de renvoyer le résultat à l'utilisateur d'entrée.

*** Script Shell *** Considérez le flux de compression du répertoire / etc et du répertoire / home et de les copier sur un serveur externe.

# tar cvzf 120626-etc.tar.gz /etc
# tar cvzf 120626-home.tar.gz /home
# scp 120626-etc.tar.gz [email protected] ~/backup
# scp 120626-home.tar.gz [email protected] ~/backup

Il est compliqué de le saisir à chaque fois que vous l'exécutez. Pour automatiser ce traitement répétitif, il existe une méthode pour écrire un script shell et l'exécuter. Créez un fichier nommé system-backup.sh, écrivez-le et exécutez system-backup.sh pour exécuter les commandes écrites dans le fichier dans l'ordre.

#!/bin/bash

Créer un script shell

Le script shell est écrit en texte.

$ vi lsdate.sh

Écrivez le script suivant sur vi et enregistrez-le.

#!/bin/bash
ls
date

・ Désignation de la coque J'ai écrit #! / Bin / bash sur la première ligne. La première ligne du fichier décrit le type de shell à utiliser et sa position de commande. Entrez les commandes à exécuter sur la deuxième ligne et les suivantes ligne par ligne.

・ Modifier les autorisations Pour exécuter le script shell créé, vous devez modifier les autorisations pour donner au fichier l'autorisation d'exécution. Vérifiez l'autorisation d'accès au fichier avec la commande ls.

$ ls -l sdate.sh
-rw-rw-r--. 1 tooyama tooyama 

Utilisez la commande chmod pour accorder l'autorisation d'exécution.

$ chmod u+x lsdate.sh
$ ls -l lsdate.sh
-rwxrw-r--. 1 tooyama tooyama

La propriété dispose désormais d'une autorisation d'exécution. Si vous donnez l'autorisation d'exécution au script shell, exécutez-le immédiatement.

$ ./lsdate.sh

./ est une spécification de chemin. (Exécutez lsdate.sh dans le répertoire courant) Lors de l'exécution de ls ou cp, il n'est pas nécessaire de spécifier un tel chemin car il se trouve dans le chemin. Cette fois, j'ai spécifié le chemin pour exécuter un script shell spécifique dans le répertoire courant. Vous pouvez voir que la commande ls et la commande date décrites dans lsdate.sh ont été exécutées dans l'ordre.

commentaire

Un commentaire est un commentaire écrit sur le programme. Dans le cas du shell, la ligne commençant par # est reconnue comme un commentaire, et le commentaire est ignoré lorsque le programme est exécuté. Les commentaires sont souvent utilisés pour décrire ce qu'un programme écrit par un programmeur fait, ou pour désactiver temporairement (commenter) un processus spécifique.

$ vi lsdate.sh
#!/bin/bash
ls
#date

Exécuter le script shell

$ ./lsdate.sh

Vous pouvez voir que la sortie de la commande de date a disparu.

commande echo

La commande echo est une commande qui génère la chaîne de caractères donnée en argument à la sortie standard.

echo [option]Chaîne

#option
-n
//Supprimez les sauts de ligne. La sortie normale est interrompue, mais pas avec cette option.
$ echo Message test

variable

Définissez une valeur sur abc dans la fonction shell et vérifiez le contenu avec la commande echo.

$ abc=123
$ echo $abc
123
(Afficher le contenu de abc)

Affectez 123 à la variable abc. Dans bash, vous pouvez utiliser des variables de tableau à une dimension. Placez l'élément entre []. Pour afficher le contenu d'une variable de tableau, placez la variable de tableau entre {} après le $.

$ abc[0]=123
$ abc[1]=456
$ echo ${abc[0]}
123
$ index=1
$ echo ${abc[$index]}
456

*** Shell et variables d'environnement *** Il existe deux types de variables dans le shell. Variables shell et variables d'environnement. Les variables de shell ne sont valides que dans le shell que vous exécutez. Les variables d'environnement sont également valides dans les commandes exécutées à partir d'elles. Les variables d'environnement peuvent être créées à partir de variables shell.

$ export abc
$ export xyz=234

La première commande crée une variable d'environnement appelée abc. Aucune valeur n'est affectée à abc. La deuxième commande crée une variable d'environnement appelée xyz. 234 est attribué à xyz. Ensuite, utilisez les deux scripts BBB.sh et CCC.sh pour vérifier la différence de comportement entre les variables shell et les variables d'environnement.

$ cat BBB.sh
#!/bin/bash
xxx=123                  #Assignez 123 à la variable shell xxx
export yyy=234           #Remplacez 234 par la variable d'environnement yyy
echo xxx=$xxx in BBB.sh  #Afficher la valeur de la variable xxx
echo yyy=$yyy in BBB.sh  #Afficher la valeur de la variable yyy
./CCC.sh                 #CCC.courir sh

$ cat CCC.sh
#!/bin/bash
echo xxx=$xxx in CCC.sh  #Afficher la valeur de la variable xxx
echo yyy=$yyy in CCC.sh  #Afficher la valeur de la variable yyy

$ ./BBB.sh
xxx=123 in BBB.sh
yyy=234 in BBB.sh
xxx= in CCC.sh
yyy=234 in CCC.sh

Puisque yyy est une variable d'environnement, la valeur est affichée car elle est héritée jusqu'à CCC.sh.

commande de lecture

La commande read lit les données à partir de l'entrée standard. Si la variable contient déjà des données, elle sera remplacée par de nouvelles données.

lire le nom de la variable
$ echo $abc
123

$ read abc
aaa
(Entrez quelque chose)

$ echo $abc
aaa
(Le contenu de la variable shell abc est remplacé)

Variables shell

Pour afficher une liste de variables shell, utilisez la commande set. Si vous souhaitez le supprimer, utilisez unset.

$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:intera
BASH_ALIASES=()
$ set | grep ^abc
abc=aaa
(Vérifiez uniquement les variables shell commençant par abc)
$ unset abc
(Supprimer la variable shell abc)
$ set | grep ^abc

Variable d'environnement

Utilisez la commande env pour afficher une liste des variables d'environnement actuelles. Pour supprimer la variable d'environnement enregistrée, utilisez la commande unset.

$ env
ABC=999999
HOSTNAME=host1.alpha.jp
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000

$ env | grep ^ABC
ABC=999999
$ unset ABC
(Supprimer la variable d'environnement ABC)
$ env | grep ^ABC

Guillemets

Dans les scripts shell, les chaînes peuvent être placées entre guillemets. Les guillemets disponibles incluent '(guillemet simple), "(guillemet double),` (guillemet arrière), et la gestion de la chaîne entourée par le guillemet utilisé est différente. S'il y a une variable avec "" pour référence dans la chaîne de caractères entourée d'un fort simple, la variable n'est pas développée car "" est également reconnue comme une chaîne de caractères. Pour les guillemets tabulaires, les variables avec "" entre guillemets sont des chaînes développées. La chaîne de caractères entre guillemets est interprétée comme une commande, et s'il y a une variable avec "" à ce moment, la commande est exécutée après l'avoir développée.

$ ABC=123
$ echo 'Value of ABC is $ABC.'
Value of ABC is $ABC.
($ABC a été reconnu comme un personnage et affiché tel quel)
$ echo "Value of ABC is $ABC."
Value of ABC is 123.
($ABC a été reconnu comme une variable et le contenu 123 a été développé)
$ XYZ=`date`;
$ echo"It is $XYZ now."
($XYZ contient le résultat de l'exécution de la commande date)
$ echo "It is `date` now."
(Mettez toute la chaîne de caractères entre guillemets, insérez la commande de date entre guillemets et omettez l'affectation à la variable XYZ)

argument

Les scripts shell peuvent référencer des options comme arguments au moment de l'exécution. Les arguments peuvent être référencés en spécifiant le numéro d'argument après $ tel que $ 1, $ 2, etc.

$ cat args.sh
#!/bin/bash

echo '$1:' $1;
echo '$2:' $2;
echo '$3:' $3;
echo '$0:' $0;
echo '$#:' $#;
$ ./args.sh aaa bbb ccc
$1: aaa
$2: bbb
$3: ccc
$0: ./args.sh
$#: 3
($1-$3 est l'argument,$0 est le nom de la commande d'exécution,$#Indique le nombre d'arguments)

déclaration de décalage

La commande shift change l'ordre des arguments. Lorsque shift est exécuté, $ 2 devient $ 1, $ 3 devient $ 2, et ainsi de suite.

$ cat argsshift.sh
#!/bin/bash

echo '$1:' $1;
echo '$2:' $2;
echo '$3:' $3;
shift
echo '$1:' $1;
echo '$2:' $2;
$ ./argsshift.sh aaa bbb ccc
$1: aaa
$2: bbb
$3: ccc
$1: bbb
($1 changé en bbb)
$2: ccc
($2 changé en ccc)

Séquence d'échappement

Certains langages de programmation ont un traitement spécial. Par exemple, comment afficher "(guillemets doubles) comme" La valeur de ABC est "123". "Avec la commande echo.

$ ABC=123
$ echo "Value of ABC is "$ABC"."
Value of ABC is 123.
($abc""Je l'ai entouré de""N'est pas affiché)
$ echo "Value of ABC is ¥"$ABC¥"."
Value of ABC is "123".
(Je veux afficher"En ajoutant "¥" juste avant"Peut être affiché.

De cette façon, dans le script shell, \ (barre oblique inverse) est appelé un caractère d'échappement, et un caractère spécial change le traitement du caractère immédiatement suivant. Efficace lorsque vous souhaitez modifier la gestion des caractères en combinaison avec les guillemets utilisés. \ (Barre oblique inverse) est également valide pour le code de saut de ligne. En ajoutant \ (barre oblique inverse) à la fin de la ligne, il peut être enveloppé au milieu de la chaîne de caractères. La visibilité des commandes peut être améliorée en insérant des sauts de ligne appropriés.

$ echo "I am a cat. As yet I have no name."
I am a cat. As yet I have no name.
$ echo "I am a cat.¥
> As yet I have no name."
I am a cat. As yet I have no name.

Les sauts de barre oblique inverse peuvent également être utilisés dans les scripts shell. La barre oblique inverse est à l'origine , mais dans de nombreux environnements japonais, elle s'affiche sous la forme .

$ vi escape.sh

#!/bin/bash

echo "I am a cat. ¥
As yet I have no name."

$ ./escape.sh
I am a cat. As yet I have no name.

Il existe d'autres utilisations de \ (barre oblique inverse), et il existe une méthode appelée séquence d'échappement, qui est une chaîne de caractères qui a une signification particulière en tant qu'ensemble avec le caractère suivant. Les plus couramment utilisés sont \ t (tabulation), \ n (saut de ligne) et \ ooo (o est un nombre en notation hexadécimale).

$ echo -e "I am a cat. ¥nAs yet I have no name¥041"
I am a cat.
As yet I have to name!

commande source

Configurez un environnement shell en lisant le fichier spécifié avec une commande interne du shell telle que bash. Le contenu du fichier est interprété comme des commandes shell et exécuté. Une utilisation courante consiste à modifier les paramètres d'environnement du shell tels que ".bashrc" et ".bash_profile", puis à activer les paramètres sur le shell actuel sans se reconnecter.

$ cat set.sh
(set.Vérifiez le contenu de sh)

#!/bin/bash
abc=xyz
echo $abc
$ echo $abc
($Rien ne s'affiche car abc ne stocke rien)
$ ./set.sh
xyz
(La valeur de la variable abc définie dans le script a été sortie par echo)
$ echo $abc
(Rien ne s'affiche car la définition de la valeur sur la variable abc n'est valide que dans le script)
$ source set.sh
xyz
(La valeur de la variable abc définie dans le script a été sortie par echo)
$ echo $abc
xyz

Branche conditionnelle

si expression conditionnelle 1 alors...expression conditionnelle elif 2... else ... fi

#Opérateur de comparaison numérique
a -Vrai si eq b a et b sont égaux à
a -vrai si ne b a et b ne sont pas égaux (pas égaux à)
a -Vrai si ge b a est supérieur ou égal à
a -Vrai si le b a et inférieur à b (inférieur ou égal à)
a -Vrai si gt b a est supérieur à b
a -Vrai si lt b a est inférieur à b

Vérifier les attributs du fichier

if test -chemin d; then ...

La partie -d correspond à l'opérateur de confirmation d'attribut de fichier. Puisque -d détermine s'il s'agit d'un dict, l'instruction if entière est une expression conditionnelle qui renvoie la valeur vraie si le chemin apparaît dans le répertoire. Les opérateurs de confirmation d'attribut de fichier sont les suivants.

-f Nom de fichier True pour les fichiers normaux
-d Nom de fichier True pour le répertoire
-e Nom de fichier Vrai si le fichier existe
-L Nom du fichier Vrai si symbolique
-r Nom de fichier Vrai si fichier lisible
-w Nom de fichier Vrai si fichier lisible
-x Nom du fichier Vrai si le fichier existe et a l'autorisation d'exécution
-s Nom de fichier Vrai si la taille est supérieure à 0

La commande de test peut également être écrite en utilisant [].

if [Clause conditionnelle] ; then ...
if test clause conditionnelle; then ...

Il existe d'autres opérateurs de comparaison pour les fichiers en plus des attributs. Pour plus de détails, reportez-vous à l'élément de commande de test avec la commande man.

man test

Superposer plusieurs conditions

*** ET logique ***

[Condition A-a Condition B-une condition C] ...
[Condition A] && [Condition B] && [Condition C] ...

Notez que -a et && sont utilisés différemment selon qu'ils sont à l'intérieur ou à l'extérieur [].

*** Somme logique ***

[Condition A-o Condition B-o Condition C] ...
[Condition A] || [Condition B] || [Condition C] ...

Branche conditionnelle un-à-plusieurs

si expression conditionnelle alors
expression conditionnelle elif alors
expression conditionnelle elif alors
fi

Dans le script shell, une instruction case est préparée pour que les branches un-à-plusieurs puissent être décrites.

variable case dans
Valeur A)
Processus 1;;
Valeur B)
Processus 2;;
esac

Lorsque la valeur de la variable est la valeur A, le processus 1 est exécuté. Il est important que la fin se termine par esac, qui est une description de l'inverse de l'instruction case. Plusieurs valeurs peuvent être spécifiées en les séparant par un symbole de tuyau (|).

$ cat case.sh
#!/bin/bash

case $1 in
        a|A)
           echo "A ou A a été entré comme argument";;
        b|B)
           echo "B ou B a été entré comme argument";;
esac

Quand tu fais ça

$ ./case.sh a
A ou A a été entré comme argument
$ ./case.sh B
B ou B a été entré comme argument

De plus, pour décrire le traitement lorsqu'aucune valeur ne correspond, utilisez un astérisque (*) pour la valeur.

$ cat defaultcase.sh
#!/bin/bash

case $1 in
        1)
           echo "1 a été entré comme argument";;
        2)
           echo "2 a été entré comme argument";;
        *)
           echo "1,Tout autre élément que 2 a été saisi";;
esac

Quand tu fais ça

$ ./defaultcase.sh 1
1 a été entré comme argument
$ ./defaultcase.sh 2
2 a été entré comme argument
$ ./defaultcase.sh 0
1,Entré autre que 2

Recommended Posts