Hoe gebruik je "Named redirection" in Bash?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 14-05 22:13

aawe mwan

Wat ook leuk is:

Topicstarter
Laatst viel me iets op in bash, een principe dat "named redirection" schijnt te heten.
Voorbeeld:

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# open een bestand en zet het nummer van de FD in een environment variabele
$ exec {output}>logfile.txt

$ lsof -p $$ -a -d ${output}
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    2508  xxx   10w   REG    8,2        0 2849 /tmp/logfile.txt

# schrijf iets naar het geopende bestand
$ date >&${output}

$ cat logfile.txt 
Tue Jul 26 20:28:05 CEST 2022

# sluit het bestand
$ exec {output}>&-


Nou vind ik >&${output} niet echt een charmante manier om naar het bestand te schrijven, het is niet echt extra handig dit om achter een groot aantal regels van een bash shellscript te schrijven.

Waar gebruik je dit nou voor in de praktijk?

„Ik kan ook ICT, want heel moeilijk is dit niet”

Alle reacties


Acties:
  • 0 Henk 'm!

  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 14-05 22:13

aawe mwan

Wat ook leuk is:

Topicstarter
Ik ben zelf nog op zoek geweest en deze functionaliteit lijkt heel erg niche te zijn.

Je gebruikt het als je een vrije file descriptor nodig hebt, het gaat er dus om dat bash een file descriptor voor je zoekt die nog vrij is. Je hebt een vrije file descriptor nodig als je bijvoorbeeld twee andere file descriptors met elkaar wilt verwisselen.

Voor je gewone shellscripts waarin je naast stdin/stdout nog een paar extra bestanden wilt lezen/schrijven, is het veel handiger om de standaard één-cijferige file descriptors (3 t/m 9) te gebruiken.

[ Voor 20% gewijzigd door aawe mwan op 30-07-2022 10:59 ]

„Ik kan ook ICT, want heel moeilijk is dit niet”