echo on onder bash?

Pagina: 1
Acties:
  • 432 views sinds 30-01-2008
  • Reageer

  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
ik draai sinds een week xubuntu op mijn laptop, naar volle tevredenheid.

ik vroeg me alleen af: is het mogelijk om de commando's die bash scripts uitvoeren te bekijken als ze draaien? ik snap dat ik ze in nano of vi kan openen maar ik zou graag tijdens het draaien ervan zien wat ze doen, zodat ik hopelijk weer nieuwe dingen leer.

onder ms-dos kon je echo off in je .bat file zetten, om zo de output te onderdrukken. ik wil dus zeg maar het tegenovergestelde bereiken...

  • DrClaw
  • Registratie: November 2002
  • Laatst online: 10-01 20:44
de output komt toch standaard gewoon in je terminal terecht ?

tenzij het gepiped staat naar /dev/null of een file ofzo

  • mithras
  • Registratie: Maart 2003
  • Niet online
st0p schreef op woensdag 08 augustus 2007 @ 18:19:
ik draai sinds een week xubuntu op mijn laptop, naar volle tevredenheid.

ik vroeg me alleen af: is het mogelijk om de commando's die bash scripts uitvoeren te bekijken als ze draaien? ik snap dat ik ze in nano of vi kan openen maar ik zou graag tijdens het draaien ervan zien wat ze doen, zodat ik hopelijk weer nieuwe dingen leer.

onder ms-dos kon je echo off in je .bat file zetten, om zo de output te onderdrukken. ik wil dus zeg maar het tegenovergestelde bereiken...
Nano en vi(m) zijn cli editors, dus de output daarvan zit al direct in je terminal.

De meeste commandline opdrachten hebben een minimale output. Wil je meer te zien krijgen (bijvoorbeeld bij debuggen), kan je vaak een verbose optie aanzetten. Standaard worden veel event handlers onderdrukt richting stdout, maar met verbose niet meer.
Kijk eens in de help opties ("command" --help vaak) of de manual pages (man "command", bijvoorbeeld man ls) en zoek de verbose flag (vaak -v of --verbose) :)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
st0p schreef op woensdag 08 augustus 2007 @ 18:19:
(...) de commando's (...)

(...) de output (...)
Wat wil je nou? :?

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 00:42

DinX

Motormuis

Een duidelijkere vraagstelling zou al wat handiger zijn ja.

Wil je output zien van wat da programma's doen kan je meestal -v of --v (of ipv v verbose) achter je commando zetten.

Is het een script dat output naar een bestand schrijft kan je de inhoud van dat bestand "live" volgen door tail -f <bestand>

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
-x

  • benoni
  • Registratie: November 2003
  • Niet online
Bedoelt 'verbose' ;) O-)

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 00:42

DinX

Motormuis

whoops ;)

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • benoni
  • Registratie: November 2003
  • Niet online
In welke context? Of is de smiley mislukt?

sh -x dus :) Dank!

[ Voor 6% gewijzigd door benoni op 08-08-2007 18:47 ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
code:
1
         -x       Print commands and their arguments as they  are executed.
:)

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 00:42

DinX

Motormuis

Oeh, die kende ik nog niet. Een mens leert nog wat bij hier :p

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
sorry als de oorspronkelijke vraagstelling niet helder was, maar ik bedoelde dus dat ik wil zien welke commando's er worden uitgevoerd...

ik zal als ik thuis ben die -x optie uitproberen, zo te zien is dat wat ik bedoel.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16:23

deadinspace

The what goes where now?

Of set -x, om de optie te activeren in een bestaande shell (zowel interactief als als script interpreter).

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 00:42

DinX

Motormuis

st0p schreef op woensdag 08 augustus 2007 @ 18:46:
sorry als de oorspronkelijke vraagstelling niet helder was, maar ik bedoelde dus dat ik wil zien welke commando's er worden uitgevoerd...

ik zal als ik thuis ben die -x optie uitproberen, zo te zien is dat wat ik bedoel.
Welke er worden uitgevoerd ? Bedoel je processen ?

ps -aux dan

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
ik zal het nog een keer zo duidelijk mogelijk proberen uit te leggen:

als ik onder ms-dos de volgende volledig fictieve .bat file zou uitvoeren:
code:
1
2
3
4
5
cd c:\blaat
copy *.* d:\blaat\
cd d:\blaat
d:
delete bestand.txt


dan zou mijn output iets als het volgende zijn:
code:
1
2
3
4
5
6
7
c:\>cd c:\blaat
c:\blaat>copy *.* d:\blaat\
[rits bestanden die gekopieerd worden]
c:\blaat>cd d:\blaat
c:\blaat>d:
d:\blaat>delete bestand.txt
Weet u zeker dat u bestand.txt wil verwijderen? (j/n)


als ik nu bovenaan mijn fictieve .bat bestand de volgende regel toevoeg:
code:
1
@echo off

dan is mijn output bij het draaien van het batch bestand gereduceert tot:
code:
1
2
[rits bestanden die gekopieerd worden]
Weet u zeker dat u bestand.txt wil verwijderen? (j/n)


puur vanwege de educatieve waarde zou ik graag zien dat als ik een shell-script uitvoer, ik niet alleen de output van ieder commando op mijn scherm krijg, maar ook de commando's zelf.

ik hoop dat het nu echt duidelijk is, nogmaals mijn excuses als dat eerder niet zo was.

als ik met sh -x een nieuwe shell start, dan worden alleen de commando's die ik zelf intik herhaald.

en ps -aux is dus ook absoluut niet wat ik bedoel (maar uiteraard toch bedankt voor de moeite!)

Verwijderd

En toch is sh -x precies wat je wilt hebben, aangezien je het ook als volgt aan kunt roepen:
code:
1
sh -x ./naam/van/je/script.sh

  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
super bedankt, dat was inderdaad precies wat ik bedoelde!

Verwijderd

Of natuurlijk even de shebang regel aanpassen:

#!/bin/sh -x

Dit zou ook moeten werken, maar is niet erg handig natuurlijk. Met de eerdergenoemde commando's en flags moet je er wel komen lijkt me.

  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
daarmee stel ik hem zeker permanent zo in? dat is een beetje overkill ;)

  • benoni
  • Registratie: November 2003
  • Niet online
set +x :P

Verwijderd

bedoel je zo?

evil@eagle:~/bin$ bash --debug -v ./conky
#! /bin/bash
sleep 15 && conky &
exit
evil@eagle:~/bin$

  • st0p
  • Registratie: April 2004
  • Laatst online: 19-07-2024
naaaaaaaaah die sh -x ./script.sh werkt goed genoeg ;)

god, wat kan het heerlijk zijn om een nieuw (relatief) obscuur commando te ontdekken :+

  • TheFirepit
  • Registratie: April 2004
  • Laatst online: 10:12

TheFirepit

Vuurbal

Je kan ook `set -x` of `set -xv` aan het begin van je script toevoegen, dan hoef je niet de hele tijd `sh -x script.ksh` te doen.

It's nice to be important, but it's more important to be nice.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

st0p schreef op donderdag 09 augustus 2007 @ 00:45:
naaaaaaaaah die sh -x ./script.sh werkt goed genoeg ;)

god, wat kan het heerlijk zijn om een nieuw (relatief) obscuur commando te ontdekken :+
Er is weinig obscuur aan; sterker nog, sh is de kern van al je basic-scriptactiviteiten. Leer het kennen of gebruik een andere interpreter voor je scripts.
Pagina: 1