Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

Το myprogram που στέλνει το output? Στο stdout ή αλλού;

Μόλις το τσέκαρα και το tee δουλεύει κανονικά...

$ cat foo.sh
echo 1
sleep 1
echo 2
sleep 1
echo 3

$ chmod +x foo.sh

$ ./foo.sh | tee out.txt
1
2
3

$ cat out.txt
1
2
3

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Μόλις τώρα, jim_p είπε

Με το watch νομιζω... 
Το εχω χρησιμοποιησει μια μονο φορα για να βλεπω τα σκαμπανεβασματα του σηματος του wifi απο το /proc/kati.

Το watch σου επιτρέπει να δεις συνεχόμενα την έξοδο ενός προγράμματος ώστε να προσέξεις κάποια αλλαγή που σε ενδιαφέρει όπως στην περίπτωση με το wifi σου. Ο tr3quart1sta θέλει κάτι άλλο. Τρέχει το πρόγραμμά του και πετάει την έξοδό του στο tee ώστε και να αποθηκεύσει την έξοδο στο αρχείο και να την βλέπει ταυτόχρονα στην οθόνη. Επειδή όμως υπάρχει μεγάλο buffer, αντί να βλέπει κάθε γραμμή όπως τυπώνεται, η συμπεριφορά είναι να περιμένεις να συμπληρωθεί το buffer και να βλέπεις ταυτόχρονα πχ 10 γραμμές.

9 λεπτά πριν, tr3quart1sta είπε

Πως μπορω να δω το output του tee "live"? Εχω ενα script που τρεχει κανα 10λεπτο και παραγει text το οποιο θα θελω να το βλεπω στην κονσολα και στο τελος να το αποθηκευει σε textfile. Με το


myprogram | tee myfile.txt

ομως δεν βλεπω τιποτα στην κονσολα την ωρα που τρεχει και μου τα βγαζει μαζεμενα στο τελος.

Αν το πρόγραμμά είναι δικό σου μπορείς ανάλογα την γλώσσα να βάλεις κώδικα που να αφαιρέσει το buffering. Αν είναι κάποιο binary τότε πρέπει να χρησιμοποιήσεις κάποιο εξωτερικό πρόγραμμα όπως το stdbuf των coreutils.

stdbuf -oL ./myprogram | tee myfile.txt

Το παραπάνω επιλέγει line buffering οπότε θα πρέπει να βλέπεις κάθε γραμμή όπως έρχεται. Επίσης μπορείς να δοκιμάσεις και με -o0 για καθόλου buffering.

  • Like 1
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μια και είδα ότι αντέδρασες, για πες έπαιξε ?

Το tee είναι λίγο παράξενο από την άποψη ότι αλλάζει πολλές παραμέτρους και σου βάζει εμπόδια. Το λέει και στην manpage του stdbuf ότι με το tee μπορεί να μην παίζει σωστά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

15 ώρες πριν, imitheos είπε

Μια και είδα ότι αντέδρασες, για πες έπαιξε ?

Το tee είναι λίγο παράξενο από την άποψη ότι αλλάζει πολλές παραμέτρους και σου βάζει εμπόδια. Το λέει και στην manpage του stdbuf ότι με το tee μπορεί να μην παίζει σωστά.

Οχι ακομα δεν μου το εμφανιζει, αλλα ειχα ξεχασει να αναφερω οτι τα στελνω στο background και λεω ισως γιαυτο να μην παιζει. Αλλα μετα βρηκα ενα τροπο να τρεχω τα tasks ξεχωριστα, οποτε δεν μου ειναι τοσο απαραιτητο τωρα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1 μήνα μετά...

Θελω να κανω sort array με items της μορφης Backup-YYYY-MM-DD 

Με απλο

for a in "${array[@]}"; do echo "$a"; done | sort -n

ειμαστε οκ? Παιζει να failαρει πουθενα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

23 λεπτά πριν, tritonas00 είπε

Θελω να κανω sort array με items της μορφης Backup-YYYY-MM-DD 

Με απλο


for a in "${array[@]}"; do echo "$a"; done | sort -n

ειμαστε οκ? Παιζει να failαρει πουθενα?

[Offtopic που δεν παρέχει βοήθεια στον tritona00]

Φτάνουμε 2019 και οι καημένοι στο villaBASHo ακόμα τρίβουν.

#!/bin/zsh

array=( \
"Backup-2014-02-01" \
"Backup-2015-03-04" \
"Backup-2013-02-01" \
)

