Vendredi terminal: Bash [Extension de clé]

Tout d'abord, je voudrais m'excuser, puisque vendredi dernier je n'ai pas pu écrire le message, donc aujourd'hui, j'ajouterai un supplément pour rattraper la journée perdue. 🙂

Extension d'accolade

En espagnol, l'expansion des touches me semble être une fonction inspirée par Coquille C, cela génère des combinaisons entre les caractères qui sont entrés à l'intérieur des accolades, l'ordre qu'il utilise est de gauche à droite. Ce n'est pas du tout compliqué, mais c'est une option qui sera très utile dans nos visites guidées de GNU / Linux.

exemple:

$ echo a {1,2,3} a1 a2 a3

Lorsqu'il est utilisé avec des virgules (,) génère des combinaisons entre la valeur a et les valeurs à l'intérieur des accolades. S'il n'y avait aucune valeur en dehors des clés, elle n'afficherait qu'une seule fois chaque valeur que la clé contient.

$ echo {a, b, c} abc

Son utilisation n'est pas du tout complexe, il existe d'autres exemples plus courants comme la création de nombreux répertoires dans un dossier

$ mkdir ~ / Jobs / {un, deux, trois, quatre, cinq}

Cela crée cinq dossiers dans le dossier des travaux, c'est comme entrer une commande à la fois. Création des 5 répertoires.

Il y a une expansion de deux points .. cela crée une série de nombres ou de caractères qui vont de la valeur initiale à la valeur finale, n'utilisez pas de nombres avec des lettres.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} #Je pense que je n'obtiendrai jamais habitué à cette couleur bleue en lettre

On peut gagner du temps en créant un cycle en

# Au lieu d'écrire $ for ((i = 1; i <= 5; i ++)); do echo "Mon numéro $ i"; done Mon numéro 1 Mon numéro 2 Mon numéro 3 Mon numéro 4 Mon numéro 5 #Enregistrer le code en utilisant l'expansion des accolades. $ pour i dans {1..5}; do echo "Mon numéro $ i; done Mon numéro 1 Mon numéro 2 Mon numéro 3 Mon numéro 4 Mon numéro 5 #Bien sûr, il est valide à utiliser bien que la sortie soit différente. $ echo" Mon numéro "{1..5} Mon numéro 1 Mon numéro 2 Mon numéro 3 Mon numéro 4 Mon numéro 5

Eh bien, je pense que le concept est clair, haha ​​maintenant je vais seulement commenter qu'il est combinable et imbriqué.Qu'est-ce que je veux dire par là?
Avec combinable auquel on peut joindre une ou plusieurs clés

$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3

Avec l'imbrication comme beaucoup l'imaginent, vous pouvez utiliser des clés d'extension dans des clés d'extension

$ echo {a, c {1..3}, d} a c1 c2 c3 d

Et enfin de Bash RIEN il est possible d'augmenter les valeurs.

$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20

C'est tout pour aujourd'hui, alors merci de me lire les gens 🙂

Extra

Comment créer un bac local

Quand je dis un coffre local je veux dire un répertoire dans lequel nous avons nos propres scripts et il est possible de les exécuter comme une simple commande ...

Pour y parvenir est relativement simple, la première chose à faire est de créer un répertoire dans lequel nous enregistrerons les scripts.

mkdir ~ / .bin # Dans cet exemple, il sera masqué

Maintenant, nous avons notre dossier pour enregistrer les scripts mais cela ne fonctionnera pas tant que nous n'aurons pas ajouté le chemin du nouveau .bin à $ PATH
Pour cela, le fichier est édité bash_profile, et la ligne est ajoutée.

export PATH = $ PATH: ~ / .bin

Et voila ça suffit pour créer un bac local, bien sûr il demandera des permissions root si nécessaire pour un exemple on écrit un script rapide.

#! / bin / bash echo "Salut $ 1, comment vas-tu?"

Enregistrez-le sous le nom de Salut
Le script reçoit l'autorisation d'exécution et il ne suffira que de l'appeler depuis le terminal

$ hello wada #Ceci affichera le message Hello wada, comment vas-tu?

Donc, avec cette astuce rapide, vous pouvez exécuter vos scripts plus rapidement

