Commandes Linux fréquemment utilisées

Nous avons résumé les commandes et les touches de raccourci souvent utilisées sous Linux.

Le public cible est constitué d'ingénieurs qui ne sont pas bons dans les terminaux. Je l'ai écrit pour les débutants, mais il existe des styles d'écriture de type tech. Il peut y avoir des découvertes inattendues, même pour ceux qui l'utilisent tous les jours.

La position de cet article

liste

Principaux éléments Que présenter
Introduction ~ Facilitez la saisie des commandes Achèvement de l'onglet,raccourci bash
Vérifier le répertoire pwd, ls, tree
Mouvements hiérarchiques et opérations de fichiers cd, mkdir, touch, mv, cp, rm, tar
Traitement de texte(Commande de filtrage) cat, wc, head, tail, sort, uniq, grep, sed, awk, xargs, less, >, >>(réorienter)
Autour de l'installation apt, yum, sudo, su, echo, which, wheris, source, ., chmod, chown, systemctl
Autour de l'OS date, df, du, free, top, ps, kill, pkill, pgrep, netstat
Autre find, history, diff, jobs, fg, bg, &(Exécution en arrière-plan), &&, $()(Remplacement de la commande), <()(Remplacement de processus), $?, for
Celui qui a décidé de ne pas écrire vi, make, curl, rsync, ssh-keygen, npm, git
prime nice, sl

Introduction ~ Facilitez la saisie des commandes

Entrer toutes les commandes manuellement est une douleur. Facilitons les choses en utilisant la complétion des onglets et les raccourcis bash. -> https://www.atmarkit.co.jp/ait/articles/1603/09/news019.html

Au minimum, les noms de commandes et les noms de fichiers doivent être complétés en appuyant sur la touche Tab. Il existe différents raccourcis bash, mais personnellement