echo Before
echo ${array[@]}
echo
echo Asc
# Σημαία επέκτασης που δηλώνει να επιστραφεί η παράμετρος αφού πρώτα ταξινομηθεί με αύξουσα σειρά
# Το n είναι για αριθμητική ταξινόμηση αλλά στην παρούσα περίπτωση μπορούσαμε να βάλουμε
# και σκέτο o/O αντί για n/On
echo ${(n)array}
echo Desc
# Το ίδιο για φθίνουσα
echo ${(On)array}
echo Lower
# Θέλεις για κάποιο λόγο να βεβαιωθείς ότι δεν έχεις mixed-case γράμματα;
echo ${(L)array}
# Και άλλα χίλια δύο πράγματα κατευθείαν χωρίς εξωτερικά προγράμματα

Έξοδος:

Before
Backup-2014-02-01 Backup-2015-03-04 Backup-2013-02-01

Asc
Backup-2013-02-01 Backup-2014-02-01 Backup-2015-03-04
Desc
Backup-2015-03-04 Backup-2014-02-01 Backup-2013-02-01
Lower
backup-2014-02-01 backup-2015-03-04 backup-2013-02-01

Βάλτε nova ZSH

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

:-D

Τελικα ειναι ok? Ουτε -n δεν χρειαζεται να φανταστω?

(τον μπριζωνω)

Επεξ/σία από tritonas00
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

12 λεπτά πριν, tritonas00 είπε

:-D

Τελικα ειναι ok? Ουτε -n δεν χρειαζεται να φανταστω?

(τον μπριζωνω)

Δεν ξέρω να σου πω στα σίγουρα. Έτσι που το βλέπω κάτι δεν μου αρέσει αλλά δεν μπορώ να σκεφτώ τι (και ίσως να είναι κάτι σχετικό με το zsh και όχι με το bash μια και έχω χρόνια να ασχοληθώ σοβαρά με bash)

Κάνε ένα τεστ με τα στοιχεία του array να έχουν κενά στο όνομά τους (πχ Backup 2018 - 11 - 01.bkp) και αν παίζει και τότε, χρησιμοποίησε το.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

παντα κοιταω αυστηρα για Backup-YYYY-MM-DD οτιδηποτε αλλο δεν μπαινει στο array

οσο το εχω τσεκαρει παιζει κομπλε

Επεξ/σία από tritonas00
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

19 λεπτά πριν, tritonas00 είπε

παντα κοιταω αυστηρα για Backup-YYYY-MM-DD οτιδηποτε αλλο δεν μπαινει στο array

οσο το εχω τσεκαρει παιζει κομπλε

Ναι εντάξει τότε είσαι οκ.

Είναι δική μου παραξενιά α) να  ελέγχω αν παίζει με ονόματα που έχουν κενά και μη-ascii χαρακτήρες ακόμη και αν δεν μιλάμε για user input αλλά ορίζω εγώ πώς θα είναι. Καμμιά φορά τυχαίνει ενώ έχεις κάποια αυστηρή συνθήκη (πχ πάντα Backup-YYYY-MM-DD pattern), στο μέλλον να υλοποιήσεις κάτι άλλο που να χαλαρώνει την αυστηρή συνθήκη και να αρχίσει να ... ο δίας από εκεί που έπαιζαν όλα σωστά. Ενώ αν όλος ο κώδικάς σου παίζει στο χειρότερο σενάριο θα παίζει και στο καλώς ορισμένο αυστηρό σενάριο σου.

β) να έχω τα πάντα quoted ακόμη και αν δυσκολεύει τον κώδικα και πρέπει να βάλω παραπάνω δικλείδες γιατί αν είναι τα πάντα quoted αποφεύγονται λάθη χαζομάρας.

Πόσες φορές δεν έχει γίνει από λάθος rm -rf /usr _κενό_ /lib/τάδε και σβήστηκε ολόκληρο το /usr :) το οποίο θα το αποφεύγαμε αν ήταν rm -rf "/usr _κενό_ /lib/τάδε".

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 μήνες μετά...

Για όσους φανατικούς zshellers πάντως πρέπει να έχουν (και) bash ένα φοβερό framework/ecosystem παρόμοιο του oh-my-zsh, είναι το bash-it. Θα το βρείτε στο GitHub.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

[παράξενος παππούς mode]

In my days δεν είχε oh-my-zsh και τέτοια. Διαβάζαμε τους δύο οδηγούς (οι οποίοι ήταν καμμιά 600αριά σελίδες και ειδικά στο κομμάτι της completion ήταν ψιλο-ακαταλαβίστικοι) για να "φτιάξουμε" το zshrc μας.  :)

[/παράξενος παππούς mode]

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 4 εβδομάδες αργότερα...

μιας που παίζω και γω με zsh ξέρετε τι γίνεται με την αντιστοίχιση των ?d?a  ?1?1?1 κτλ στο hashcat? σε bash εννοείται διαβάζονται αλλά σε zsh όχι...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...