Σελ. 84 από 149 ΠρώτηΠρώτη ... 64747982838485868994104 ... ΤελευταίαΤελευταία
Εμφάνιση 1.246-1.260 από 2222
  1. #1246
    Εγγραφή
    06-07-2005
    Περιοχή
    Νέα Υόρκη
    Ηλικία
    49
    Μηνύματα
    11.668
    Downloads
    6
    Uploads
    2
    Τύπος
    Cable
    Ταχύτητα
    300 Mbps down/10 Mbps up
    ISP
    Spectrum
    Έχω ένα bash script το οποίο παράγει κάποιο output στην κονσόλα με echo:
    Κώδικας:
    #!/bin/bash -e
    
    words="some string with spaces to separate words"
    for word in ${words}; do
    # my code is here
      echo -n "-"
    done
    echo "Done!"
    Όλα καλά ως εδώ. Θέλω να καλέσω αυτό το script μέσα από ένα άλλο, αλλά το output της κονσόλας να γίνει indented. Δοκίμασα με sed, και παίζει μιά χαρά:
    Κώδικας:
    my_script | sed 's/^/  /'
    Το θέμα είναι ότι η sed περιμένει να τελειώσει η γραμμή πριν εμφανίσει το output, οπότε όση ώρα το αρχικό script είναι μέσα στο loop και καλεί την echo -n δεν έχω output, μέχρι να βγει από το loop και τελειώσει η γραμμή. Υπάρχει τρόπος να κάνω το indentation και να έχω output σε πραγματικό χρόνο;

  2. #1247
    Εγγραφή
    27-08-2004
    Περιοχή
    internet
    Μηνύματα
    23.371
    Downloads
    58
    Uploads
    17
    Άρθρα
    9
    Ταχύτητα
    49999 / 4999
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΚΟΥΝΟΥΠΙΔΙΑΝΩΝ
    Τρέξε ένα `echo -n` που κάνει το indentation πριν τρέξεις το for; Ή εναλλακτικά πριν τρέξεις το script;

    Κώδικας:
    echo -n "  " && my_script
    Κώδικας:
    echo -n "  "
    for word in ${words}; do
    # my code is here
      echo -n "-"
    done
    Gentoo Linux: mess with the best and you might learn something
    δικτυακή παράσταση | twitter | within specifications
    Αν φτάσω τα 100 και με ρωτήσουν το μυστικό της μακροζωίας θα πω: Πάντα είχα 3 ποτήρια μπροστά μου· ένα με νερό, ένα με καφέ & ένα με αλκοόλ.

  3. #1248
    Εγγραφή
    06-07-2005
    Περιοχή
    Νέα Υόρκη
    Ηλικία
    49
    Μηνύματα
    11.668
    Downloads
    6
    Uploads
    2
    Τύπος
    Cable
    Ταχύτητα
    300 Mbps down/10 Mbps up
    ISP
    Spectrum
    Παράθεση Αρχικό μήνυμα από mrsaccess Εμφάνιση μηνυμάτων
    Τρέξε ένα `echo -n` που κάνει το indentation πριν τρέξεις το for; Ή εναλλακτικά πριν τρέξεις το script;

    Κώδικας:
    echo -n "  " && my_script
    Κώδικας:
    echo -n "  "
    for word in ${words}; do
    # my code is here
      echo -n "-"
    done
    Ούτε το ένα ούτε το άλλο γίνεται. Το script δεν μπορώ να το αλλάξω γιατί είναι πολύ γενικού χαρακτήρα, και έτσι κι αλλιώς ανάλογα με το που το καλώ θέλω το indentation να είναι διαφορετικό. Το να καλώ echo -n πριν το script επίσης δεν γίνεται γιατί έχει πολλές σειρές output, με τον τρόπο αυτό θα γίνει μόνο η πρώτη indent. Ψάχνω πιο σοφιστικέ λύσεις, τις απλές πιστεύω τις έχω σκεφτεί ήδη

  4. #1249
    Εγγραφή
    27-08-2004
    Περιοχή
    internet
    Μηνύματα
    23.371
    Downloads
    58
    Uploads
    17
    Άρθρα
    9
    Ταχύτητα
    49999 / 4999
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΚΟΥΝΟΥΠΙΔΙΑΝΩΝ
    Ε, τότε αν το βάλεις σαν μεταβλητή που περνάς στο script και την τυπώνει πριν την for με `echo -n`;
    Gentoo Linux: mess with the best and you might learn something
    δικτυακή παράσταση | twitter | within specifications
    Αν φτάσω τα 100 και με ρωτήσουν το μυστικό της μακροζωίας θα πω: Πάντα είχα 3 ποτήρια μπροστά μου· ένα με νερό, ένα με καφέ & ένα με αλκοόλ.

  5. #1250
    Εγγραφή
    06-07-2005
    Περιοχή
    Νέα Υόρκη
    Ηλικία
    49
    Μηνύματα
    11.668
    Downloads
    6
    Uploads
    2
    Τύπος
    Cable
    Ταχύτητα
    300 Mbps down/10 Mbps up
    ISP
    Spectrum
    Παράθεση Αρχικό μήνυμα από mrsaccess Εμφάνιση μηνυμάτων
    Ε, τότε αν το βάλεις σαν μεταβλητή που περνάς στο script και την τυπώνει πριν την for με `echo -n`;
    Το σκέφτηκα, αλλά τότε θα πρέπει να κάνω μεγάλο sanity checking γιατί δεν εμπιστεύομαι τους χρήστες...

  6. #1251
    Εγγραφή
    27-08-2004
    Περιοχή
    internet
    Μηνύματα
    23.371
    Downloads
    58
    Uploads
    17
    Άρθρα
    9
    Ταχύτητα
    49999 / 4999
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΚΟΥΝΟΥΠΙΔΙΑΝΩΝ
    Sanitation is easy. Πριν το for:

    Κώδικας:
    INDENTATION=${INDENTATION:-}
    echo -n "${INDENTATION//[^[:space:]]/}"
    Όποιος χαρακτήρας δεν είναι whitespace, θα διαγραφεί αυτόματα.

    Όσοι θέλουν να το εκμεταλλευτούν, κάνουν export το INDENTATION.
    Gentoo Linux: mess with the best and you might learn something
    δικτυακή παράσταση | twitter | within specifications
    Αν φτάσω τα 100 και με ρωτήσουν το μυστικό της μακροζωίας θα πω: Πάντα είχα 3 ποτήρια μπροστά μου· ένα με νερό, ένα με καφέ & ένα με αλκοόλ.

  7. #1252
    Εγγραφή
    20-12-2005
    Μηνύματα
    3.227
    Downloads
    4
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    49997/4997
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΞΑΝΘΗ
    Router
    Speedport W 724V
    SNR / Attn
    24,4(dB) / (dB)
    Παράθεση Αρχικό μήνυμα από tsigarid Εμφάνιση μηνυμάτων
    Έχω ένα bash script το οποίο παράγει κάποιο output στην κονσόλα με echo:
    Κώδικας:
    #!/bin/bash -e
    
    words="some string with spaces to separate words"
    for word in ${words}; do
    # my code is here
      echo -n "-"
    done
    echo "Done!"
    Όλα καλά ως εδώ. Θέλω να καλέσω αυτό το script μέσα από ένα άλλο, αλλά το output της κονσόλας να γίνει indented. Δοκίμασα με sed, και παίζει μιά χαρά:
    Κώδικας:
    my_script | sed 's/^/  /'
    Το θέμα είναι ότι η sed περιμένει να τελειώσει η γραμμή πριν εμφανίσει το output, οπότε όση ώρα το αρχικό script είναι μέσα στο loop και καλεί την echo -n δεν έχω output, μέχρι να βγει από το loop και τελειώσει η γραμμή. Υπάρχει τρόπος να κάνω το indentation και να έχω output σε πραγματικό χρόνο;
    Υπάρχουν πολλές μέθοδοι για αυτό με εξωτερικές εντολές (όπως με το sed που έτρεξες) αλλά δυστυχώς όσες μου έρχονται στο μυαλό όλες δουλεύουν με line buffering δηλαδή θα σου εμφανίσουν στο τέλος την γραμμή όπως κάνει και το sed.

    Όταν θέλεις να χώσεις ένα "hook" πριν μια εντολή τότε αυτό συνήθως γίνεται με traps. Ένας τρόπος θα ήταν ο παρακάτω:

    Κώδικας:
    % cat z1.sh 
    #!/bin/bash -e
    words="some string with spaces to separate words"
    echo Starting
    for word in ${words}; do
    	sleep 1
    	echo -n "-"
    done
    echo Finishing
    echo Done
    
    % cat z2.sh 
    #!/bin/bash -e
    function GEO() {
    	if [[ "$BASH_COMMAND" =~ ^echo ]]; then
    		echo -ne "\t"
    	fi
    }
    set -o functrace
    trap 'GEO' DEBUG
    source ./z1.sh
    
    % ./z1.sh 
    Starting
    -------Finishing
    Done
    
    % ./z2.sh 
    	Starting
    	-	-	-	-	-	-	-	Finishing
    	Done
    Η μεθοδολογία είναι να ορίσεις μια συνάρτηση που να τρέχει ως trap στο debug signal οπότε να τρέχει πριν κάθε εκτέλεση. Δυστυχώς και εδώ υπάρχουν προβλήματα. Επειδή τρέχει για κάθε γραμμή, αν βάλεις ένα απλό "echo τάδε", αυτό θα τρέξει και στην γραμμή "words=τάδε" και θα σου χαλάσει την έξοδο. Ελέγχοντας ποια είναι η τρέχουσα γραμμή και τρέχοντας μόνο για echo, παίρνεις σωστό αποτέλεσμα στα Starting και done αλλά χαλάει τις παύλες επειδή βάζει ένα tab πριν από κάθε μία οπότε πρέπει να γράψεις λίγο πολύπλοκη συνάρτηση για το πετύχεις.

    Όταν μιλάμε για interactive shells, τότε είναι πολύ εύκολη η λύση γιατί μπορείς με την συνάρτηση PROMPT_COMMAND να το κάνεις να μην τρέχει πολλαπλές φορές μέσα σε βρόχους και επίσης μπορείς πολύ πιο εύκολα να χρησιμοποιήσεις την μεταβλητή PS0 χωρίς traps και βλακείες. Όλα αυτά όμως νομίζω δεν παίζουν σε scripts.

    Ίσως φυσικά να γίνεται και πιο απλά με μία εντολή και να μην το γνωρίζω
    "I like offending people, because I think people who get offended should be offended" - Linus Torvalds

    "Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
    κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
    Γα.... την πολιτική ορθότητα.

  8. #1253
    Εγγραφή
    10-06-2011
    Περιοχή
    offroad
    Μηνύματα
    2.621
    Downloads
    6
    Uploads
    0
    Τύπος
    Cable
    Ταχύτητα
    800/150
    ISP
    Get Norway
    Router
    OPNsense
    κάτω από ένα φάκελο έχω mp3 αρχεία απο audiobook. Τα αρχεία πάνε
    Κώδικας:
    CD01 track01
    CD01 track02
    CD01 trackXX
    CD02 track01
    CD02 track02
    CD05 track01
    ..........
    ........

    για ένα cd μπορεί να φτιαχτεί m3u με
    Κώδικας:
    ls -1 > playlist.m3u
    Πως θα μπορούσα να φτιάξω ενα playlist για ολα τα cd ?

  9. #1254
    Εγγραφή
    27-08-2004
    Περιοχή
    internet
    Μηνύματα
    23.371
    Downloads
    58
    Uploads
    17
    Άρθρα
    9
    Ταχύτητα
    49999 / 4999
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΚΟΥΝΟΥΠΙΔΙΑΝΩΝ
    Κώδικας:
    find . -type f > playlist.m3u
    Gentoo Linux: mess with the best and you might learn something
    δικτυακή παράσταση | twitter | within specifications
    Αν φτάσω τα 100 και με ρωτήσουν το μυστικό της μακροζωίας θα πω: Πάντα είχα 3 ποτήρια μπροστά μου· ένα με νερό, ένα με καφέ & ένα με αλκοόλ.

  10. #1255
    Εγγραφή
    10-06-2011
    Περιοχή
    offroad
    Μηνύματα
    2.621
    Downloads
    6
    Uploads
    0
    Τύπος
    Cable
    Ταχύτητα
    800/150
    ISP
    Get Norway
    Router
    OPNsense
    Παράθεση Αρχικό μήνυμα από mrsaccess Εμφάνιση μηνυμάτων
    Κώδικας:
    find . -type f > playlist.m3u
    τσου...
    δεν βγαίνει σωστά η σειρά
    Κώδικας:
     ..AudioBooks/Bobbie Peers/Luridiumstyven % find . -type f
    ./04 Luridiumstyven CD 04 Spor 04.mp3
    ./03 Luridiumstyven CD 01 Spor 03.mp3
    ./11 Luridiumstyven CD 04 Spor 11.mp3
    ./16 Luridiumstyven CD 01 Spor 16.mp3
    ./06 Luridiumstyven CD 02 Spor 06.mp3
    ./02 Luridiumstyven CD 03 Spor 02.mp3
    ./13 Luridiumstyven CD 02 Spor 13.mp3
    ./07 Luridiumstyven CD 02 Spor 07.mp3
    ./03 Luridiumstyven CD 03 Spor 03.mp3
    ./12 Luridiumstyven CD 02 Spor 12.mp3
    Τελευταία επεξεργασία από το μέλος patch : 30-10-18 στις 23:11.

  11. #1256
    Εγγραφή
    07-02-2007
    Μηνύματα
    747
    Downloads
    6
    Uploads
    0
    Κώδικας:
    find . -type f | sort > playlist.m3u
    how about this?
    Οδηγός για LaTeX στα Ελληνικά
    Οδηγός για Linux στα Ελληνικά

  12. #1257
    Εγγραφή
    10-06-2011
    Περιοχή
    offroad
    Μηνύματα
    2.621
    Downloads
    6
    Uploads
    0
    Τύπος
    Cable
    Ταχύτητα
    800/150
    ISP
    Get Norway
    Router
    OPNsense
    Παράθεση Αρχικό μήνυμα από pmav99 Εμφάνιση μηνυμάτων
    Κώδικας:
    find . -type f | sort > playlist.m3u
    how about this?
    Κώδικας:
    ./01 Luridiumstyven CD 01 Spor 01.mp3
    ./01 Luridiumstyven CD 02 Spor 01.mp3
    ./01 Luridiumstyven CD 03 Spor 01.mp3
    ./01 Luridiumstyven CD 04 Spor 01.mp3
    ./02 Luridiumstyven CD 01 Spor 02.mp3
    ./02 Luridiumstyven CD 02 Spor 02.mp3
    ./02 Luridiumstyven CD 03 Spor 02.mp3
    ./02 Luridiumstyven CD 04 Spor 02.mp3
    ./03 Luridiumstyven CD 01 Spor 03.mp3
    ./03 Luridiumstyven CD 02 Spor 03.mp3
    ./03 Luridiumstyven CD 03 Spor 03.mp3
    ./03 Luridiumstyven CD 04 Spor 03.mp3
    ./04 Luridiumstyven CD 01 Spor 04.mp3
    ./04 Luridiumstyven CD 02 Spor 04.mp3
    ./04 Luridiumstyven CD 03 Spor 04.mp3
    tsou

    για ενα cd πρεπει να δώσω
    Κώδικας:
    ls -w1 | grep 'CD 01' > playlist.m3u

  13. #1258
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από pmav99 Εμφάνιση μηνυμάτων
    Κώδικας:
    find . -type f | sort > playlist.m3u
    how about this?
    Ξεκίνα την sort από τον 4ο χαρακτήρα για να αγνοήσει το πρώτο νούμερο:
    Κώδικας:
    find . -type f | sort -k3 > playlist.m3u


    Κατάλαβα λάθος το όρισμα -κ!

    Ξεκίνα την sort από την δεύτερη στήλη για να αγνοήσει το πρώτο νούμερο:
    Κώδικας:
    find . -type f | sort -k2 > playlist.m3u
    Τελευταία επεξεργασία από το μέλος MitsakosGR : 31-10-18 στις 12:00.

  14. #1259
    Εγγραφή
    10-06-2011
    Περιοχή
    offroad
    Μηνύματα
    2.621
    Downloads
    6
    Uploads
    0
    Τύπος
    Cable
    Ταχύτητα
    800/150
    ISP
    Get Norway
    Router
    OPNsense
    Παράθεση Αρχικό μήνυμα από MitsakosGR Εμφάνιση μηνυμάτων
    Ξεκίνα την sort από τον 4ο χαρακτήρα για να αγνοήσει το πρώτο νούμερο:
    Κώδικας:
    find . -type f | sort -k3 > playlist.m3u


    Κατάλαβα λάθος το όρισμα -κ!

    Ξεκίνα την sort από την δεύτερη στήλη για να αγνοήσει το πρώτο νούμερο:
    Κώδικας:
    find . -type f | sort -k2 > playlist.m3u
    σωστός! ευχαριστώ

    Spoiler:
    Κώδικας:
     % find . -type f | sort -k2
    ./01 Luridiumstyven CD 01 Spor 01.mp3
    ./02 Luridiumstyven CD 01 Spor 02.mp3
    ./03 Luridiumstyven CD 01 Spor 03.mp3
    ./04 Luridiumstyven CD 01 Spor 04.mp3
    ./05 Luridiumstyven CD 01 Spor 05.mp3
    ./06 Luridiumstyven CD 01 Spor 06.mp3
    ./07 Luridiumstyven CD 01 Spor 07.mp3
    ./08 Luridiumstyven CD 01 Spor 08.mp3
    ./09 Luridiumstyven CD 01 Spor 09.mp3
    ./10 Luridiumstyven CD 01 Spor 10.mp3
    ./11 Luridiumstyven CD 01 Spor 11.mp3
    ./12 Luridiumstyven CD 01 Spor 12.mp3
    ./13 Luridiumstyven CD 01 Spor 13.mp3
    ./14 Luridiumstyven CD 01 Spor 14.mp3
    ./15 Luridiumstyven CD 01 Spor 15.mp3
    ./16 Luridiumstyven CD 01 Spor 16.mp3
    ./01 Luridiumstyven CD 02 Spor 01.mp3
    ./02 Luridiumstyven CD 02 Spor 02.mp3
    ./03 Luridiumstyven CD 02 Spor 03.mp3
    ./04 Luridiumstyven CD 02 Spor 04.mp3
    ./05 Luridiumstyven CD 02 Spor 05.mp3
    ./06 Luridiumstyven CD 02 Spor 06.mp3
    ..............

  15. #1260
    Εγγραφή
    08-03-2007
    Μηνύματα
    23.521
    Downloads
    25
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Εστω ενα git repo, στο github συγκεκριμενα, καποιου ασχετου dev, το οποιο κανω git clone καθε τοσο στο δικο μου pc.
    α) Επειδη ειναι μεγαλο (200+MB) και καθε φορα πρεπει να περιμενω αρκετη ωρα για να το κανει ολο, και οσο το κανει το git μου τρωει ολο το bw, υπαρχει τροπος να κατεβαζει καθε φορα μονο οτι αλλαξε και οχι οτι βρισκει μπροστα του?
    β) Αν το παραπανω δεν γινεται, επειδη απο αυτα τα 200+MB ενα μεγαλο ποσοστο ειναι σαβουρα στον κρυφο φακελο .git, γινεται με καποιο τροπο να τον παρακαμπτει?
    ديميتريس

Σελ. 84 από 149 ΠρώτηΠρώτη ... 64747982838485868994104 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Βοήθεια για ένα απλό bash script
    Από AddictedToChaos στο φόρουμ Unix - Linux
    Μηνύματα: 34
    Τελευταίο Μήνυμα: 22-07-11, 01:57
  2. bash - matlab
    Από simeon.mattes στο φόρουμ Unix - Linux
    Μηνύματα: 25
    Τελευταίο Μήνυμα: 25-06-08, 23:00
  3. Bash Script help (Αρχάριος)
    Από weakwire στο φόρουμ Unix - Linux
    Μηνύματα: 12
    Τελευταίο Μήνυμα: 08-05-07, 00:41
  4. bash rename (mv)
    Από hayzel στο φόρουμ Unix - Linux
    Μηνύματα: 6
    Τελευταίο Μήνυμα: 07-01-07, 16:33

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας