J'ai surmonté Linux, les commandes, les shells et ce genre d'amertume! !! Dans cet article, je présenterai les sites auxquels j'ai fait référence et compléterai mes questions et interprétations. J'espère que cet article aidera ceux qui pensent "Je me demande si je devrais l'essayer" ou "J'ai peur de l'écran noir".
Ceci est expliqué à divers endroits, mais en un mot, dans mon interprétation, c'est un ** programme qui rassemble des instructions pour le PC **.
Par exemple, lorsque vous souhaitez renommer un fichier. Lorsque vous souhaitez unifier la fluctuation des mots «test» et «test» de plusieurs noms de fichiers, spécifiez le fichier ou le répertoire et renommez-le immédiatement. Et.
Comme autre exemple, je veux créer un fichier journal des commandes exécutées chaque jour (il semble être en cours de journalisation). Et. ... Eh bien, n'est-ce pas un processus par lots? ?? J'ai réfléchi et enquêté. → https://wa3.i-3-i.info/word11221.html Apparemment, les scripts shell et les fichiers batch ont le même rôle, seul le monde de base est différent.
Pour macOS, il peut être exécuté à partir du terminal sans créer d'environnement, mais pour Windows, une préparation est nécessaire. Essayez google avec "Windows Linux" etc.: Bow_tone1:
J'ai fait référence à la méthode de création de script et à la méthode d'exécution suivantes ↓ https://udemy.benesse.co.jp/development/web/shellscript.html
L'éditeur utilise ** Vi **, mais vous devriez pouvoir utiliser presque tout avec un éditeur de texte. Récemment, ** Vim **, qui est une version évoluée de Vi, semble être populaire. Si vous définissez Vi et Vim, vous pouvez coder le code en couleur, mais cette fois je l'omettrai. VS Code le code automatiquement par couleur pour une visualisation facile. amical.
Tous les fichiers et dossiers ont des autorisations.
Il peut être configuré pour éviter des accidents tels que l'exécution accidentelle du shell ou la possibilité de modifier la source de production ou le fichier de configuration.
Vous pouvez vérifier les permissions avec ls -l
.
$ ls -l
total 13784
drwxr-xr-x 4 aaaaaayyymmm staff 128 3 20 15:19 memo
drwxr-xr-x 7 aaaaaayyymmm staff 224 3 29 23:52 tmp
-rw------- 1 aaaaaayyymmm staff 124987 3 30 11:51 Archives.zip
-rw-r--r-- 1 aaaaaayyymmm staff 197519 3 31 16:00 capture d'écran.png
-rw-r--r-- 1 aaaaaayyymmm staff 17 3 31 16:55 hello.sh
La signification de chaque élément est la suivante.
Type de fichier | Autorité | Nombre de liens physiques | propriétaire | groupe | Taille d'octet | Horodatage | nom de fichier |
---|---|---|---|---|---|---|---|
-(Première partie de personnage) | rw-r--r-- | 1 | aaaaaayyymmm | staff | 17 | 3 31 16:55 | hello.sh |
Cette fois, nous allons nous concentrer sur les ** types de fichiers ** et les ** autorisations **. Il existe trois types de types de fichiers comme suit.
type | sens | Supplément |
---|---|---|
- | Fichier | --- |
d | annuaire | La même chose que le dossier que vous voyez dans l'interface graphique |
l | Lien symbolique | Des choses comme des raccourcis. Fichiers proxy capables de lire et d'écrire de vrais fichiers et répertoires |
La vue d'autorité indique l'autorité de l'utilisateur ** propriétaire **, ** groupe **, ** autre **, séparés par trois à partir de la gauche. Et les types d'autorité sont les suivants.
Autorité | Notation numérique | sens |
---|---|---|
r | 4 | en train de lire |
w | 2 | Éditer |
x | 1 | Courir |
- | Aucun | Aucune autorité |
Il existe deux manières principales d'écrire.
Désignation du numéro ver.Exemple
$ chmod 744 hello.sh
Désignation de l'alphabet ver.Exemple
$ chmod g+wx hello.sh
//Ou
$ chmod u=x,g=rwx,o=- hello.sh
J'ai fait référence à cet article. Si vous souhaitez en savoir plus, reportez-vous à ce qui suit. https://qiita.com/shisama/items/5f4c4fa768642aad9e06
La valeur par défaut est -rw-r - r -
.
Pour exécuter le script après sa création, vous devez accorder le droit d'exécution comme suit.
(L'autorité par défaut peut être modifiée, mais cette fois, elle ne sera pas gérée.)
$ chmod u+x hello.sh
J'ai appris ce qui suit ↓ http://motw.mods.jp/shellscript/tutorial.html
Je comprends -eq, mais je veux utiliser -gt et -le rapidement, mais c'est difficile à retenir. .. .. Connaître l'anglais, c'est un peu plus facile à retenir!
opérateur | Anglais | sens |
---|---|---|
eq | equal | x = y |
ge | greater than or equal to | x >= y |
gt | greater than | x > y |
le | less than or equal to | x <= y |
lt | less than | x < y |
ne | not equal | x != y |
J'ai renvoyé au site suivant http://motw.mods.jp/shellscript/rename.html
J'y ai pensé moi-même et je l'ai créé.
make_bk.sh
#!/bin/bash
read -p "Entrez le nom du fichier ou le nom du dossier que vous souhaitez sauvegarder:" ary
echo $ary
#S'il n'y a pas de valeur d'entrée, un message d'erreur s'affiche et le processus se termine.
if [ -z $ary ];
then
echo "Entrez le nom du fichier ou le nom du dossier que vous souhaitez sauvegarder"
exit 1
fi
#Créez un dossier de sauvegarde.-Avec l'option p, un nouveau dossier est créé uniquement lorsque le dossier n'existe pas.
bkdir=bk_$(date +%Y%m%d)
mkdir -p $bkdir
#Lisez les fichiers ou dossiers entrés un par un
for target in ${ary[@]}
do
#Faites une copie et stockez-la dans le dossier de sauvegarde
[ -d $target ] && cp -r $target $bkdir/$target || cp $target $bkdir/$target
done
Ce script ne limite pas le nombre de fichiers et de dossiers, j'ai donc utilisé un tableau lors de l'acceptation de l'entrée. Pour savoir comment utiliser la baie, reportez-vous à ce qui suit. https://www.atmarkit.co.jp/ait/articles/1905/22/news004.html
À propos des pièces suivantes.
[ -d $target ] && cp -r $target $bkdir/$target || cp $target $bkdir/$target
Avec la commande cp, l'option "-r" est requise lors de la copie d'un dossier (= répertoire), donc la commande cp est exécutée après avoir déterminé si $ target est un répertoire. Je vous serais reconnaissant de bien vouloir me dire s’il existe un autre bon moyen.
Avant cela, donnez le droit d'exécution.
$ chmod u+x make_bk.sh
Structure des dossiers avant exécution
tmp
├── make_bk.sh
└── test.txt //Copiez ce gars
je le ferai
$ make_bk.sh
Entrez le nom du fichier ou le nom du dossier que vous souhaitez sauvegarder:test.txt
test.txt
Structure des dossiers après exécution
tmp
├── bk_20200329 //Dossier nouvellement créé
│ └── test.txt //Fichier copié
├── make_bk.sh
└── test.txt
:blush:
prochain, Copie et sauvegarde pour chaque dossier Si un dossier existe, copiez simplement la cible Assure-toi.
Structure des dossiers avant exécution
tmp
├── bk_20200329
│ └── test.txt
├── make_bk.sh
├── test.txt
└── test2 //Copiez ce gars
└── test2.txt //Doit être copié en même temps
je le ferai
$ make_bk.sh
Entrez le nom du fichier ou le nom du dossier que vous souhaitez sauvegarder:test2
test2
Structure des dossiers après exécution
tmp
├── bk_20200329
│ ├── test.txt
│ └── test2 //Dossier copié
│ └── test2.txt //Fichiers copiés ensemble
├── make_bk.sh
├── test.txt
└── test2
└── test2.txt
:blush::blush::blush:
Ceci est un mémo de la commande que j'ai pensé "c'est pratique et semble être utilisé" pendant l'apprentissage. ◆ Je souhaite afficher la date et l'heure lors de l'exécution de la commande d'historique Référence: https://linuxfan.info/add-datetime-to-history ◆ Je souhaite enregistrer des journaux de travail Référence: https://dev.classmethod.jp/articles/scriptcommand/
Vous devriez avoir compris les bases! Je vais tout essayer. Le but de cette fois était de s'habituer au script, donc je ne peux pas dire que l'aspect pratique du script créé soit remis en question. Au fur et à mesure que je travaille à partir de maintenant, je sens que je peux y arriver quand je pense "Je veux automatiser ça" et "Je peux assembler cette commande!?", Donc j'ai hâte de voir le moment à venir ... Dans la prochaine étape, nous étudierons afin de pouvoir prêter attention à la vitesse d'exécution et à la réutilisabilité ...!
Recommended Posts