Puncte:1

Denumirea fișierului utilizând conținutul ieșirii terminalului

drapel cn

Acest thread Aici a discutat cum să scoateți conținutul terminalului într-un fișier. În special, cu aceasta:

comanda |& tee output.txt

Întrebare: este posibil să se utilizeze o parte din conținutul de ieșire pentru a denumi fișierul. De exemplu, să presupunem că conținutul este tipărit rând cu rând după cum urmează:

action_1_last_time_2021_06_15_21_34_56
action_2_last_time_2021_06_15_21_35_23
action_3_last_time_2021_06_15_21_43_45
...
action_320032_last_time_2021_06_15_23_59_14

Este posibil să folosiți conținutul ultimei rânduri pentru a denumi fișierul, în loc de out.txt pe linia de comandă? Un fel de variabilă, poate? Aici, se presupune că ultima linie este definită ca fiind una care apare chiar înainte ca fișierul să fie închis (și comanda se termină de rulat).

Puncte:5
drapel hr

Oricum ai rezolva acest lucru, va trebui să tamponezi ieșirea comenzii până când poți citi ultima linie, pentru a ști unde să o scrii.

Singura modalitate rațională în care mă gândesc să fac acest lucru este să folosesc un fișier temporar, apoi să-l redenumim:

tmpfile=$(mktemp)
outfile=$(comanda | tee „$tmpfile” | coada -n 1)
mv „$tmpfile” „$outfile”

Te poți schimba | la |& dacă doriți cu adevărat să capturați atât stdout, cât și stderr - dar rețineți că acest lucru Mai duce la denumirea fișierului de ieșire după un mesaj de eroare (deși probabil că există o modalitate de a evita asta folosind un descriptor inteligent de fișier fu).

Este posibil să se implementeze o soluție alternativă folosind burete comanda (din pachet moreutils), dar probabil că folosește aceeași tehnică sub capotă. De fapt, spune pagina de manual

   Când este posibil, sponge creează sau actualizează fișierul de ieșire atomic prin
   redenumirea unui fișier temporar în loc.

O altă opțiune ar putea fi folosirea rev pentru a inversa rândurile astfel încât să puteți citi mai întâi ultima linie și apoi rev din nou pentru a restabili ordinea de ieșire. Cu toate acestea, aceasta implică tamponarea întregii ieșiri de două ori.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.