Nushell
Installez Nu !
Prise en main
  • Le Livre Nushell
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Installez Nu !
Prise en main
  • Le Livre Nushell
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • Introduction
  • Installation
    • Shell par défaut
  • Prise en main
    • Rapide Tour d'Horizon
    • Naviguer dans le Système
    • Penser en Nu
    • Cheat Sheet Nushell

Naviguer dans le Système

Une caractéristique intrinsèque d'un shell est la capacité à naviguer et interagir avec le système de fichiers. Nushell ne fait évidemment pas exception. Voici quelques commandes courantes que vous pourriez utiliser pour interagir avec le système de fichiers :

Affichage du Contenu d'un Répertoire

ls

Comme vu dans d'autres chapitres, la commande ls retourne le contenu d'un répertoire. La commande ls de Nushell retourne les éléments sous forme de tableau.

La commande ls accepte également un argument optionnel pour spécifier ce que vous souhaitez afficher. Par exemple, nous pouvons lister les fichiers se terminant par « .md » :

ls *.md
# => ───┬────────────────────┬──────┬─────────┬────────────
# =>  # │ name               │ type │ size    │ modified 
# => ───┼────────────────────┼──────┼─────────┼────────────
# =>  0 │ CODE_OF_CONDUCT.md │ File │  3.4 KB │ 5 days ago 
# =>  1 │ CONTRIBUTING.md    │ File │   886 B │ 5 days ago 
# =>  2 │ README.md          │ File │ 15.0 KB │ 5 days ago 
# =>  3 │ TODO.md            │ File │  1.6 KB │ 5 days ago 
# => ───┴────────────────────┴──────┴─────────┴────────────

Patterns de Glob (wildcards)

L'astérisque (*) dans l'argument optionnel *.md est parfois appelé caractère générique, wildcard, ou glob. Il nous permet de matcher n'importe quoi. Vous pouvez lire ce glob *.md comme "match n'importe quel nom de fichier, du moment qu'il se termine par '.md'."

Le glob le plus général est *, qui matchera tous les chemins. Vous verrez souvent ce pattern utilisé comme partie d'un autre pattern, par exemple *.bak et temp*.