La fréquence d'utilisation est élevée. Ce sont des raccourcis fournis par une bibliothèque appelée readline. # Ctrl + C peut être différent Il peut être utilisé avec de nombreux outils de ligne de commande, pas seulement avec bash, il est donc utile de s'en souvenir. (Par exemple, vous pouvez l'utiliser avec python ou mysql)


Vérifier le répertoire

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
pwd Afficher le chemin absolu du répertoire courant print working directory
ls Afficher les fichiers et répertoires list
tree Afficher la structure des répertoires directory tree

・ ** pwd **

# pwd:Afficher le chemin absolu du dossier actuel
arene@~/qiita $ pwd
/home/arene/qiita

・ ** ls **

# ls:Afficher les fichiers et répertoires dans le dossier actuel
$ ls
dir1  file1.txt  file2.txt  file3.txt

# ls -al:
#  * -a:Montrer les fichiers cachés(Origine: all)
#  * -l:Afficher des informations détaillées(Origine: list?)
#  *Quoi qu'il en soit, utilisez-le quand vous voulez tout
#  *Ls si vous avez de gros fichiers-Facile à voir avec alh
#    -h: M(Méga)、G(Giga)Pour rendre la taille plus facile à voir(Origine:human readable)
#  *autorisation(R ou w qui apparaît à l'extrémité gauche)Et propriétaire(arène arène)Souvent vu lorsqu'une erreur se produit lors de l'installation
#    ->Si vous voulez changer chaque chmod,utiliser chown
#  *ll avec ls-al et ls-Je vois souvent un environnement qui fonctionne de la même manière que l(Le mot-clé est alias(alias).. Voir le lien ci-dessous)
$ ls -al
total 0
drwxr-xr-x 1 arene arene 4096 Nov 10 18:07 .
drwxrwxrwx 1 arene arene 4096 Nov 10 18:04 ..
-rw-r--r-- 1 arene arene    0 Nov 10 18:07 .hidden_file1.txt
-rw-r--r-- 1 arene arene    0 Nov 10 18:14 dir1
-rw-r--r-- 1 arene arene    4 Nov 10 18:04 file1.txt
-rw-r--r-- 1 arene arene    0 Nov 10 18:02 file2.txt
-rw-r--r-- 1 arene arene    0 Nov 10 18:02 file3.txt

# ls -ltr:Afficher les nouveaux fichiers en bas
#  * -t:Affichage dans l'ordre d'horodatage(Origine: time)
#  * -r:Afficher dans l'ordre inverse(Origine: reverse)
#  *Souvent utilisé pour trouver le dernier fichier journal
#  *Le dernier est en bas, donc même s'il y a beaucoup de fichiers, il ne peut pas être coupé
#  *Inversement, si vous voulez voir le fichier le plus ancien, ls-lt
$ ls -ltr
total 0
-rw-r--r-- 1 arene arene  123 Oct 10 02:30 20191010.log
-rw-r--r-- 1 arene arene  123 Oct 11 02:30 20191011.log
-rw-r--r-- 1 arene arene  123 Oct 12 02:30 20191012.log
-rw-r--r-- 1 arene arene  123 Oct 13 02:30 20191013.log
-rw-r--r-- 1 arene arene  123 Oct 14 02:30 20191014.log
-rw-r--r-- 1 arene arene  123 Oct 15 02:30 20191015.log
-rw-r--r-- 1 arene arene  123 Oct 16 02:30 20191016.log
-rw-r--r-- 1 arene arene  123 Oct 17 02:30 20191017.log
-rw-r--r-- 1 arene arene  123 Oct 18 02:30 20191018.log
-rw-r--r-- 1 arene arene  123 Oct 19 02:30 20191019.log ← Le dernier fichier vient en bas
$

À part: paramètres d'alias pour les ingénieurs du monde entier


・ ** arbre ** * Installation séparée requise

# tree:Afficher la structure des répertoires
#  * ls -Des informations similaires peuvent être trouvées dans R, mais elles sont difficiles à voir.
#  *Peut être installé avec l'arborescence d'installation sudo apt ou yum install tree
#  *Introduit pour une utilisation fréquente dans les explications futures
$ tree
.
|-- dir1
|   |-- dir11
|   |   |-- file111.txt
|   |   `-- file112.txt
|   |-- file11.txt
|   |-- file12.txt
|   `-- file13.txt
|-- file1.txt
|-- file2.txt
`-- file3.txt

Mouvements hiérarchiques et opérations de fichiers

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
cd Mouvement hiérarchique(Changer le répertoire courant) change directory
mkdir Créer un annuaire make directory
touch Créer un fichier, mettre à jour l'horodatage ??
mv Déplacement de fichiers et de répertoires move
cp Déplacement de fichiers et de répertoires copy
rm Supprimer le fichier remove
tar Compression et décompression de fichiers(format tar) tape archives(← Je savais pour la première fois)

・ ** cd **

# cd path:Aller au chemin
arene@~/qiita $ ls
dir1  file1.txt  file2.txt  file3.txt
arene@~/qiita $ cd dir1/
arene@~/qiita/dir1 $ pwd
/home/arene/qiita/dir1

# cd:Accédez au répertoire de base de l'utilisateur connecté
arene@~/qiita/dir1 $ cd
arene@~ $ pwd
/home/arene

# cd -:Passer au répertoire précédent
#  *Utile pour basculer entre deux répertoires séparés l'un de l'autre
#  * pushd,Vous pouvez faire quelque chose de similaire avec la commande popd, mais je préfère celle-ci
arene@~/qiita/dir1 $ pwd
/home/arene/qiita/dir1
arene@~/qiita/dir1 $ cd
arene@~ $ pwd
/home/arene

arene@~ $ cd -
arene@~/qiita/dir1 $ pwd
/home/arene/qiita/dir1

arene@~/qiita/dir1 $ cd -
arene@~ $ pwd
/home/arene

# cd ~/path:Déplacer vers le chemin sous le répertoire de base de l'utilisateur connecté
#  * ~Est lu comme le répertoire personnel de l'utilisateur connecté(=Déploiement de Tilda)
#  * ~S'il s'agit de xxx, il sera lu comme le répertoire de base de l'utilisateur xxx.
arene@~/qiita/dir1 $ cd ~/bin/
arene@~/bin $ pwd
/home/arene/bin

・ ** mkdir **

# mkdir directory_name:Créer un annuaire(Un seul niveau)
# mkdir -p path/to/directory:Créez un répertoire profond à la fois
$ ls  #Rien au début

$ mkdir dir1  #Créer un annuaire
$ ls
dir1

$ mkdir aaa/bbb/ccc #Pour créer une hiérarchie profonde à la fois-option p requise
mkdir: cannot create directory ‘aaa/bbb/ccc’: No such file or directory
$ ls
dir1
$ mkdir -p aaa/bbb/ccc
$ tree
.
|-- aaa
|   `-- bbb
|       `-- ccc
`-- dir1

· ** toucher **

# touch file_name:Créer un nouveau fichier ou mettre à jour le type d'heure à l'heure actuelle
#  *A l'origine c'est une commande pour mettre à jour l'horodatage d'un fichier,
#Si le fichier spécifié n'existe pas, il sera nouvellement créé, donc l'impression qu'il s'agit exclusivement d'une commande de création de fichier
$ touch file1  #Créer un nouveau
$ ls -l
-rw-r--r-- 1 arene arene 0 Nov 10 10:10 file1
$ touch file1  #Réexécuter après 5 minutes->L'horodatage est mis à jour
$ ls -l
-rw-r--r-- 1 arene arene 0 Nov 10 10:15 file1

# touch --date="YYYYMMDD hh:mm:ss" file_name:Mettre à jour l'horodatage du fichier à tout moment
#  *Rarement souvent utilisé dans le but de vérifier le fonctionnement des
#  *Commandes associées
#    date -s "YYYYMMDD hh:mm:ss":Changement d'heure du système d'exploitation(-s signifie ensemble)
#    (--Probablement l'origine de l'option date)
$ touch --date "20101010 10:10:10" file1
$ ls -l
total 0
-rw-r--r-- 1 arene arene 0 Oct 10  2010 file1

#application:
#Vous pouvez facilement créer un grand nombre de fichiers de test lorsqu'ils sont combinés avec l'expansion d'accolades.
#Déploiement d'accolade(Numéro de série ver): {num1..num2}Est une fonction de bash qui est étendue aux numéros de série de num1 à num2
#                       (L'énumération ver est la section suivante(mv)Voir)
$ touch file{1..3}.txt # -> touch file1.txt file2.txt file3.Développé en txt
$ ls
file1  file2.txt  file3.txt

・ ** mv **

# mv source/path destination/path:Déplacement de fichiers et de répertoires
# mv filename_before filename_after:Renommer
#  *Le changement de nom et le déplacement des fichiers sont presque les mêmes pour la gestion du système d'exploitation
#  *Lorsque la confirmation est bruyante-Ajouter l'option f(f: force /Faites attention aux opérations erronées!)
$ tree
.
|-- dir1
|-- dir2
`-- file1

$ mv file1 dir1  #Bouge toi
$ tree
.
|-- dir1
|   `-- file1
`-- dir2

$ mv dir1/file1 dir1/file1.txt  #Renommer
$ tree
.
|-- dir1
|   `-- file1.txt
`-- dir2

#application:
#En fonction de la structure du répertoire, il peut être décrit de manière concise lorsqu'il est combiné avec l'expansion d'accolades.
#Déploiement d'accolade(Énumération ver): cmd {aaa,bbb,ccc}Fonctionnalité Bash étendue à cmd aaa bbb ccc
#* Mettez un espace{aaa, bbb, ccc}Attention à ne pas
$ tree
.
|-- dir1
|   `-- file1.txt
`-- dir2

$ mv dir{1,2}/file1.txt # mv dir1/file1.txt dir2/file1.Développé en txt
$ tree
.
|-- dir1
`-- dir2
    `-- file1.txt

#Application 2:
#cd après mv!$Ensuite, vous pouvez déplacer le fichier en douceur vers la destination
#  *Dans bash!$S'étend jusqu'au dernier argument de la dernière commande exécutée
#  * !$Est!-1$Alias de.!-2$Si tel est le cas, il sera étendu au dernier argument de la commande exécutée deux fois auparavant.
#  * !Représente l'expansion de l'historique des commandes.$Est la même image que l'expression régulière qui est le dernier argument
#  * !Je n'aime pas vraiment les commandes du système car elles sont de la magie noire
#    mv -> cd !$Je m'en suis souvenu car il est très pratique à utiliser.(Idem pour cp)
#  * mv -> ls -> cd !-2$Je fais bien aussi
arene@~/qiita $ ls
dir1  file1
arene@~/qiita $ mv file1 dir1/a/b/c/d/e/f/g/
arene@~/qiita $ cd !$   # !$Est le dernier argument de la commande précédente=a/b/c/d/e/f/g/
cd dir1/a/b/c/d/e/f/g/  # !Si vous utilisez une commande système, le résultat de l'expansion apparaîtra dans la sortie standard.
arene@~/qiita/dir1/a/b/c/d/e/f/g $ ls
file1

Informations détaillées sur l'expansion de l'historique: https://mseeeen.msen.jp/bash-history-expansion/


・ ** cp **

# cp -r source/path destination/path:Copie de fichiers et répertoires
#  * -r:Copier récursivement sous le répertoire(Origine: recursive)
#  * -f:Copie forcée sans confirmation(Origine: force)  <-Faites attention aux opérations erronées!
#  * -p:Conserver les autorisations avant et après la copie(Origine: permission)
#  *J'ajoute toujours r(Cela ne fait pas de mal s'il y en a un autre, et il est gênant d'utiliser différentes options en fonction du répertoire ou du fichier.)
#  *f est un groupe qui ne s'attache pas fondamentalement car il peut arrêter une opération erronée au bord de l'eau
#  *Faites attention à la présence ou à l'absence de p dans les situations où les permissions sont importantes(Un groupe qui porte généralement à la main)
#  *J'utilise aussi souvent la commande similaire scp.
#Vous pouvez copier des fichiers et des répertoires sur le réseau(Le format est le même que l'alternative)
$ tree
.
|-- dir1
|   `-- file1
`-- dir2

$ cp dir1/file1 dir2  #Copiez le fichier dans un autre dossier
$ tree
.
|-- dir1
|   `-- file1
`-- dir2
    `-- file1

$ cp dir1/file1 dir2/file2  #Copiez le fichier dans un autre dossier lors du changement de nom
$ tree
.
|-- dir1
|   `-- file1
`-- dir2
    |-- file1
    `-- file2

#application:
#Lorsqu'il est combiné avec l'expansion d'accolades, la création de fichiers de sauvegarde, etc. peut être décrite de manière concise
#Déploiement d'accolade(Énumération ver): cmd {aaa,bbb,ccc}Fonctionnalité Bash étendue à cmd aaa bbb ccc
$ ls
important_file
$ cp important_file{,.bak}  # cp important_file important_file.Développé pour bak
$ ls
important_file  important_file.bak

・ ** rm **

# rm -f file_name:Supprimer le fichier
# rm -rf directory_name:Supprimer le répertoire
#  * -f:Copie forcée sans confirmation(Origine: force)
#  * -r:Supprimer récursivement sous les répertoires(Origine: recursive)
#  *Contrairement à Windows, si vous l'effacez, vous ne pouvez pas le restaurer, alors soyez prudent
#  *Par inadvertance "rm-rf /Supprime tout le système, y compris le système d'exploitation
#Ctrl pressé+Je me suis arrêté à C, mais je ne peux pas travailler correctement car le fichier d'exécution de commande de base a été supprimé.!
#    ...Ce sera comme.(Il y a longtemps, la personne du siège suivant le faisait)
#  *Rm dans le script shell-rf /${DIR_PATH}J'ai écrit${DIR_PATH}Est un personnage vide
#    「rm -rf /C'est peut-être courant de le dire.
#    (Dans le script shell, définissez pour éviter un tel accident-Il vaut mieux ajouter u(Voir le lien ci-dessous))
$ ls  #Etat initial
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt

$ rm -f file1.txt  #Supprimer en spécifiant le nom du fichier
$ ls
dir1  dir2  dir3  file2.txt  file3.txt

$ rm -f *.txt  #Caractère générique(*)Supprimer tous les fichiers txt en utilisant
$ ls
dir1  dir2  dir3

$ rm -f dir1  #Le répertoire ne peut pas être supprimé sans l'option r
rm: cannot remove 'dir1': Is a directory

$ rm -rf dir1  #Supprimer en spécifiant le nom du répertoire
$ ls
dir2  dir3

$ rm -rf dir*  #Caractère générique(*)Suppression groupée à l'aide de
$ ls
$ 

A part: set -eu lors de l'écriture d'un script shell


· ** le goudron **

# tar -czvf xxx.tgz file1 file2 dir1 :compression(fichier1 fichier2 dir1 fichier compressé archivé xxx.Créer tgz)
# tar -tzvf xxx.tgz:Afficher les noms de fichiers contenus dans les fichiers compressés(=Test de déploiement)
# tar -xzvf xxx.tgz:Déploiement
#  *les options tar sont hyper déroutantes
#    ...Cependant, je pense que les trois ci-dessus sont suffisants pour un travail normal
#  * c(create), t(test), x(extract) +Rappelez-vous zvf
#  *L'archivage et la compression sont des événements différents.
#L'archivage consiste à combiner plusieurs fichiers en un seul. La compression réduit la taille du fichier.
$ ls  #Etat initial
dir1  dir2  file1.txt  file2.txt

$ tar czvf something.tgz dir* file*  #compression
dir1/
dir2/
file1.txt
file2.txt
$ ls
dir1  dir2  file1.txt  file2.txt  something.tgz

$ rm -rf dir* file*  #Supprimer le fichier d'origine une fois
$ ls
something.tgz

$ tar tzvf something.tgz  #Voir uniquement le contenu
drwxr-xr-x arene/arene       0 2019-11-12 00:31 dir1/
drwxr-xr-x arene/arene       0 2019-11-12 00:30 dir2/
-rw-r--r-- arene/arene       0 2019-11-12 01:00 file1.txt
-rw-r--r-- arene/arene       0 2019-11-12 01:00 file2.txt
$ ls
something.tgz

$ tar xzvf something.tgz  #Déploiement
dir1/
dir1/file1.txt
dir2/
file1.txt
file2.txt
$ ls
dir1  dir2  file1.txt  file2.txt  something.tgz

#De côté:
#Bien que tar puisse être compressé et décompressé, il peut renvoyer un état de sortie différent de zéro.
# (ex.Lorsque l'horodatage du fichier est dans le futur)
#Prenez le statut final de tar avec un script shell, définissez-Soyez prudent lorsque e

Traitement de texte (commande de filtrage)

Le vrai frisson de Linux, le traitement de texte. Avant de passer à la description de la commande, examinons un aperçu du traitement de texte.

C'est pourquoi Traitements de texte!

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
cat Combinez le contenu du fichier et la sortie concatenate(Joindre)
wc Comptez le nombre de mots et de lignes word count
head Sortie de n lignes depuis le début head(conduire)
tail Sortie de n lignes à partir de la fin tail(fin)
sort Trier par ligne sort
uniq Élimine la duplication unique
grep Recherche de texte global regular expression print
sed Remplacement de la chaîne stream editor
awk langage de programmation traditionnel unix Initiales de 3 développeurs
xargs Convertir l'entrée standard en arguments de ligne de commande execute arguments?
less Afficher l'entrée standard comme un éditeur less is more(Compatibilité ascendante avec la commande more)
>, >>(réorienter) Écrire une entrée standard dans un fichier

· ** chat **

# cat file1:Sortir le contenu de file1 vers la sortie standard
# cat file1 file2:Sortir le contenu de file1 vers la sortie standard->Sortir le contenu du fichier2 vers la sortie standard
#  *Utiliser 1:Afficher quelques lignes de fichiers en lecture seule
#  *Utiliser 2:Vérifiez plusieurs fichiers journaux à la fois
#  *Souvent utilisé comme point de départ pour le filtrage
$ cat .gitignore  #Vider un seul fichier
.DS_Store
node_modules
/dist

$ ls
access.log  error1.log  error2.log
$ cat error*.log  # error1.journal et erreur2.Vérifiez les journaux ensemble
2019/09/14 22:40:33 [emerg] 9723#9723: invalid number of arguments in "root" directive in /etc/nginx/sites-enabled/default:45
2019/09/14 22:42:24 [notice] 9777#9777: signal process started
2019/09/14 22:49:23 [notice] 9975#9975: signal process started
2019/09/14 22:49:23 [error] 9975#9975: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/09/14 22:56:00 [notice] 10309#10309: signal process started
2019/09/14 22:56:10 [notice] 10312#10312: signal process started
2019/09/14 22:56:10 [error] 10312#10312: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/09/14 22:56:22 [notice] 10318#10318: signal process started
2019/09/14 22:56:22 [error] 10318#10318: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/12/07 21:49:50 [notice] 1499#1499: signal process started
2019/12/07 21:49:50 [error] 1499#1499: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/12/07 21:51:19 [emerg] 1777#1777: invalid number of arguments in "root" directive in /etc/nginx/sites-enabled/default:45

· ** toilettes **

# wc -l file1:Comptez le nombre de lignes dans file1(Nombre de lignes+Le nom du fichier apparaît)
# cat file1 | wc -l:Comptez le nombre de lignes dans file1(Seul le nombre de lignes apparaît)
#  * -l:Comptez le nombre de lignes(Origine: line)
#  * -w:Comptez le nombre de mots(Origine: word)
#  * -c:Comptez le nombre d'octets(Origine: char? /On dirait que c'est c parce que c'était une option qui était faite à l'époque où c'était 1 octet par caractère)
#  *Honnête-Je n'ai utilisé que l(Le nombre d'octets ou ls suffit)
#  *Simple et honnête-Je n'ai utilisé que l(Pour le nombre d'octets, ls suffit)
#  *Lors de l'utilisation à partir d'un programme, le nom du fichier est un obstacle, donc cat| wc -Je pense qu'il y a de nombreux cas où l est utilisé
$ ls
access.log  error1.log  error2.log
$ wc -l error1.log  #Nombre de lignes(1)
7 error1.log
$ wc -l error2.log  #Nombre de lignes(2)
5 error2.log
$ wc -l error*.log  #Comptez le nombre de lignes dans plusieurs fichiers en spécifiant un caractère générique
   7 error1.log
   5 error2.log
  12 total
$ cat error*.log | wc -l  # error1.journal et erreur2.Comptez le nombre de lignes après avoir combiné les journaux
12

#application:Comptez facilement le nombre d'étapes
$ ls
dist    src    node_modules    package.json    public    tests
$ find src/ -type f | xargs cat | wc -l  #Comptez le nombre total de lignes dans tous les fichiers sous src
271
#Commentaire
#  * find src/ -type f:Sortie d'une liste de fichiers sous src
#  * cmd1 | cmd2:Exécutez cmd2 en recevant la sortie du contenu par cmd1 comme sortie standard comme entrée standard
#  * cmd1 | xargs cmd2:Exécutez cmd2 en recevant le contenu de la sortie de cmd1 comme sortie standard en tant qu ’« arguments de ligne de commande »
#  * find | xargs cat:Combinez tous les fichiers sous src recherchés par find et sortez vers la sortie standard
#  * find | xargs cat | wc -l:Comptez le nombre de lignes de tous les fichiers sous src recherchés par find
#  *Voir aussi find et xargs

・ ** tête **

# head -n 3 file1:Sortir les 3 premières lignes du fichier1
#  *Je ne l'utilise pas autant que je le dis, mais je vais l'introduire car c'est une commande associée à tail que je présenterai ensuite
#  *Utiliser 1:Vérifiez uniquement le début des fichiers lourds
#  *Utiliser 2:Obtenez uniquement la ligne d'en-tête du fichier et utilisez-la à partir du programme
$ cat file1.txt
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee EEE
6 fff FFF
7 ggg GGG
8 hhh HHH
9 iii III
10 jjj JJJ
11 kkk KKK
12 lll LLL
13 mmm MMM

$ head -n 3 file1.txt
1 aaa AAA
2 bbb BBB
3 ccc CCC

· ** queue **

# tail -n 3 file1:Sortir les 3 dernières lignes du fichier1
#  *Utiliser 1:Voir uniquement la fin du fichier journal lourd
#  *En parlant de queue, la prochaine queue-Principalement comment utiliser f
$ cat file1.txt
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee EEE
6 fff FFF
7 ggg GGG
8 hhh HHH
9 iii III
10 jjj JJJ
11 kkk KKK
12 lll LLL
13 mmm MMM

$ tail -n 3 file1.txt
11 kkk KKK
12 lll LLL
13 mmm MMM


# tail -f error.log: error.Surveiller le journal et afficher le contenu mis à jour(Origine: feed?)
#  *Grand succès dans la confirmation du journal(Puisqu'il s'agit de la sortie finale, le dernier journal sort)
#  * tail -Il est courant de surveiller les mises à jour de fichiers par f"queue"Dire(Je l'ai entendu sur différents sites)
#  *Tail le fichier journal et mettre en place un réseau(Affinez également avec grep le cas échéant)
#    ->Reproduire le défaut
#    ->Identifiez le journal qui est sorti lorsqu'un problème s'est produit
#Comment utiliser.
$ tail -f error.log  #Surveillance des journaux
-> Ctrl+Erreur jusqu'à l'arrêt par C.Attendez les mises à jour du journal
-> error.Lorsque le journal est mis à jour, le contenu mis à jour est sorti tel quel

$ tail -f error.log | grep 500  #Surveiller uniquement les journaux dont 500
-> Ctrl+Erreur jusqu'à l'arrêt par C.Attendez les mises à jour du journal
-> error.Sortie lorsque le journal contenant 500 est mis à jour

・ ** trier, uniq **

# sort file1:Trier le fichier1 par ligne
# uniq file1:Supprimer les lignes en double dans file1
# cat file1 | sort | uniq:Trier le fichier1 pour éliminer le travail en double
#  *Puisque sort et uniq sont un ensemble, je vais les présenter ensemble
#  * sort ->L'ordre d'uniq est important(Voir l'exemple ci-dessous)
#  *Le fichier d'origine ne change pas(Propriétés communes des commandes de filtrage)
#
#  *le tri est-Tri inversé par r,-Tri aléatoire avec R, une grande variété d'options
#  * ls -Trier les résultats de l'exécution de l par ordre de taille de fichier, comme
#Il est également possible de trier en se concentrant sur une colonne spécifique(Dans ce cas, ls-Vous pouvez aller avec lS)
#  *Mais honnêtement je ne me souviens pas
#  *Si vous voulez faire des choses compliquées, non limitées au tri, vous devez utiliser un langage de programmation normal
#    (Je pense qu'il suffit de l'utiliser dans un cas simple, comme par exemple vouloir éliminer les lignes en double du fichier csv en question)
$ cat not_sorted_and_not_unique.txt
1 aaa AAA
3 ccc CCC
2 bbb BBB
3 ccc CCC
2 bbb BBB
1 aaa AAA
3 ccc CCC

$ cat not_sorted_and_not_unique.txt | sort
1 aaa AAA
1 aaa AAA
2 bbb BBB
2 bbb BBB
3 ccc CCC
3 ccc CCC
3 ccc CCC

$ cat not_sorted_and_not_unique.txt | sort | uniq
1 aaa AAA
2 bbb BBB
3 ccc CCC

$ cat not_sorted_and_not_unique.txt | uniq | sort  # sort ->Si vous inversez uniq, vous n'obtiendrez pas le résultat attendu
1 aaa AAA
1 aaa AAA
2 bbb BBB
2 bbb BBB
3 ccc CCC
3 ccc CCC
3 ccc CCC

#Petite histoire:Génération aléatoire
$ echo {1..65535} | sed 's/ /\n/g' | sort -R | head -n 1
11828
#Commentaire
#  * echo {1..65535}: "1 2 3 4 5 (Omission) 65535"Générer un(mot-clé:Déploiement d'accolade(Au dessus de))
#  * sed 's/ /\n/g':Remplacer les espaces par des sauts de ligne
#  * sort -R: tri aléatoire par ligne
#  * head -n 1: afficher uniquement la première ligne
#  *Cela prend environ 1 seconde et n'est pas pratique
#  * sort -J'étais un peu heureux de connaître R pour la première fois et je l'ai écrit
#  *Cependant, je pense que le plaisir des commandes de filtrage est que vous pouvez connecter des commandes de cette manière et faire diverses choses en fonction de votre ingéniosité.
#    (C'était soi-disant que j'étais obsédé par son charme"Artiste Shell")

Pour ceux qui veulent en savoir plus: commande de tri, principes de base et applications et pièges


・ ** grep **

# grep ERROR *.log:Extraire uniquement les lignes contenant ERROR des fichiers avec le journal d'extension
# cat error.log | grep ERROR: error.Extraire uniquement les lignes contenant ERROR du journal
# cat error.log | grep -2 ERROR: error.Sortez la ligne contenant ERROR et les deux lignes avant et après celle-ci à partir du journal
# cat error.log | grep -e ERROR -e WARN: error.Extraire les lignes contenant ERROR ou WARN du journal
# cat error.log | grep ERROR | grep -v 400: error.Extraire les lignes contenant ERROR du journal et afficher le résultat de l'exclusion des lignes contenant 400
#  * -e:Spécifiez plusieurs mots-clés avec la condition AND(Origine: ??Probablement pas, mais personnellement français et(=and)Je l'interprète comme)
#  * -v:Éliminer les lignes contenant des mots-clés(Origine: verbose??)
#  *Grand succès au milieu et à la fin d'une seule ligne en raison de la forte demande de réduction de texte
#  *Vous pouvez également utiliser des expressions régulières
#  *Personnellement chat|Utilisez uniquement le format grep(Toutes les commandes de filtrage sont en état de mort cérébrale et chat|Faction en cmd)
$ cat file1.txt
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee EEE
6 fff FFF
7 ggg GGG
8 hhh HHH
9 iii III
10 jjj JJJ
11 kkk KKK
12 lll LLL
13 mmm MMM

$ cat file1.txt | grep -e CCC -e JJJ
3 ccc CCC
10 jjj JJJ

$ cat file1.txt | grep -2 -e CCC -e JJJ
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD
5 eee EEE
--
8 hhh HHH
9 iii III
10 jjj JJJ
11 kkk KKK
12 lll LLL

$ cat file1.txt | grep -2 -e CCC -e JJJ | grep -v -e AAA -e BBB -e KKK -e LLL
3 ccc CCC
4 ddd DDD
5 eee EEE
--
8 hhh HHH
9 iii III
10 jjj JJJ

・ ** sed **

# cat file1 | sed 's/BEFORE/AFTER/g':Remplacez BEFORE dans file1 par AFTER à la fois
#  * s/BEFORE/AFTER/g:Remplacez AVANT par APRÈS(Origine:substitut et global?)
#  * s/BEFORE/AFTER/:Remplacez le premier AVANT par APRÈS
#  *même avec vi:%s/BEFORE/AFTER/Il est pratique à retenir car vous pouvez tout remplacer à la fois par g
#    (Exemple d'utilisation: git rebase -i HEAD~5 ->vi ouvre-> :%s/pick/s/Résumez les 5 derniers commits avec g)
#  *Non seulement le remplacement par lots, mais également la suppression et le remplacement partiel peuvent être effectués, et des expressions régulières peuvent être utilisées.
#  *Le fichier d'origine ne change pas(-Il est également possible d'écraser avec l'option i)
#  *La seule chose que je peux utiliser rapidement est le remplacement par lots, mais l'image que les artistes du shell utilisent pleinement sed et awk
$ cat typo.txt  #Fichiers mal orthographiés
Hello Wolrd!
Wolrd Wide Web

$ cat typo.txt | sed 's/Wolrd/World/g'  #Corriger les fautes d'orthographe
Hello World!
World Wide Web

$ cat typo.txt | sed 's/Wolrd/World/g' > typo_fixed.txt  #Enregistrer le résultat corrigé dans un autre fichier
$ cat typo_fixed.txt
Hello World!
World Wide Web

Pour ceux qui veulent en savoir plus: Comment écrire dans ce cas avec sed?


・ ** awk **

# cmd1 | awk '{print $5}':À partir du résultat de l'exécution cmd1, seule la 5ème colonne est affichée séparée par des espaces
# cmd1 | awk -F ',' '{print $5}':À partir du résultat de l'exécution cmd1, affichez uniquement la 5ème colonne séparée par des virgules
#  *King of One Liner(Opinion personnelle)
#  *Vous pouvez utiliser if, for et variables, et la classification est un langage de programmation plutôt qu'une commande.
#  *Si vous voulez extraire la nième colonne du délimiteur 〇〇, c'est un langage déroutant
#  *Dans le contexte de awk"nième colonne"ne pas"nième champ"Appel
#  *Je ne sais pas écrire, mais je ne peux que lire l'atmosphère
#    (Dans un cas hérité que j'ai rencontré dans le passé, j'ai vu des TSV dans leur propre format analysés avec awk et convertis en XML.)
#    (↑ Je ne suis pas dans mon poste actuel!)
#  *Il est rarement utilisé, il peut donc être bon de le lire comme une culture.
$ ls -l
total 0
drwxr-xr-x 1 arene arene 4096 Feb  4 22:40 abc
drwxr-xr-x 1 arene arene 4096 Feb  4 22:40 def
-rw-r--r-- 1 arene arene  134 Feb  4 22:50 file1.txt

arene@~/qiita/src $ ls -l | awk '{print $5}'  #Afficher uniquement la 5e colonne

4096
4096
134

・ ** xargs **

# cmd1 | xargs cmd2:Recevez le résultat de l'exécution de cmd1 comme argument de ligne de commande et exécutez cmd2
#  * cmd1 |Alors que cmd2 reçoit le résultat de l'exécution de cmd1 comme "entrée standard" et exécute cmd2
#    cmd1 |xargs cmd2 reçoit le résultat de l'exécution de cmd1 comme "argument de ligne de commande" et exécute cmd2
#  *Ma commande préférée personnelle(Si vous l'utilisez bien, vous vous sentirez plus intelligent)
#  *J'y suis habitué, mais il y a pas mal d'exigences que je ne peux pas faire un seul liner sans cela
#  *Souvent utilisé après trouver(Opération par lots pour plusieurs fichiers)
#  *C'est une commande avancée, et je n'ai pas pu trouver d'exemple facile à comprendre et pratique.
$ ls -1
src
test
$ ls -1 | echo  #echo n'accepte pas l'entrée standard, donc rien ne sort

$ ls -1 | xargs echo  #Peut être affiché en le passant comme argument avec xargs
src test
$ ls -1 | xargs -n 1 echo  # -Si n 1 est ajouté, il sera passé ligne par ligne, donc il sera renvoyé ligne par ligne.
src
test


#application:Renommer par lots de plusieurs fichiers
# find -type f dir_name | xargs -I{} mv {} {}.bak: dir_Pour tous les fichiers sous nom.Ajouter bak
#  *Dans cet exemple, il devrait être plus facile d'utiliser la commande renommer(Je ne l'utilise pas personnellement car je ne suis pas familier avec le changement de nom)
#  *Si vous souhaitez utiliser la chaîne de caractères reçue plus d'une fois, comme mv ou cp-I{}Utiliser les options
$ tree  #Etat initial
.
|-- src
|   |-- main.js
|   `-- sub.js
`-- test
    |-- main.js
    `-- sub.js

$ find test/ -type f  #Afficher les chemins relatifs des fichiers testés avec find
test/main.js
test/sub.js

$ find test/ -type f | xargs -I{} mv {} {}.test
  #Développé au contenu suivant(-I{}Et après ça{}Sera remplacé par le contenu d'entrée)
  # mv test/main.js test/main.js.bak
  # mv test/sub.js test/sub.js.bak
$ tree
.
|-- src
|   |-- main.js
|   `-- sub.js
`-- test
    |-- main.js.test
    `-- sub.js.test

$ find test/ -type f | sed 's/js.test/js/g' | xargs -I{} mv {}.test {} #annuler
  # test/main.js.test avec test sed/main.Remplacer par js et passer à mv
$ tree
.
|-- src
|   |-- main.js
|   `-- sub.js
`-- test
    |-- main.js
    `-- sub.js

· ** Moins **

# less file1:Afficher le fichier1(read only)
# cat file1 | cmd1 | cmd2 | less:Voir le résultat du traitement du fichier1 de différentes manières
#  *Commandes utilisées pour le moment lorsque vous voulez voir quelque chose sans sortie vers le terminal
#  *Compatibilité ascendante d'une commande similaire plus(less is more!)
#  *Lecture seule de manière sûre et sécurisée(Je ne veux pas le changer, mais arrêtons de le regarder sur vi)
#  *Certaines raccourcis clavier de vi peuvent être utilisés
#    gg:Passer à la première ligne
#    G:Passer à la dernière ligne
#    /pattern:Rechercher dans le fichier avec motif
#    q:Fermer
#  *F à la queue-Vous pouvez faire la même chose que f, et contrairement au nom, c'est assez sophistiqué
(Voir le lien ci-dessous pour un exemple)

Pour ceux qui veulent en savoir plus:


・ **>, >> (Rediriger) **

# cmd1 >> file1:Ecrire le résultat de l'exécution de cmd1 dans fichier1(Postscript)
# cmd1 > file1:Ecrire le résultat de l'exécution de cmd1 dans fichier1(Écraser)
$ cat file1.txt  #Avant la redirection
1 aaa AAA
2 bbb BBB
3 ccc CCC

$ echo "4 ddd DDD" >> file1.txt  #réorienter(Postscript)
$ cat file1.txt
1 aaa AAA
2 bbb BBB
3 ccc CCC
4 ddd DDD

$ echo "4 ddd DDD" > file1.txt  #réorienter(Écraser)
$ cat file1.txt
4 ddd DDD



# echo "echo login!" >> ~/.bashrc:Ajoutez des paramètres à la fin de bashrc * Ne touchez pas réellement!
# * .bashrc est un fichier de configuration bash
# * >>ne pas>Si vous l'utilisez, il sera écrasé et les paramètres seront effacés, alors soyez prudent
# *Utilisez des redirections lors de la modification des fichiers de configuration dans les manuels de procédures et les scripts d'automatisation de la construction d'environnement
#   (Lors de la création manuelle de l'environnement>>Quand>のうっかりミスが怖いため、普通にファイルを開いた方がいいQuand思う)



# something.sh > log.txt: something.résultat de l'exécution de sh(Sortie standard)Sortie de journal
# something.sh > log.txt 2>&1: something.résultat de l'exécution de sh(Sortie standard+Sortie d'erreur standard)Sortie de journal
# something.sh >/dev/null 2>&1: something.Ne pas afficher le résultat de l'exécution de sh nulle part
$ cat something.sh  #Un script shell qui génère un message vers la sortie standard sur la première ligne et la sortie d'erreur standard sur la deuxième ligne
#!/bin/bash
echo standard output
syntax-error!!!! # standard error

$ ./something.sh > log.txt  #Si vous redirigez simplement, seule la sortie standard sera redirigée
./something.sh: line 3: syntax-error!!!!: command not found
$ cat log.txt
standard output

$ ./something.sh > log.txt 2>&1  # 2>&Ajoutez 1 pour rediriger les deux
$ cat log.txt
standard output
./something.sh: line 3: syntax-error!!!!: command not found

$ ./something.sh >/dev/null 2>&1  #Assurez-vous que rien ne sort(Le soi-disant "jeter à gros nul")
$
$ ./something.sh 2>&1 >/dev/null  #Si vous l'inversez, cela ne fonctionnera pas.
./something.sh: line 3: syntax-error!!!!: command not found
#Commentaire
#  * 1:Sortie standard 2:Sortie d'erreur standard
#  * /dev/null:Fichier vide spécial, abyssal, semblable à une corbeille, préparé par le système d'exploitation
#  * > log.txt vaut 1>log.Identique à txt, la sortie standard est enregistrée
#  * > log.txt 2>&1 vaut 2(Sortie d'erreur standard)1(Sortie standard)Destination(=fichier journal)Vers
#  * 2>&1 > log.La raison pour laquelle txt ne fonctionne pas est que ↓ 2 sont exécutés séquentiellement
#    (1) 2>&1:Sortie d'erreur standard, sortie standard par défaut(stdout)Basculer vers
#    (2) > log.txt2:Sortie standard directe vers le fichier journal
#    =>Par conséquent, la sortie d'erreur standard est sortie vers la sortie standard par défaut et la sortie standard est sortie vers le fichier journal.

Pour ceux qui veulent en savoir plus: Souvenons-nous-en. Signification de command> / dev / null 2> & 1


Autour de l'installation

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
apt, yum Installation de commande Advanced Package Tool, Yellowdog Updater Modified
sudo Exécuter la commande avec les privilèges root superuser do(substitute user do)
su Changement d'utilisateur substitute user
echo Affichage de la chaîne de caractères echo
env Afficher les variables d'environnement environment
which, whereis Trouvez l'emplacement de la commande which, where is
source, . Reflet des paramètres(Exécuter le contenu du fichier dans le shell actuel) source
chmod Modifier les autorisations de fichier et de répertoire change mode
chown Changer le propriétaire des fichiers et des répertoires change owner
systemctl Démarrage, arrêt du service, etc. system control

・ ** apt, miam **

# apt install git:Installer git(OS basé sur Debian tel qu'Ubuntu)
# yum install git:Installer git(Système d'exploitation de la série Red Hat tel que CentOS)
#  *Souvent exécuté au format sudo apt ~
#  *Si vous l'exécutez et qu'un message tel que "Autorisation refusée" ou "Autorisation insuffisante" apparaît, sudo pour le moment(Divers)
#    (Ou chown,Définissez correctement les autorisations avec chmod)
$ sudo apt install git
(Beaucoup de messages sortent, mais omis)

・ ** Sudo **

# sudo cmd1:Exécutez cmd1 en tant qu'utilisateur root
#  *Fréquemment utilisé sur Ubuntu(Ubuntu suit à cause de l'idée que vous ne devriez pas travailler en tant que root)
#  *Dans CentOS, je passerai à l'utilisateur root au prochain su, donc je ne l'utilise pas beaucoup
#  *Cela peut ne pas être possible pour certains utilisateurs
#    (Limiter les utilisateurs qui peuvent sudo dans un environnement sécurisé)
$ sudo vi /etc/hosts  #Modifier le fichier de configuration que seul root peut modifier
[sudo] password for arene:
$

・ ** su **

# su user1:Passer à user1(Les variables d'environnement héritent des variables actuelles)
# su - user1:Passer à user1(Ignorez la variable d'environnement actuelle et utilisez la variable d'environnement par défaut user1)
# su -:Passer à l'utilisateur root(Ignorez la variable d'environnement actuelle et utilisez la variable d'environnement par défaut de l'utilisateur root)
#  *Je mets toujours des traits d'union
#    (Intention d'éviter les erreurs inattendues en héritant des variables d'environnement)
#  *Su sur CentOS-oracle ou su-J'utilisais postgres
$ su -
Password:
#

· ** écho **

# echo abc:Chaîne de sortie abc
# echo $PATH:Variable d'environnement de sortie PATH
#  *Utiliser 1:Utilisation de la sortie et message d'erreur dans le script shell
#  *Utiliser 2:Vérification des variables d'environnement
#  *Si vous exécutez une commande et obtenez "command not found", ce n'est généralement pas dans le PATH, alors passons d'abord par le PATH.
$ echo abc
abc
$ echo $LANG
UTF-8

Informations supplémentaires: Qu'est-ce qu'une variable d'environnement lors du passage par le PATH


・ ** env **

# env | less:Vérifier les variables d'environnement
#  *Vous ne pouvez le voir qu'avec env, mais s'il y a beaucoup de variables d'environnement, il sera coupé, alors vérifiez avec moins
#    ->Avec moins ouvert/CHEMIN"PATH"Vous pouvez rechercher avec

・ ** qui, où est **

# which cmd:Afficher où se trouve la cmd elle-même
# whereis cmd:Une petite version détaillée dont
#  *Pour être honnête, je n'utilise que
#  *J'ai installé plusieurs versions de node, mais où est celle qui fonctionne actuellement??
#Je veux supprimer les commandes inutiles, mais où est ce gars??
#Ou utilisez-le dans de tels cas
$ which ls
/bin/ls

$ ls
access.log  error1.log  error2.log  src

$ /bin/ls
access.log  error1.log  error2.log  src

· ** la source, .**

# source ~/.bashrc: .Recharger bashrc
# . ~/.bashrc:Identique à ↑(.Est un alias pour la source)
#  *100 cas utilisés pour recharger après avoir changé le fichier de configuration du shell%(Auto-examen)
#  *Pour le moment, vous pouvez également exécuter un script shell
#
#  *source est une commande qui exécute le fichier spécifié par l'argument dans le "shell courant".
#  *Lorsqu'une commande ou un script shell est exécuté normalement, le processus est exécuté dans "un autre shell nouvellement généré".
#    (Les variables shell actuelles sont désormais propres)
#  *D'un autre côté, puisque les processus source dans le shell actuel,
#Les variables d'environnement et les paramètres d'alias modifiés pendant le traitement sont hérités même une fois l'exécution terminée.(=Les paramètres sont reflétés)
$ env | grep MY_ENV  # before

$ echo "export MY_ENV=abc" >> ~/.bashrc  #Ajoutez les variables d'environnement appropriées
$ env | grep MY_ENV  #Pas encore réfléchi

$ . ~/.bashrc  #Recharger bashrc avec la source
$ env | grep MY_ENV  #Les variables d'environnement définies dans ↑ sont reflétées
MY_ENV=abc

・ ** chmod **

# chmod 755 *.sh:Accorder l'autorisation d'exécution au fichier sh
# chmod 644 *.js:Définissez le fichier js pour qu'il puisse être lu et écrit normalement
#  *Les nombres mystérieux ont également un sens, mais honnêtement, je n'utilise que 644 et 755
#  *Vous pouvez définir w ou r ou lettres, mais je suis une secte numérique
#  *Lorsque vous exécutez le programme et que vous obtenez «Permission refusée», vous n'avez généralement pas la permission d 'exécution, vous pouvez donc la changer en 755.
#
#Expliquer
#  *Organiser trois nombres comme 755 spécifie les trois suivants
#    [Autorité sur le propriétaire][Privilèges sur la possession d'un groupe][Autorité pour les autres]
#  *Les significations des nombres sont les suivantes
#     0:Aucune autorité
#     1:Autorisation d'exécution
#     2:Autorisation d'écriture
#     4:Lire l'autorisation
#    (7=1+2+4 tout va bien, 6=2+Seulement lire et écrire à 4 et ainsi de suite)
#  *Donc 755 est"Le propriétaire peut tout faire, les autres ne peuvent lire et écrire que"Réglage
#644 est"Les propriétaires peuvent lire et écrire, les autres ne peuvent lire que"Réglage
$ ls -l  # before
total 0
-rw-r--r-- 1 arene arene 0 Feb  8 23:26 abc

$ chmod 755 abc  #Accorder l'autorisation d'exécution
$ ls -l
total 0
-rwxr-xr-x 1 arene arene 0 Feb  8 23:26 abc

$ chmod 644 abc  #Éliminer l'autorisation d'exécution
$ ls -l
total 0
-rw-r--r-- 1 arene arene 0 Feb  8 23:26 abc



#application:Changement en vrac
# find dir1 -type f | grep sh$ | xargs chmod 755:Accorder l'autorisation d'exécution à tous les shs sous dir1
#  *Trouvez le chemin relatif du fichier avec find->Utilisez grep pour trouver les fichiers se terminant par sh->Chmod le fichier que vous recherchez
#  * find dir1 -type f -name "*.sh" |Idem pour xargs chmod 755

Pour ceux qui veulent en savoir plus: Vérification et modification des permissions Linux (chmod) (pour les super débutants)


・ ** chown **

# chown user1:group1 file1:Changer le propriétaire du fichier1(Utilisateur1,Définir le groupe sur groupe1)
# find dir1 | xargs chown user1:group1:Changer le propriétaire de tous les fichiers sous dir1 à la fois
#  *Vérifiez que la liste des utilisateurs est cat/etc/passwd
#    (Étant donné que la première moitié est un utilisateur avec divers intergiciels ajoutés, il suffit généralement de regarder les dernières lignes)
#  *Consultez la liste des groupes avec chat/etc/group (Comme ci-dessus)
@@TODO:Exemple concret(Je n'avais pas d'environnement avec plusieurs utilisateurs)

・ ** systemctl **

#  *Un service est un programme qui s'exécute en arrière-plan, tel qu'un pare-feu ou un serveur Web.
#    (Aussi appelé un démon)
#  *systemctl est une commande pour démarrer et arrêter les services
#  *Ce type de commande est assez différent selon l'environnement, mais à partir de 2020, le nouvel environnement est systemctl
#  *L'ancien Linux est divisé en commande de service et commande chkconfig
#  *Cela ne semble pas être sur Mac(Depuis que je viens de faire mes débuts récemment, je n'ai aucune connaissance)
#  *Bien entendu, vous pouvez également enregistrer votre propre programme dans le service.

#Démarrer, arrêter, vérifier l'état actuel
#  *Notez que si vous venez de le démarrer, il s'arrêtera lorsque vous redémarrerez le système d'exploitation.
#  *Le nom du service peut être complété avec la touche Tab
systemctl status service1      #Vérifier l'état du service1(Vérifiez si vous êtes vivant ou mort)
systemctl start service1       #Démarrer le service1
systemctl stop service1        #Arrêter le service1
systemctl restart service1     #Redémarrer le service1(Arrêtez->Commencez)

#Paramètres de démarrage automatique
#  * enabled:Démarre automatiquement au démarrage du système d'exploitation
#  * disabled:Ne démarre pas automatiquement au démarrage du système d'exploitation
systemctl list-unit-files      #Liste des services+Montrer s'il faut démarrer automatiquement
systemctl enable service1      #Faire démarrer le service1 automatiquement
systemctl disable service1     #Empêcher le service1 de démarrer automatiquement
systemctl is-enabled service1  #Vérifiez si service1 est configuré pour démarrer automatiquement

Autour de l'OS

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
date Vérifiez et réglez l'heure date
df Vérifier l'espace disque libre disk free
du Vérifiez la taille du répertoire disk usuage
free Vérifier la disponibilité de la mémoire free
top Vérifiez l'utilisation du processeur et de la mémoire ??
ps Vérifier les informations de processus process status
kill Arrêtez le processus en spécifiant le PID(Envoyer un signal) kill
pkill Arrêtez tous les processus avec le nom de processus spécifié process kill?
pgrep Afficher le PID du processus avec le nom de processus spécifié pid grep
netstat Afficher l'état du réseau network status

· ** Date **

# date:Afficher l'heure actuelle
# date '+%Y%m%d %H:%M:%S': YYYYMMDD hh:mm:Afficher l'heure actuelle au format ss
# date -s "YYYYMMDD hh:mm:ss":Changer l'heure du système d'exploitation(Origine: set)
#  *Je l'utilise occasionnellement, et quel est le format à chaque fois que je l'utilise??Celui qui devient
#  * date -s "YYYYMMDD hh:mm:ss"(Changement d'heure du système d'exploitation)Et toucher-d "YYYYMMDD hh:mm:ss"(Modifier l'horodatage du fichier)
#C'est la même chose, alors j'essaie de m'en souvenir et de chercher à chaque fois.
$ date
Sun Feb  9 11:00:41 JST 2020

$ date '+%Y%m%d %H:%M:%S'
20200209 11:01:13

$ date -s "20200209 11:02:00"
Sun Feb  9 11:02:00 JST 2020

Pour ceux qui veulent en savoir plus: Modèle de spécification de date fréquente de la commande de date


・ ** df **

# df -h:Utilisation du disque/Afficher l'espace libre avec les unités(Origine: human readable)
# df:Utilisation du disque/Afficher l'espace libre
#  *Fondamentalement-Voir en h
#  *h arrondit la valeur, donc si vous voulez connaître la valeur exacte, appuyez dessus sans options
#  *Vous pouvez également voir ce qu'est le système de fichiers et où il est monté
#  *↓ est vu sur Ubuntu de WSL, donc il y a un lecteur C, c'est un peu étrange
@@TODO:Remplacer par le résultat de l'exécution sur Ubuntu ordinaire
$ df -h  # Use%Quoi%L'utilisez vous? Combien utilisé, Avail utilise, est-ce gratuit
Filesystem      Size  Used Avail Use% Mounted on
rootfs          230G  199G   31G  87% /
none            230G  199G   31G  87% /dev
none            230G  199G   31G  87% /run
none            230G  199G   31G  87% /run/lock
none            230G  199G   31G  87% /run/shm
none            230G  199G   31G  87% /run/user
cgroup          230G  199G   31G  87% /sys/fs/cgroup
C:\             230G  199G   31G  87% /mnt/c
E:\             223G  141G   83G  63% /mnt/e

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
rootfs         240312316 207873316  32439000  87% /
none           240312316 207873316  32439000  87% /dev
none           240312316 207873316  32439000  87% /run
none           240312316 207873316  32439000  87% /run/lock
none           240312316 207873316  32439000  87% /run/shm
none           240312316 207873316  32439000  87% /run/user
cgroup         240312316 207873316  32439000  87% /sys/fs/cgroup
C:\            240312316 207873316  32439000  87% /mnt/c
E:\            233322492 146962124  86360368  63% /mnt/e

・ ** du **

# du -h:Afficher la capacité de chaque répertoire avec une unité(Origine: human readable)
# du:Afficher la capacité de chaque répertoire
#  *Je ne vois pas la taille du répertoire dans ls
#  *Utilisez du lorsque vous voulez voir la taille réelle
#  *Lorsqu'il y a de nombreux sous-répertoires et que c'est difficile à voir, grep ou moins selon le cas
$ ls -lh  #Avec ls, le répertoire est uniforme 4.Affiché à 0K, je ne connais pas la taille réelle
total 0
drwxr-xr-x 1 arene arene 4.0K Oct 14 08:53 dist
-rw-r--r-- 1 arene arene    0 Jan  1 10:10 file1.txt
drwxr-xr-x 1 arene arene 4.0K Oct 14 09:11 src

$ du -h  #Si vous regardez df, vous pouvez voir la taille réelle
0       ./dist/css
8.0K    ./dist/img
888K    ./dist/js
908K    ./dist
8.0K    ./src/assets
4.0K    ./src/components
4.0K    ./src/pages
16K     ./src
924K    .

· ** gratuit **

# free -h:Afficher l'utilisation de la mémoire avec les unités(Origine: human readable)
# free:Afficher l'utilisation de la mémoire
#  *Il semble que le contenu affiché soit légèrement différent selon le système d'exploitation(Un nouveau mec est disponible)
#  *Bien que je l'ai présenté, je ne suis pas convaincu que ce soit OK si vous le regardez comme ça. ..
#    (Si gratuit et disponible sont importants dans une certaine mesure, il n'y a pas de problème, la reconnaissance)
#  *Si vous connaissez la bonne façon de déterminer si vous manquez de mémoire, veuillez laisser un commentaire.
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7.9G        6.8G        886M         17M        223M        980M
Swap:           24G        1.1G         22G
$ free
              total        used        free      shared  buff/cache   available
Mem:        8263508     7099428      934728       17720      229352     1030348
Swap:      25165824     1149132    24016692

· ** Haut **

# top:Vérifiez l'utilisation du processeur et de la mémoire
#  *Par défaut, les processus avec une utilisation élevée du processeur apparaissent
#  * %Le processeur est l'utilisation du processeur. Vous pouvez voir quel processus est surchargé.
#  *Je vois souvent la charge moyenne en haut à droite
#État de charge élevée lorsque la valeur dépasse le nombre de cœurs de processeur(Avec double cœur, 2 ou plus est une charge élevée)
#Le nombre de cœurs dans le processeur est cat/proc/Peut être confirmé avec cpuinfo
#  *Cependant, même si la charge moyenne est de 3 avec 4 cœurs
#Il est possible que les tâches soient concentrées sur core1 et que seul core1 soit dans un état de charge élevée.
#Si la moyenne de charge de ↑ est inférieure au nombre de cœurs, c'est OK, mais ce n'est qu'un guide
$ top
top - 12:06:17 up 87 days, 11:55,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.2 us,  8.0 sy,  0.0 ni, 81.7 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
KiB Mem :  8263508 total,  1821072 free,  6213084 used,   229352 buff/cache
KiB Swap: 25165824 total, 23985072 free,  1180752 used.  1916692 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5310 arene     20   0   17620   2052   1516 R   1.0  0.0   0:00.18 top
    1 root      20   0    8896    172    136 S   0.0  0.0   0:00.21 init
   74 root      20   0   19464    504    448 S   0.0  0.0   0:00.01 sshd
 1862 root      20   0   57560    344    312 S   0.0  0.0   0:00.01 nginx
 1863 www-data  20   0   58204   1036    904 S   0.0  0.0   0:00.19 nginx
 1865 www-data  20   0   58204   1036    920 S   0.0  0.0   0:00.07 nginx
 1868 www-data  20   0   58204   1036    904 S   0.0  0.0   0:00.01 nginx
 1869 www-data  20   0   58204    948    856 S   0.0  0.0   0:00.00 nginx
 1920 root      20   0    8904    224    176 S   0.0  0.0   0:00.01 init
 1921 arene     20   0   17332   4032   3896 S   0.0  0.0   0:00.32 bash
 1996 root      20   0   20220   4204   4056 S   0.0  0.1   0:00.17 sshd
 2069 arene     20   0   20488   2092   1956 S   0.0  0.0   0:05.02 sshd
 2070 arene     20   0   18828   5628   5520 S   0.0  0.1   0:11.96 bash

Pour ceux qui veulent en savoir plus: ・ Affichage de la moyenne routière à l'ère du multicœur


・ ** ps **

# ps -ef:Voir des informations détaillées sur tous les processus(Origine: every, full)
#  *Utiliser 1:Vérifier si un processus est actif(Le serveur Web est en cours d'exécution?)
#  *Utiliser 2:PID d'un processus(ID de processus)vérifier-> kill ${PID}
#  *Je suis sûr que tu peux voir beaucoup d'autres choses, mais je n'en sais pas grand
#  *Pour des raisons historiques, les options sont divisées en deux systèmes, ce qui est super compliqué, mais je-N'utilisez que EF
$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2019 ?        00:00:00 /init ro
root        74     1  0  2019 ?        00:00:00 /usr/sbin/sshd
root      1862     1  0  2019 ?        00:00:00 nginx:
www-data  1863  1862  0  2019 ?        00:00:00 nginx:
www-data  1865  1862  0  2019 ?        00:00:00 nginx:
www-data  1868  1862  0  2019 ?        00:00:00 nginx:
www-data  1869  1862  0  2019 ?        00:00:00 nginx:
root      1920     1  0 Feb04 tty1     00:00:00 /init ro
arene     1921  1920  0 Feb04 tty1     00:00:00 -bash
root      1996    74  0 Feb04 ?        00:00:00 sshd: arene [priv]
arene     2069  1996  0 Feb04 ?        00:00:04 sshd: arene@pts/0
arene     2070  2069  0 Feb04 pts/0    00:00:11 -bash
arene     5090  2070  0 11:13 pts/0    00:00:00 ps -ef

· ** tuer **

# kill 123:Arrêtez le processus avec l'ID de processus 123(Envoyer SIGTERM)
# kill -9 123:Tuez un processus avec l'ID de processus 123 sans poser de questions(9 est le numéro de signal de SIGKILL)
# kill -KILL 123: -Identique à 9
#  *Comme son nom l'indique, 99 cas sont utilisés pour tuer le processus.%
#  *Cependant, pour être précis, il s'agit d'une commande qui envoie un signal arbitraire à un processus spécifique.
#SIGTERM par défaut(Origine: terminate)Envoie
#  *Un signal est un signal que le système d'exploitation envoie à chaque processus pour ordonner le traitement d'interruption.
#    (Par exemple Ctrl+SIGINT lors de la fin d'une commande en C(Origine: interrupt)A été envoyé.
#Puisqu'il s'agit d'interrompre le traitement, même un programme qui boucle indéfiniment peut être arrêté.)
#  * SIGKILL(9)C'est le signal le plus puissant, et si vous envoyez celui-ci, vous pouvez tuer le processus sans poser de questions.
#  *SIGKILL est assez rude, c'est donc un dernier recours. Essayons de tuer sans marque.
#    (Avec SIGKILL, même le processus de terminaison n'est pas autorisé et il est coupé, donc dans de rares cas, un inconvénient peut survenir au démarrage suivant.)
$ ps -ef | grep eternal_loop | grep -v grep  #Découvrez le PID d'un programme en boucle infinie correctement écrit
arene     5500  2070  0 13:00 pts/0    00:00:00 ./eternal_loop

$ kill 5500  #Spécifier pid et tuer
[1]+  Terminated              ./eternal_loop
$ ps -ef | grep eternal_loop | grep -v grep  #Confirmez qu'il a été tué
$

Plus d'information: Bases de Linux Signal Page de l'homme SIGNAL


・ ** pkill **

# pkill process_name_prefix: process_name_Terminer tous les processus commençant par le préfixe
# pkill -9 process_name_prefix: process_name_Terminez tous les processus en commençant par le préfixe sans poser de questions
#  *Pour les signaux, voir la section précédente(kill)Voir
#  *Tous les coups seront tués, donc ps avant l'exécution-ef | grep process_name_avec préfixe
#Il vaut mieux vérifier le processus cible
$ ps -ef | grep eternal_loop | grep -v grep  #Il existe de nombreux processus qui bouclent indéfiniment
arene     5558  2070  0 13:13 pts/0    00:00:00 ./eternal_loop
arene     5562  2070  0 13:13 pts/0    00:00:00 ./eternal_loop2
arene     5566  2070  0 13:13 pts/0    00:00:00 ./eternal_loop3
arene     5570  2070  0 13:13 pts/0    00:00:00 ./_bak_eternal_loop

$ pkill eternal_loop  #Tuez tout d'un coup avec pkill
[1]   Terminated              ./eternal_loop
[2]   Terminated              ./eternal_loop2
[3]-  Terminated              ./eternal_loop3

$ ps -ef | grep eternal_loop | grep -v grep  #Trois correspondances avec préfixe ont été tuées
arene     5570  2070  0 13:13 pts/0    00:00:00 ./_bak_eternal_loop

・ ** pgrep **

# pgrep process_name_prefix: process_name_Sortie PID de tous les processus commençant par le préfixe
#  *Principalement utilisé lorsque vous souhaitez extraire et utiliser dynamiquement le PID avec un script shell ou une doublure
#  * $()(Remplacement de la commande)Souvent combiné avec ou xargs
$ ps -ef | grep eternal_loop | grep -v grep  #Beaucoup de processus de bouclage infinis
arene     5570  2070  0 13:13 pts/0    00:00:00 ./_bak_eternal_loop
arene     5590  2070  0 13:18 pts/0    00:00:00 ./eternal_loop
arene     5594  2070  0 13:18 pts/0    00:00:00 ./eternal_loop2
arene     5598  2070  0 13:18 pts/0    00:00:00 ./eternal_loop3

$ pgrep eternal_loop  #Extraire l'identifiant du processus
5590
5594
5598
$ pgrep eternal_loop | xargs kill  #Tuez le processus extrait
[5]   Terminated              ./eternal_loop
[6]-  Terminated              ./eternal_loop2
[7]+  Terminated              ./eternal_loop3

$ ps -ef | grep eternal_loop | grep -v grep  #Confirmation de décès
arene     5570  2070  0 13:13 pts/0    00:00:00 ./_bak_eternal_loop

・ ** netstat **

# netstat -anp| less:Vérifier l'état du réseau
#  * -a:Afficher toutes les connexions(Origine: all)
#  * -n:Afficher l'adresse IP brute et le numéro de port sans résolution de nom(Origine: number?)
#  * -p:Afficher l'ID de processus(Origine: process)
#  *Vous pouvez voir beaucoup de choses, mais je-N'utilisez que anp
#  * LISTENING, ESTABLISHED, TIME_C'est bien de pouvoir vérifier l'état de chaque port tel que WAIT
@@TODO:Collez le résultat de l'exécution sur ubuntu(Je ne pouvais pas le voir dans mon environnement WSL)

Plus d'informations: Maîtriser la commande "netstat" pour vérifier l'état de la communication TCP / IP


Autre

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
find Rechercher des fichiers et des répertoires(Sortie de chemin) find
history Se référer à l'historique des commandes history
diff Confirmation de différence difference
jobs Vérifier les travaux en cours jobs
bg Déplacer le travail spécifié vers l'arrière-plan background
fg Déplacer le travail spécifié au premier plan foreground
& Exécution en arrière-plan
&&,
$(), <() Remplacement de commande, remplacement de processus
$? Vérifiez l'état de fin de la commande précédente
for Traitement en boucle

· ** trouver **

# find dir1 -type f:Afficher une liste de fichiers sous dir1
# find dir1 -type f -name "*.js":Afficher une liste de fichiers js sous dir1
# find dir1 -type d:Afficher une liste de répertoires sous dir1
#  *Avec de nombreuses options, recherchez jusqu'à n niveaux, recherchez uniquement les fichiers plus anciens qu'une date et une heure spécifiques,
#Vous pouvez rechercher des fichiers avec des autorisations spécifiques, etc.
#  *Mais je l'oublie, donc je peux écrire ça beaucoup plus vite
#  *Contrairement à ls, le chemin du fichier est affiché, cherchez donc xxx| xargs rm -Convient pour un fonctionnement par lots comme rf
$ find src/ -type f
src/App.vue
src/assets/logo.png
src/components/HelloWorld.vue

$ find src/ -type f -name "*.png "
src/assets/logo.png

$ find src/ -type d
src/
src/assets
src/components

Pour ceux qui veulent en savoir plus: [12 utilisations à retenir avec la commande find](https://orebibou.com/2015/03/find%E3%82%B3%E3%83%9E%E3%83%B3 % E3% 83% 89% E3% 81% A7% E8% A6% 9A% E3% 81% 88% E3% 81% A6% E3% 81% 8A% E3% 81% 8D% E3% 81% 9F% E3 % 81% 84% E4% BD% BF% E3% 81% 84% E6% 96% B912% E5% 80% 8B /)


· ** histoire **

# history | less:Vérifier l'historique des commandes
#  *Utiliser 1:J'ai construit un environnement désordonné et le résultat s'est bien passé, mais que s'est-il passé après tout??Découvrir
#  *Utiliser 2:Enquêtez sur l'utilisation du mystérieux serveur qui entre pour la première fois
#  *Utiliser 3:Trouvez et réutilisez cette commande que vous utilisez beaucoup mais qui est trop longue à retenir
#  *La variable d'environnement HISTSIZE peut spécifier le nombre d'historique à conserver
#La valeur par défaut est généralement petite, donc si vous l'augmentez, vous serez peut-être heureux quand quelque chose se produit.
#  *Si vous tapez le mot de passe de la connexion ssh ou DB directement, vous verrez l'historique et il sera retiré, alors soyez prudent
#  *Ctrl si vous souhaitez simplement réutiliser la commande+R est recommandé.
#L'ajout de fzf le rend beaucoup plus facile à utiliser.
$ history | tail
 3325  find src/ -type f
 3326  find src/ -type d
 3327  find src/ -type f -name "*.png "
 3328  find src/ -type d | xargs ls
 3329  find src/ -type d | xargs ls-l
 3330  find src/ -type d | xargs ls -l
 3331  find src/ -type d | xargs -n 1 ls -l
 3332  find src/ -type d -ls
 3333  find src/ -type f -ls
 3334  history | tail

$ echo $HISTSIZE
10000

・ ** diff **

# diff file1 file2:Afficher la différence entre fichier1 et fichier2
# diff -r dir1 dir2:Afficher la différence entre dir1 et dir2(Vérifiez également les sous-répertoires)
#  *Il est souvent utilisé lorsque vous souhaitez vérifier s'il existe une différence dans la construction de l'environnement, etc.
#  *Si vous souhaitez comparer fermement le contenu des différences, vous devez utiliser WinMerge ou Meld ou le logiciel pour comparer les différences.
$ ls
dist src
$ cp -pr src/ src2  #Copiez et voyez la différence=>Aucune différence(Naturel)
$ diff -r src src2

$ echo "abc" >> src2/App.vue  #Faites une différence exprès et voyez la différence
$ diff -r src src2
diff -r src/App.vue src2/App.vue
17a18
> abc



#Version avancée:Comparez les résultats triés
$ cat unsort1.txt  #Un fichier dans lequel 1 à 5 sont disposés au hasard
1
5
2
4
3

$ cat unsort2.txt  #Fichier où 1 à 5 sont disposés au hasard Partie 2
1
2
3
5
4

$ diff <(cat unsort1.txt | sort) <(cat unsort2.txt | sort)  #Aucune différence lors de la comparaison des résultats triés
$
$ diff $(cat unsort1.txt | sort) $(cat unsort2.txt | sort)  #Similaire mais erreur dans le remplacement de la commande
diff: extra operand '3'
diff: Try 'diff --help' for more information.
#Commentaire
#  * <(cmd):Traitez le résultat de l'exécution de cmd1 comme l'entrée d'une autre commande(Remplacement de processus)
#  * $(cmd):Développez le résultat de l'exécution de cmd1 sous forme de chaîne de caractères(Remplacement de la commande)
#  *Le remplacement de processus vous permet de comparer les résultats du tri de deux fichiers sur une seule doublure
#  *Si vous n'utilisez pas le remplacement de processus, il sera craché une fois dans un autre fichier...C'est plutôt ennuyeux parce que je vais le faire
#  *Utile pour comparer csv, etc.
#  * <()Est traité comme un fichier, tandis que$()Est développé sous forme de chaîne dans la commande.
#La substitution de processus convient aux commandes qui prennent un fichier comme argument, comme diff.

・ ** emplois, fg, bg **

# jobs:Afficher une liste des travaux exécutés en arrière-plan
# fg 1:Basculer la tâche 1 vers l'exécution au premier plan
# bg 1:Basculer la tâche 1 vers l'exécution en arrière-plan
#  *Utilisé pour renvoyer au premier plan un programme exécuté accidentellement en arrière-plan
#  *Le cas représentatif est Ctrl avec vi+Lorsque vous appuyez sur Z
#    (Ctrl pendant l'édition de vi+Pour certains débutants, appuyer sur Z arrêtera le travail et vous ne saurez pas où vous êtes.
#Dans un tel cas, calmez les travaux->OK avec fg)
#  *Si vous faites par inadvertance quelque chose qui devrait être fait en arrière-plan,
#    Ctlr+Arrêtez-vous à Z, emplois->Vous pouvez passer à l'exécution en arrière-plan avec bg
#    (...Mais toujours Ctrl+Arrêt à C&Je ne l'ai pas utilisé car je vais le réexécuter.)
$ ./eternal_loop1 &  #Exécution d'un programme qui boucle indéfiniment en arrière-plan
[1] 5906
$ ./eternal_loop2 &
[2] 5910
$ ps -ef | grep eternal_loop | grep -v grep
arene     5906  2070  0 18:29 pts/0    00:00:00 ./eternal_loop1
arene     5910  2070  0 18:29 pts/0    00:00:00 ./eternal_loop2

$ jobs  #En regardant les travaux, vous pouvez voir qu'il y en a deux en cours d'exécution en arrière-plan
[1]-  Running                 ./eternal_loop1 &
[2]+  Running                 ./eternal_loop2 &

$ fg 2  #Basculer le travail numéro 2 au premier plan
./eternal_loop2
^C  #Ctrl ne se termine pas par une boucle infinie+Terminer par C

$ jobs  #Confirmez que le travail numéro 2 est terminé
[1]+  Running                 ./eternal_loop1 &
$ ps -ef | grep eternal_loop | grep -v grep
arene     5906  2070  0 18:29 pts/0    00:00:00 ./eternal_loop1

・ ** & (Exécution en arrière-plan) **

# cmd1:Exécutez cmd1 au premier plan
# cmd1 &:Exécutez cmd1 en arrière-plan
#  *Pour le traitement par lots lourds ou lorsque vous souhaitez exécuter temporairement le serveur Web
#Pratique pour exécuter des commandes en arrière-plan(Bien sûr, vous pouvez démarrer un autre terminal.)
#  *prochain&&Ou rediriger 2>&Facile à confondre avec 1, mais différent
#  *Il n'y a pas d'autre choix que de s'habituer au système de symboles ici
$ ./eternal_loop1 &  #Exécution d'un programme qui boucle indéfiniment en arrière-plan
[1] 6104

$ echo 123  #Puisqu'il a été exécuté en arrière-plan, d'autres commandes peuvent être utilisées.
123

&&, ||

# cmd1 && cmd2:Si cmd1 réussit, exécutez cmd2(Si cmd1 échoue, il s'arrête là)
# cmd1 || cmd2:Si cmd1 échoue, exécutez cmd2(Si cmd1 réussit, il s'arrête là)
#  *Utiliser 1:Écrivez un petit traitement séquentiel avec une seule doublure
#  *Utiliser 2: cmd1 || echo "error message"
#  *Je ne vois pas d'exemples pratiques, mais je les utilise un peu et je les vois.
##Cas où les deux réussissent
$ echo aaa && echo bbb
aaa
bbb
$ echo aaa || echo bbb
aaa

##Cas où les deux échouent
$ echoooo aaa && echoooo bbb
echoooo: command not found
$ echoooo aaa || echoooo bbb
echoooo: command not found
echoooo: command not found

### - ** $ (), <() (remplacement de commande, remplacement de processus) **
# echo ${var1}:Sortie du contenu de la variable var1(Expansion variable)
# echo $(cmd1):Sortir le résultat de l'exécution de cmd1(Remplacement de la commande)
# echo `cmd1`:↑ presque le même(Remplacement de la commande(Ancienne notation))
# diff <(cmd1) <(cmd2):Sortie du résultat d'exécution de cmd1 et cmd2(Remplacement de processus)
#  * ${}Quand$()は混同しやすい。jsのtemplateリテラルQuand同じ奴が変数置換
#  * $()Est``Nouvelle notation.$(cmd1 $(cmd2))La caractéristique est qu'il est facile d'imbriquer comme
#Souvent combiné avec un contenu changeant dynamiquement tel que date ou pgrep.
#  * <()Est un script shell ou one-liner, lorsque vous souhaitez utiliser un fichier temporaire.
#chat et diff,Combinez avec des commandes qui utilisent le contenu du fichier, comme wihle read line.
$ cat lsByOption.sh  #Je n'ai pas trouvé un bon exemple de one-liner, alors j'ai préparé un script shell bâclé.
#!/bin/bash
OPTION=$1
ls $(echo ${OPTION})  #Le premier argument est-Si l, ls-devenir l

$ ls  #Exécutez ls normalement
lsByOption.sh  unsort1.txt  unsort2.txt

$ ./lsByOption.sh -l  # ls $(echo ${OPTION})Est-ce que ls-devenir l
total 0
-rwxr-xr-x 1 arene arene 45 Feb  9 19:44 lsByOption.sh
-rw-r--r-- 1 arene arene 10 Feb  9 19:29 unsort1.txt
-rw-r--r-- 1 arene arene 10 Feb  9 19:30 unsort2.txt

$ ./lsByOption.sh -al  # ls $(echo ${OPTION})Est-ce que ls-devenir al
total 0
drwxr-xr-x 1 arene arene 4096 Feb  9 19:44 .
drwxr-xr-x 1 arene arene 4096 Feb  9 19:28 ..
-rwxr-xr-x 1 arene arene   45 Feb  9 19:44 lsByOption.sh
-rw-r--r-- 1 arene arene   10 Feb  9 19:29 unsort1.txt
-rw-r--r-- 1 arene arene   10 Feb  9 19:30 unsort2.tx

Pour ceux qui veulent en savoir plus:


・ ** $? **

# echo $?:Affiche l'état de fin de la dernière commande
#  *Utilisé lors de l'écriture d'un traitement anormal dans un script shell?
#  *Je l'ai mentionné avec élan, mais je ne l'utiliserai peut-être pas beaucoup
$ echo 123  #OK cas
123
$ echo $?
0

$ hdskds  #Cas NG
hdskds: command not found
$ echo $?
127

· ** pour **

# for i in {1..10} ; do cmd1; done:Répétez cmd1 10 fois
#  *Je veux l'utiliser souvent, mais comment l'ai-je écrit à chaque fois que je l'ai utilisé??Ça ira
#  *Je l'ai forcé à une ligne pour en faire une doublure, mais si je le casse correctement, il devient ↓
#    for i in {1..10} ;
#    do
#      cmd1;
#    done
#  * {1..10}:Déploiement d'accolade(Numéro de série ver):Étendu à 1 2 3 4 5 6 7 8 9 10
#  *au lieu de$(seq 10)Mais d'accord
$ for i in {1..10} ; do echo $i; done
1
2
3
4
5
6
7
8
9
10

Celui qui a décidé de ne pas écrire

Je l'utilise beaucoup, mais c'est probablement hors de portée, je l'utilise rarement, mais je n'en sais pas trop Commandes que je voulais omettre pour des raisons telles que ... Je ne listerai que les éléments.

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
vi Modifier le fichier visual editor(visual interface
make Compiler le programme make
curl Faire une requête HTTP command url??
rsync Synchroniser le contenu du répertoire sur le réseau remote synchronizer
ssh-keygen Créer des clés privées et publiques pour ssh ssh key generator
npm Installez les packages de nœuds, etc. node package manager
git Utilisez git(Divers) Stupide avec l'argot anglais britannique<-Je le savais pour la première fois

prime

Je ne l'utilise pas du tout, mais je voulais le présenter, alors je l'ai écrit. C'était amusant.

Nom de la commande Que puis-je faire? Nom de la commandeは何に由来している?
nice Ajuster la priorité de l'utilisateur
sl Le train sort En face de ls

· ** agréable **

# nice -n 20 cmd1:Exécutez cmd1 avec la priorité 20
#  *Chaque utilisateur Linux a une priorité de belle valeur
#    -20(La plus haute priorité)~20(Priorité la plus basse)
#  *Il peut être utilisé lorsque vous souhaitez exécuter un traitement par lots avec une charge CPU élevée dans l'intervalle de temps d'autres processus.(je n'ai pas d'expérience)
#  *"From root" de Yutaka Takano/J'ai appris du livre d'essai "Message à".
#Quand Unix est arrivé au Japon, les ressources CPU étaient précieuses
#Il semble que l'administrateur root ait augmenté la valeur intéressante pour contrer le mauvais utilisateur qui exécute un traitement intensif bang bang.
#  *Je ne sais pas pourquoi cet épisode, mais je l'aime vraiment
$ nice -n 20 ls
src dist

Référence: [Message de la racine à / (Amazon)](https://www.amazon.co.jp/root-%E3%83%AB%E3%83%BC%E3%83%88-%E3% 81% 8B% E3% 82% 89-% E3% 81% B8% E3% 81% AE% E3% 83% A1% E3% 83% 83% E3% 82% BB% E3% 83% BC% E3% 82 % B8% E2% 80% 95% E3% 82% B9% E3% 83% BC% E3% 83% 91% E3% 83% BC% E3% 83% A6% E3% 83% BC% E3% 82% B6 % E3% 83% BC% E3% 81% 8C% E8% A6% 8B% E3% 81% 9F% E3% 81% B2% E3% 81% A8% E3% 81% A8% E3% 82% B3% E3 % 83% B3% E3% 83% 94% E3% 83% A5% E3% 83% BC% E3% 82% BF / dp / 4756107869)


・ ** sl * Installation requise **

Une fois exécuté, le train se rendra au terminal. Lorsque vous faites une faute de frappe, calmons-nous en regardant le train. (C'est bien d'avoir beaucoup d'humour autour de la désactivation prudente de Ctrl + C)

image.png

Pour ceux qui veulent en savoir plus: Inutile au travail! Collection de commandes Linux Neta


finalement

L'utilisation de la ligne de commande est amusante. De plus, l'histoire du système Linux (Unix) est intéressante. Nous espérons que cet article vous aidera à découvrir et à développer vos intérêts.

Recommended Posts

Commandes Linux fréquemment utilisées
Commandes Linux fréquemment utilisées
Commandes Linux fréquemment utilisées
Commandes Linux fréquemment utilisées [Personal Memo]
[Linux] Commandes Linux fréquemment utilisées (opération sur fichier)
Commandes Linux fréquemment utilisées (pour les débutants)
Liste des commandes Linux fréquemment utilisées
[Linux] Commandes Linux fréquemment utilisées (opération de dossier)
pyenv Commandes fréquemment utilisées
Commande tmux fréquemment utilisée
Commande pip fréquemment utilisée
[Linux] Examen des commandes de base fréquemment utilisées 2
[Linux] Examen des commandes de base fréquemment utilisées
commandes linux
Commandes fréquemment utilisées dans virtualenv
[Commande Linux] Un mémorandum des commandes fréquemment utilisées
Commande Linux
8 commandes fréquemment utilisées dans Python Django
[Anaconda3] Résumé des commandes fréquemment utilisées
Commandes réseau Linux
Verbaliser les commandes Linux
Commandes utilisateur Linux
Commandes LINUX de base
Diverses commandes Linux
Résumé des commandes fréquemment utilisées de django (débutant)
Résumé des commandes fréquemment utilisées dans matplotlib
[Linux] Liste des commandes Linux utilisées dans la pratique
[Linux] Commandes liées aux groupes
Commandes Linux à retenir
Résumé des commandes fréquemment utilisées (avec petit commentaire)
Une collection de commandes fréquemment utilisées dans la gestion des serveurs
Afficher une liste des commandes fréquemment utilisées sur Zsh
[Pour les débutants] Django Commandes fréquemment utilisées et collection de références
Étudier les commandes Linux et la frustration
Sous-packages de SciPy fréquemment utilisés
Extraits de code Python fréquemment utilisés
Connaissance de base de Linux et des commandes de base
Gérer les dates dans les commandes bash Linux
Classer les boîtes de dialogue de fichiers / dossiers fréquemment utilisées
[Linux Mint 20] Diverses commandes de confirmation WiFi
Touche de raccourci pratique pour les commandes Linux! !! !!
Linux
[Linux] Commandes d'opération de fichier et de répertoire
Commandes souvent utilisées dans GAE / P
Essayez de compiler des commandes Linux (pratique de compilation croisée)
Commandes Linux liées au code de caractère
À propos des commandes Linux Édition super basique
Remarque: concepts Linux et commandes minimales
Utiliser les commandes Linux sur les appareils Android