stdin/stderr redirections

ndemou at gmail.com ndemou at gmail.com
Tue Jul 10 15:00:43 EEST 2007


On 7/10/07, Giorgos Keramidas <keramida at ceid.upatras.gr> wrote:
> On 2007-07-10 13:03, Nick Demou <ndemou at gmail.com> wrote:
> > θέλω να κάνω το παρακάτω μπερδεμένο redirection του output μιας εντολής
> (CMD):
> >
> > - το stdout ΚΑΙ το stderr της εντολής CMD να πάει στο αρχείο
> > OutPlusErr.out αλλά να γίνει και apend στο αρχείο grant.log
> > - το stderr της εντολής CMD να πάει στο Err.out
> >
> > ιδέες (ή ένα καλό reference για το πως ακριβώς λειτουργούν τα > >> >&
> > | tee κτλ πριν κάνω 2000 δοκιμές)?
>
> [...]
> Θα χρειαστείς κάτι σαν fork() / pipe() και ένα child process που μπορεί
> να στείλει το STDERR σε δυο μέρη ταυτόχρονα (δηλ. μια δική σου
> mini-tee(1) σε Perl ή Python).

χμμ... νόμιζα ότι θα ήταν εύκολο σε bash ή sh και απλά δεν είχα τις
απαιτούμενες γνώσεις αλλά προφανώς δεν είναι.

Έψαξα πάντως πιο εντατικά στο google και βρήκα μια ενδιαφέρουσα σελίδα
με αυτό το κοντινό παράδειγμα:

Capturing stderr in one file and stderr and stdout combined in another file
(((echo out >&1; echo err >&2) 3>&2 2>&1 1>&3 | \
tee stderr.txt ) 3>&2 2>&1 1>&3 ) > combined.txt 2>&1
  -- http://www.cpqlinux.com/redirect.html

δεν πρόλαβα να δω διεξοδικά την σελίδα αλλά μου δίνει ελπίδες ότι αυτό
που θέλω γίνεται και με bash. Μάλον όμως η εντολή θα είναι πραγματική
σπαζοκεφαλιά και θα θυμίζει source κώδικα κατανοητής γλώσσας υψηλού
επιπέδου που όμως μετά πέρασε απο κάποιο αλγόριθμο συμπίεσης και απο
γραμμή modem με λάθη.
Δεν είμαι  σίγουρος αν θα προσπαθήσω να καταλάβω την λογική του bash ή
αν θα το γράψω σε python για να μην σπαζοκεφαλιάζομαι (σίγουρα θα
προτιμούσα το bash σε αυτή την περίπτωση αλλά δεν βρίσκω πάντα το
χρόνο να παλέψω μαζί του)




More information about the Linux-greek-users mailing list