#+title: Nushell #+filetags: shell * Utilisation Lister nom de colonnes #+begin_src nu open lol.csv | columns #+end_src * Intégration ** Doom emacs et tramp Si on configure doom-emacs depuis nushell, il va le définir comme SHELL par défaut (ce qui rend sudo inutilisable) Le plus simple est de change SHELL en /usr/bin/bash dans le fichier ~/.config/emacs/.local/env #+begin_src nu SHELL="/bin/bash" ~/.emacs.d/bin/doom env #+end_src ** Python avec virtual env Installer virtualenv, exemple avec `emerge virtualenv` puis #+begin_src nu virtualenv myenv overlay use myenv/bin/activate.nu pip install osmnx #+end_src * Exemples de scripts ** Pandoc sur une liste de fichier org -> markdown #+begin_src nu ls *.org | each {|e| pandoc $e.name -o $"($e.name | path parse | get stem).md"} #+end_src ** Lister tous les IDs des csv et faire l'intersection avec les ID des pdfs #+begin_src nu ls excel = (ls /home/alex/excel | get name | path basename | path parse | get stem | parse "{id}_{s}" | get id) let patho = (open patho.csv | get id) $excel | append $patho | uniq -d #+end_src ** Génerer une liste de fastq en les groupant par nom de dossier List all fastq, then generate a column containing the file and dirname. Groupy by directory, extract record values input a table. Filter folders with less than 2 files. Concatenante the files and save the result into a txt file (.csv does not work) #+begin_src sh ls fastq/*/*.fastq.gz | select name | insert dir { $in.name | path dirname } | group-by dir | values | where ($in | length) > 1 | each { $in.name | str join ',' } | save input.txt #+end_src Version plus évoluée: #+begin_src sh def annotate [] { insert dir { $in.name | path dirname | path basename } | insert file { $in.name | path basename } | insert id { $in.name | patientID }} def patientID [] { path basename | split row '_R' | first } def toCSV [d] { $d.name | insert 0 ($d.dir | first) | insert 1 ($d.id | first) | str join ',' } ls fastq/*/*.fastq.gz | select name | annotate | group-by dir | values | where ($in | length) > 1 | each { toCSV $in } | save -f input.txt #+end_src Générer une liste de tâches à partir d'un alphabet et d'un index #+begin_src nu seq char E Z | enumerate | each {|it| t add pro:seedbox.seedhost $"Ajouter ancient torrents ($it.item)" $"wait:+($it.index + 1)d" $"sched:+($it.index + 1)d" } #+end_src