C'est tout pour aujourd'hui les gens qui vont bien 🙂
PS Désolé pour les erreurs s'il y en a, mes yeux se ferment déjà hahaha 😀


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   chasseur dit

    Je suis dans le numéro bash depuis longtemps et je n'avais pas compris les extensions d'accolades, merci.

    A propos de l'astuce du chemin, Fedora par défaut fait quelque chose comme ça mais dans "~ / .local / bin", regardez un extrait du bash_profile que j'ai apporté à Jessie.

    CHEMIN = $ CHEMIN: $ HOME / .local / bin: $ HOME / bin
    exportation PATH

    1.    Ricardo dit

      J'ai quelques inquiétudes:
      1. Comment l'amener à me donner deux intervalles avec une expansion par points; âges {1..24,55..90} et que j'élargisse les âges de 1 à 24 et continue avec 55 à XNUMX ans. comme je l'ai fait, cela n'a pas fonctionné. Parce que?

      2. Si je veux que la première valeur soit nulle et que je continue avec la numérotation:
      wget : http://manga.favorito /image http://manga.favorito/imagen1
      J'ai essayé la manière suivante mais wget n'a pas obtenu: http://manga.favorito/imagen{, 1..42} Selon moi, je devrais laisser le prénom sans numéro et continuer avec la numérotation de 1 à 42 mais ce n'était pas comme ça. Parce que?

    2.    Wada dit

      Vous avez raison, certaines distributions ont ou avaient un .bin mais c'est pour que tout le monde puisse comprendre et voir qu'il est possible de le faire dans n'importe quelle distribution: D, Merci de votre visite.

  2.   demo dit

    Très bien très bien pour ces apports de connaissances au monde Linux et à sa sécurité, un vendredi j'espère avoir pu lire comment formater une clé USB dans un terminal et graver une image iso DVD / CD de n'importe quel système libre dans un terminal.

    1.    Wada dit

      Merci pour vos paroles frère 😀 Je promets que vendredi prochain je ferai ce post. Et je dois en dire plus sur la personnalisation de Vim hahaha mais je ne voulais pas qu'ils pensent que cela engloberait seulement Vim.

  3.   edoardo_or dit

    Excellent article terminal, le meilleur que j'ai lu depuis longtemps, comptant plusieurs blogs qui publient des tutoriels de ce style. Merci beaucoup!!

    1.    Wada dit

      Merci beaucoup 😀 J'essaierai de suivre.

  4.   Juanli dit

    Excellent conseil de la poubelle locale!
    Salutations!

    1.    Wada dit

      Excellent, super qu'il vous soit utile, merci beaucoup de passer frère 😀

  5.   giskard dit

    Très bon! Aucune idée à ce sujet. Merci 🙂

    1.    Wada dit

      Vous êtes le bienvenu frère grâce à vous d'avoir pris le temps de le lire 😀

  6.   Ricardo dit

    J'ai quelques inquiétudes:
    1. Comment l'amener à me donner deux intervalles avec une expansion par points; âges {1..24,55..90} et que j'élargisse les âges de 1 à 24 et continue avec 55 à XNUMX ans. comme je l'ai fait, cela n'a pas fonctionné. Parce que?

    2. Si je veux que la première valeur soit nulle et que je continue avec la numérotation:
    wget : http://manga.favorito/imagen http://manga.favorito/imagen1

    J'ai essayé la manière suivante mais wget n'a pas obtenu: http://manga.favorito/imagen{, 1..42} Selon moi, je devrais laisser le prénom sans numéro et continuer avec la numérotation de 1 à 42 mais ce n'était pas comme ça. Parce que?
    * Désolé mais j'ai mis le premier message comme réponse et c'était faux dans certaines parties

    1.    Wada dit

      1.- Votre logique est fausse, vous devez l'imbriquer hahaha essayez avec $ echo {{1..24},{55..90}}

      2.- Identique au précédent ... $ echo "URL"{,{1..42}}

      Ne t'inquiète pas, mon frère, nous sommes là pour s'entraider 🙂

  7.   jvk85321 dit

    Pour remplacer le for par echo, cela ressemblerait à ceci

    echo "Mon numéro" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    mais je préfère printf

    printf "I, I% d \ n" {1..5}

    et utiliser le même concept d'expansion clé

    atte
    jvk85321

    1.    jvk85321 dit

      Comment mettez-vous les boîtes à bornes ????

      atte
      jvk85321

  8.   jvk85321 dit

    Tester si la balise de code fonctionne
    hehe

    Pour remplacer le for par echo, cela ressemblerait à ceci

    echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’

    pero prefiero printf

    printf “Mi numero %d\n” {1..5}

    et utiliser le même concept d'expansion clé

    atte
    jvk85321

    1.    jvk85321 dit

      Il me reste quelques bugs mais ça a marché

      Je suis vivant maluco

      Pardon pour deranger

      atte
      jvk85321

      1.    Wada dit

        Hahaha tu t'es répondu mais si c'est entre les étiquettes sans espaces ...

        Et sur la substitution du car il n'est pas nécessaire de faire autant de pipe hahahaha assez avec:
        echo -e "Mi numero "{1..5}"\n\b"

        Pour être honnête, printf est le meilleur moyen d'imprimer du texte dans des scripts, il est plus portable mais par tradition, il utilise l'écho.

      2.    Wada dit

        Je prends les espaces! hahahahaha

        voyons maintenant 😀

      3.    Wada dit

        Putain c'est "moins que" code "plus grand que" "moins de" / code "plus grand que" hahahaha

      4.    jvk85321 dit

        Le problème qui fait écho -e n'est pas standard, il ne fonctionne donc pas sur tous les systèmes.

        Sort aussi en désordre
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5

        jvk@jvktos:~$
        Et avec ça
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Je pense que le second présente mieux le résultat, hahaha

        atte
        jvk85321

      5.    jvk85321 dit

        Ces étiquettes sont un aehehe décevant, voyons si elles fonctionnent maintenant
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Et avec ça
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Je pense que le second présente mieux le résultat, hahaha
        atte
        jvk85321

      6.    jvk85321 dit

        Bref, laisse les espaces entre les lignes, c'est pourquoi je déteste le html, hahahaha

  9.   Joaquin dit

    Excellent! Je tape des pieds haha

    Je ne savais pas que les clés pouvaient être imbriquées, puisque je n'ai jamais essayé de les utiliser non plus, cela économise vraiment beaucoup de code et c'est aussi plus lisible de cette façon. Je vous remercie!

    1.    Wada dit

      Merci à toi pour mon frère de passage, je suis heureux que ce soit utile

      1.    Joaquin dit

        Vous êtes les bienvenus, c'est pour cela que nous sommes ici, pour partager et apporter des idées. Je ne sais pas programmer, j'ai juste fait quelques choses dans Bash et publié des scripts que j'ai fait dans deux articles. Je pense que savoir cela peut rendre le code plus facile à comprendre.