this bash one-liner is beyond me

Pavlos Parissis p_pavlos at freemail.gr
Wed Jan 11 17:26:32 EET 2006


Hello Niko,
Αρχικό μήνυμα από  "Nick Demou (enLogic)" <ndemou at enlogic.gr>:

> στην σελίδα [1] βρήκα ένα bash one-liner το οποίο επιτρέπει σε ένα 
> χρήστη να εκπαιδευει το spamassassin (κάνωντας move τα  email που έχουν 
> κακοχαρακτηριστεί ως spam ή ham σε δύο άλλους φακέλους -it_is_spam , 
> it_is_ham-). Φυσικά δεν δούλεψε :-) και ψάχνωντας κατέληξα σε αυτό το 
> κομάτι της γραμμής το οποίο "χτυπάει" (όλα μια γραμμή):
> 
> $/usr/bin/tee >   \
> (/usr/bin/sa-learn --spam --single > /dev/null)   \
> | /usr/bin/spamc | /usr/lib/cyrus-imapd/deliver Inbox
> 
> αυτό που θεωρητικά θα έπρεπε να κάνει είναι να πάρει το stdin και να το 
> προωθήσει αφενώς στην εντολή
>     /usr/bin/sa-learn --spam --single > /dev/null

> και αφετέρου στην εντολή
Νομίζω οτί αυτό είναι λάθος, το παρακάτω θα πάρει μόνο τα errors από την
προηγούμενη εντολή δίοτι το
stdout της προηγούμενης πήγε στο /dev/null. Εκτός αν το sa-learn κάνει κάτι
διαφορετικό μετά stderr και stdout.
>     | /usr/bin/spamc | /usr/lib/cyrus-imapd/deliver Inbox
> 
> αν το τρέξεις όμως το bash παραπωνιέται:
>     bash: syntax error near unexpected token `('

βάλε \ πριν το ( και το ) ή βάλε την εντολή μέσα σε ''.
Αλλά γιατί είναι μέσα σε (), υπάρχει λόγος??

> εγώ κατέθεσα τα όπλα (ίσως και να έχω κάψει νευρώνες βεβαιά[2]) - καμιά 
> ιδέα?

προσπάθησε να εκτελέσεις μια προς μια την κάθε εντολή και δές τη επιστρέφει.


Παύλος






More information about the Linux-greek-users mailing list