Nushell prend également en charge une double *, qui traversera les chemins imbriqués dans d'autres répertoires. Par exemple, ls **/* listera tous les chemins non cachés sous le répertoire courant.

 ls **/*.md
╭───┬───────────────────────────────┬──────┬──────────┬──────────────╮
│ # │             name              │ type │   size   │   modified   │
├───┼───────────────────────────────┼──────┼──────────┼──────────────┤
│ 0 │ CODE_OF_CONDUCT.md            │ file │  3.4 KiB │ 5 months ago │
│ 1 │ CONTRIBUTING.md               │ file │ 11.0 KiB │ a month ago  │
│ 2 │ README.md                     │ file │ 12.0 KiB │ a month ago  │
│ 3 │ SECURITY.md                   │ file │  2.6 KiB │ 5 hours ago  │
│ 4 │ benches/README.md             │ file │    249 B │ 2 months ago │
│ 5 │ crates/README.md              │ file │    795 B │ 5 months ago │
│ 6 │ crates/nu-cli/README.md       │ file │    388 B │ 5 hours ago  │
│ 7 │ crates/nu-cmd-base/README.md  │ file │    262 B │ 5 hours ago  │
│ 8 │ crates/nu-cmd-extra/README.md │ file │    669 B │ 2 months ago │
│ 9 │ crates/nu-cmd-lang/README.md  │ file │  1.5 KiB │ a month ago  │
╰───┴───────────────────────────────┴──────┴──────────┴──────────────╯

Ici, nous cherchons tout fichier se terminant par ".md". Les doubles astérisques spécifient en outre "dans n'importe quel répertoire à partir d'ici".

La syntaxe de globbing de Nushell prend non seulement en charge *, mais aussi les matching de caractères uniques avec ? et les groupes de caractères avec [...].

Pour échapper les patterns *, ?, et [], on les entoure de guillemets simples, doubles ou string raw. Par exemple, pour afficher le contenu d'un répertoire nommé [slug], utilisez ls "[slug]" ou ls '[slug]'.

Cependant, les chaînes entre backtick ne permettent pas d'échapper les globs. Comparez les scénarios suivants :

  1. Sans guillemets : pattern de Glob

    Une chaîne contenant des simples mots sans guillemets contenent des caractères glob est interprétée comme un pattern de glob. Par exemple, la commande suivante supprimera tous les fichiers dans le répertoire courant contenant myfile dans leur nom :

    rm *myfile*
  2. Avec guillemets : chaine literal avec astérisques

    Avec des guillemets simples et ou doubles, ou en utilisant des strings raw, une string littérale, avec les astérisques (ou tout autre catactère de glob) échappés, est passée à la commande. Le résultat n'est pas un glob. La commande suivante va seulement supprimer un fichier littéralement nommé *myfile* (astérisques inclus). D'autres fichiers avec myfile dans leur nom ne seront pas affectés :

    rm "*myfile*"
  3. Entre backticks : pattern de Glob

    Les astérisques (et autre patterns de glob) à l'intérieur d'une string entre backticks sont interprétés comme pattern de glob. Notez que le comportement est le même que dans l'exemple d'une chaîne sans guillemets, #1 ci-dessus.

    La suivante, comme dans le premier exemple, supprime tous les fichiers contenant myfile dans leur nom dans le répertoire actuel .

    rm `*myfile*`

Conseil

Nushell inclue également une commande glob dédiée, qui prend en charge des scénarios de globbing plus complexes.

Conversion de Chaînes en Globs

Les techniques utilisant des guillemets ci-dessus sont utiles pour construire des globs littéraux, mais vous pourriez avoir besoin de construire des globs de mamière programmable. Voici quelques techniques pour faire cela :

  1. into glob

    La commande into glob peut être utilisée pour convertir pour convertir une chaine (ou d'autres types) en glob. Par exemple :

    # Find files whose name includes the current month in the form YYYY-mm
    let current_month = (date now | format date '%Y-%m')
    let glob_pattern = ($"*($current_month)*" | into glob)
    ls $glob_pattern
  2. L'opérateur de propagation combiné avec la commande glob :

    La commande glob (note : différente de into glob) produit une liste de noms de fichiers qui matchent le pattern de glob. Cette liste peut être étendue et passée aux commandes du système de fichiers en utilisant l'opérateur de propagation :

    # Find files whose name includes the current month in the form YYYY-mm
    let current_month = (date now | format date '%Y-%m')
    ls ...(glob $"*($current_month)*")
  3. Forcer le type de glob via des annotations :

    # Find files whose name includes the current month in the form YYYY-mm
    let current_month = (date now | format date '%Y-%m')
    let glob_pattern: glob = ($"*($current_month)*")
    ls $glob_pattern

Changer le Répertoire Courant

cd new_directory

Pour changer du répertoire courant vers un nouveau, utilisez la commande cd.

Changer le répertoire courant peut également être effectué si cd est ommis et seul un chemin est fourni :

./new_directory

Exactement comme dans d'autres shells, vous pouvez utiliser le nom d'un répertoire, ou si vous voulez remonter d'un répertoire, vous pouvez utiliser le raccourcis ...

Vous pouvez ajouter des points supplémentaires pour remonter de niveaux supplémentaires :

# Change to the parent directory
cd ..
# or
..
# Go up two levels (parent's parent)
cd ...
# or
...
# Go up three levels (parent of parent's parent)
cd ....
# Etc.

Conseil

Les raccourcis multi-points sont disponibles à la fois pour les commandes Nushelles, les commandes du système de fichier et les commandes externes. Par exemple, executer ^stat .... sur un système Linux/Unix affichera que le chemin est étendu à ../../../..

Vous pouvez aussi combiner des niveaux de répertoires relatifs avec des noms de répertoires :

cd ../sibling

CONSEIL IMPORTANT

Changer le répertoire courant avec cd change aussi la variable d'environnement PWD. Cela signifie que le changement de répertoire est restreint au scope actuel (par ex. bloc ou closure). Une fois que vous êtes sortis de ce bloc, vous allez retourner au répertoire précédent. Vous pouvez en apprendre plus au chapitre Environnement.

Commandes de Système de Fichiers

Nu met également à disposition des commandes basiques de système de fichiers qui fonctionnent sur toutes les plateformes, telles que :

  • mv pour renommer ou déplacer un fichier ou répertoire vers un nouvel emplacement
  • cp pour copier un élément vers un nouvel emplacement
  • rm pour supprimer des éléments du système de fichier
  • mkdir pour créer un nouveau répertoire

NOTE

Sous Bash et de nombreux autres shells, la plupart des commandes de système de fichiers (excepté cd) sont en fait des binaires séparés dans le système. Par exemple, sur un système Linux, cp est le binaire /usr/bin/cp. Dans Nushell, ces commandes sont intégrées. Cela a plusieurs avantages :

  • Elles fonctionnent de manière cohérente sur les platefoems où une version binaire n'est peut-être pas disponible (par ex. Windows). Cela permet la création de scripts, modules ou commandes personnalisées cross-platform.
  • Elles sont intégrées plus étroitement avec Nushell, leur donnant la possibilité de comprendres les types et constructions de Nushell
  • Comme mentionné dans le Rapide Tour d'Horizon, elles sont documentées dans le système d'aide de Nushell. Executer help <command> ou <command> --help affichera la documentation Nushell pour ces commandes.

Bien que l'utilisation des versions intégrées à Nushell soit typiquement recommandé, il est possible d'accéder aux binaires Linux. Lisez S'échapper vers le système pour les détails.

Modifier la page sur GitHub
Contributors: LoicRiegel, Alexandre GV.
Prev
Rapide Tour d'Horizon
Next
Penser en Nu