Mejsla ut ”progress-%” från terminalprogram

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Johnny Rosenberg »

Att jag krånglar till saker beror väl på att jag är den ständige nybörjaren. Jag verkar inte kunna ta till mig ”tänket”… Är väl för gammal, helt enkelt; svårt att lära en gammal hund att sitta.

Experimenterade med returvärden igår en del men fick ingen skillnad på om jag testade med en flac-fil som jag vet fungerar eller om jag testade med en vanlig textfil, som rimligtvis borde orsaka ett regn av felmeddelanden.

Men jag ska testa lite till.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Johnny Rosenberg »

Johnny Rosenberg skrev:Att jag krånglar till saker beror väl på att jag är den ständige nybörjaren. Jag verkar inte kunna ta till mig ”tänket”… Är väl för gammal, helt enkelt; svårt att lära en gammal hund att sitta.

Experimenterade med returvärden igår en del men fick ingen skillnad på om jag testade med en flac-fil som jag vet fungerar eller om jag testade med en vanlig textfil, som rimligtvis borde orsaka ett regn av felmeddelanden.

Men jag ska testa lite till.
Har testat lite nu, men får inte till det med enbart returvärde. Vet ju inte heller vilket returvärde jag får; är det returvärdet från flac eller från zenity? För sett ur zenitys perspektiv blir det ju inte fel även om jag försöker köra ”flac -t” på en textfil, så att säga.

Jag har nu testat att sätta kommantot i en if-sats, men vilka filer jag än väljer så kör den bara på som om allt vore OK, dock hinner aldrig förloppsindikatorn visas (använder ”--auto-close” så att rutan stängs automatiskt) om jag kör med ogiltiga filer.

Har även testat med att skriva ut $? direkt efter kommandot, men den visar glatt 0 vad jag än väljer för tokiga filer.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Konservburk »

Johnny Rosenberg skrev:Har testat lite nu, men får inte till det med enbart returvärde. Vet ju inte heller vilket returvärde jag får; är det returvärdet från flac eller från zenity? För sett ur zenitys perspektiv blir det ju inte fel även om jag försöker köra ”flac -t” på en textfil, så att säga.
Det var i första hand returvärdet från flac jag syftade på. När det gäller zenity så talar det returvärdet bara om ifall du tryckt på OK eller Avbryt. Men det kan ju å andra sidan vara intressant att faktiskt lyda och avbryta om någon trycker på Avbryt och inte bara fortstätta utan vidare.

Det känns som att du vill ha mer kontroll över vad som faktsikt händer. Jag tror att du kommer känna dig bekvämare om vi skippar externa hjälpmedel och istället låter bash hantera utdatan helt på egen hand. Jag tänker mig något i stil med while read eller motsvarande. Jag ska se om jag kan få ihop något åt det hållet lite senare när jag har ätit.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Johnny Rosenberg »

Konservburk skrev:Jag tror att du kommer känna dig bekvämare om vi skippar externa hjälpmedel och istället låter bash hantera utdatan helt på egen hand.
Vad räknar du som ”externa hjälpmedel”?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Konservburk »

Johnny Rosenberg skrev:
Konservburk skrev:Jag tror att du kommer känna dig bekvämare om vi skippar externa hjälpmedel och istället låter bash hantera utdatan helt på egen hand.
Vad räknar du som ”externa hjälpmedel”?
Kommandon som inte är inbyggda i bash. I de tidigere försöken har vi använt stdbuf, tr, xargs, sed. Om du är osäker på om ett kommando är externt eller inbyggt så kan du ta reda på det så här:

Kod: Markera allt

type kommando
Svarar den kommando is a shell builtin så är det inbyggt och svarar den med en sökväg så är det externt.

När jag säger utan externa hjälpmedel så bortser jag förstås från flac och zenity som är källan respektive sänkan, dvs det vi får utdata ifrån och det vi ska skicka indata till.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:
Konservburk skrev:Jag tror att du kommer känna dig bekvämare om vi skippar externa hjälpmedel och istället låter bash hantera utdatan helt på egen hand.
Vad räknar du som ”externa hjälpmedel”?
Kommandon som inte är inbyggda i bash. I de tidigere försöken har vi använt stdbuf, tr, xargs, sed. Om du är osäker på om ett kommando är externt eller inbyggt så kan du ta reda på det så här:

Kod: Markera allt

type kommando
Svarar den kommando is a shell builtin så är det inbyggt och svarar den med en sökväg så är det externt.
Testade med ”echo” och den svarade faktiskt på svenska: ”echo är inbyggt i skalet”.
Konservburk skrev:När jag säger utan externa hjälpmedel så bortser jag förstås från flac och zenity som är källan respektive sänkan, dvs det vi får utdata ifrån och det vi ska skicka indata till.
Precis. Kanske väl avancerat att skriva ett rent bash-skript för att analysera en FLAC-fil, så jag håller med om att programmet flac nog är något som är svårt att vara utan i just detta fallet…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Konservburk »

Det blev så här tillslut:

Kod: Markera allt

#!/bin/bash

unset line
2>&1 flac -t filnamn.flac |
while
   IFS=
   read -rN1 char ||
   ! ${line+false}
do case "$char" in
   $'\b'|$'\n'|$'\r'|'')
      if [[ "$line" =~ ": " ]]
      then
         line="${line##*: }"
         [[ "$line" =~ [[:digit:]]+ ]] &&
         echo "$BASH_REMATCH"
         echo "#${line^}"
      fi
      unset line
      continue
   esac
   line="$line$char"
done |
zenity --progress &&
(exit "$PIPESTATUS") || exit
Det visade sig bli ett ganska intressant exempel med både ett par nyare bash-grejer och dessutom ett ställe där det för en gångs skull inte ska vara citat-tecken runt en variabel.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Johnny Rosenberg »

Konservburk skrev:Det blev så här tillslut:

Kod: Markera allt

#!/bin/bash

unset line
2>&1 flac -t filnamn.flac |
while
   IFS=
   read -rN1 char ||
   ! ${line+false}
do case "$char" in
   $'\b'|$'\n'|$'\r'|'')
      if [[ "$line" =~ ": " ]]
      then
         line="${line##*: }"
         [[ "$line" =~ [[:digit:]]+ ]] &&
         echo "$BASH_REMATCH"
         echo "#${line^}"
      fi
      unset line
      continue
   esac
   line="$line$char"
done |
zenity --progress &&
(exit "$PIPESTATUS") || exit
Det visade sig bli ett ganska intressant exempel med både ett par nyare bash-grejer och dessutom ett ställe där det för en gångs skull inte ska vara citat-tecken runt en variabel.
Spännande. Ska ta mig en närmare titt på det imorgon – ska sova nu så att jag orkar upp vid 5.

Märkte du någon skillnad i hastighet mot den tidigare enrads-lösningen? Om du nu testat, vill säga…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Mejsla ut ”progress-%” från terminalprogram

Inlägg av Konservburk »

Johnny Rosenberg skrev:Märkte du någon skillnad i hastighet mot den tidigare enrads-lösningen? Om du nu testat, vill säga…
Den var inte långsammare iaf, snarare snabbare om något. Men det är ju fortfarande flac som är hastighetsbegränsaren, och det går förstås inte att komma runt.
Skriv svar

Återgå till "Terminalforum"