ALLisCHAOS Δημοσ. 13 Δεκεμβρίου 2013 Share Δημοσ. 13 Δεκεμβρίου 2013 λοιπόν για το α είναι ls -alS χωρίς *.*κ για το τελευταιο είναι αυτό: cat data1.txt | egrep '.*[^_]_{4,7}[^_]'μπορείς να διαβάσεις το manual της grep .... μια επεξήγηση για το παραπάνω είναι: οποιοσδήποτε χαρακτήρας εκτός απο _ για να ξέρεις πότε θα αρχίσει να πέρνει την _ ... στη συνέχεια ο χαρακτήρας _ απο 4 έως 7 φορές και στη συνέχεια ένας χαρακτήρας εκτός απο _ ετσί ώστε αν είναι κάπου 8 να μην το πάρεις.. ελπίζω να μην σε μπέρδεψα με την εξήγηση μου Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
mphxths Δημοσ. 13 Δεκεμβρίου 2013 Share Δημοσ. 13 Δεκεμβρίου 2013 Noμιζω στο α) αρκει ενα ls -laS , χωρις wildcards (υποθετουμε οτι εισαι στο directory που θες να δεις τα περιεχομενα) Στο β) νομιζω σε καλυπτει ενα ls -laR /usr | more Για το τελευταιο δοκιμασε το grep -E "_{4,7}" data1.txt Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 13 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 13 Δεκεμβρίου 2013 Παιδιά έχω μερικές ερωτήσεις από μία εργασία, που φαίνεται δεν έχω κατανοήσει καλά. Δώστε την εντολή ‘ls’ (με τις κατάλληλες παραμέτρους) που θα εμφανίσει: (α) όλα τα αρχεία του καταλόγου σας, με πλήρεις πληροφορίες για κάθε ένα από αυτά, και διατεταγμένα σύμφωνα με το μέγεθός τους, και (β) όλα τα περιεχόμενα του δέντρου καταλόγων και υποκαταλόγων που βρίσκονται κάτω από τον κατάλογο /usr, με πλήρεις πληροφορίες για κάθε ένα από αυτά, και εμανιζόμενα σταδιακά, σελίδα προς σελίδα. a) ls -alS *.* ls -lR /usr | more Στο α ερώτημα εμφανίζω τα αρχεία που έχουν κάποια επέκταση, προφανώς αυτό είναι λάθος γιατί δεν θα εμφανιστούν αρχεία που δεν έχουν επέκταση. Πως θα μπορέσω να εμφανίσω όλα τα αρχεία μόνο με την ls; Εμφανίστε τις γραμμές του αρχείου 'data1.txt' οι οποίες περιέχουν από 4 έως 7 συνεχόμενες κάτω παύλες (‘_‘). grep -e '____' -e '_____' -e '______' -e '_______' data1.txt Προσπάθησα να την υλοποιήσω με ένα μόνο pattern αλλά δεν τα κατάφερα. Υπάρχει καλύτερος τρόπος; λοιπόν για το α είναι ls -alS χωρίς *.* κ για το τελευταιο είναι αυτό: cat data1.txt | egrep '.*[^_]_{4,7}[^_]' μπορείς να διαβάσεις το manual της grep .... μια επεξήγηση για το παραπάνω είναι: οποιοσδήποτε χαρακτήρας εκτός απο _ για να ξέρεις πότε θα αρχίσει να πέρνει την _ ... στη συνέχεια ο χαρακτήρας _ απο 4 έως 7 φορές και στη συνέχεια ένας χαρακτήρας εκτός απο _ ετσί ώστε αν είναι κάπου 8 να μην το πάρεις.. ελπίζω να μην σε μπέρδεψα με την εξήγηση μου Μια χαρά το εξήγησες, το κατάλαβα. Noμιζω στο α) αρκει ενα ls -laS , χωρις wildcards (υποθετουμε οτι εισαι στο directory που θες να δεις τα περιεχομενα) Στο β) νομιζω σε καλυπτει ενα ls -laR /usr | more Για το τελευταιο δοκιμασε το grep -E "_{4,7}" data1.txt Παιδιά ευχαριστώ για την βοήθεια. Την α τελικά την είχα παρερμηνεύσει νομίζωντας ότι ζητούσε μόνο τα αρχεία και όχι τα directories. Του το εξήγησα και το δέχθηκε. Την δεύτερη άσκηση παρόλο που την έκανα μπακαλίστικα, την δέχθηκε, αφού έβγαζε το επιθυμητό αποτέλεσμα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 27 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 27 Δεκεμβρίου 2013 #!/bin/sh average() { total=0 avg=0 if [ $# = 0 ] then echo you didnt give any parameters else for num in $* do total=`expr $total + $num` done avg=`expr $total / $#` echo the average is $avg fi } while [ -z $num ] do echo -n give numbers: read num printf "%g" $num >/dev/null 2>&1 if [ $? -eq 0 ] then average $num else echo not number fi done Έχω φτιάξει ένα απλό πρόγραμμα που υπολογίζει το μέσο όρο. Το πρόβλημα μου είναι ότι προσπαθώ να κλειδώσω τον χρήστη μέσα στο while στην περίπτωση που εισάγει σκουπίδια(μη αριθμητικούς χαρακτήρες). Αυτό που κατάφερα είναι να τον κλειδώσω μόνο στην περίπτωση που δεν εισάγει κάτι. Ποιο condition θα μπορούσα να χρησιμοποιήσω για να ελέγχω αν βάζει μη αριθμητικούς χαρακτήρες; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
warlock9_0 Δημοσ. 27 Δεκεμβρίου 2013 Share Δημοσ. 27 Δεκεμβρίου 2013 γίνεται με regular expression ακέραιο θες μόνο? #!/bin/bash if [[ $1 =~ ^[0-9]+(\.[0-9]+)?$ ]]; then echo "digit!" else echo "no digit :/" fi τσεκάρει και ακέραιους και float με τελεία και τουλάχιστον ένα δεκαδικό Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 27 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 27 Δεκεμβρίου 2013 thanks warlock θα το δοκιμάσω! Αν και έψαχνα να βάλω κάτι μέσα στο condition του while. Θα δω μήπως μπορέσω να το παραμετροποιήσω. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
warlock9_0 Δημοσ. 27 Δεκεμβρίου 2013 Share Δημοσ. 27 Δεκεμβρίου 2013 αυτο το condition που εχω βαλει στο if θα βαλεις στο while, αν θες κατι διαφορετικο πες Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 30 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 30 Δεκεμβρίου 2013 Παίδες έχω ένα script στο οποίο αφού πάρω το όνομα ενός καταλόγου από μία μεταβλητή, προσπαθώ να βρω τα αρχεία του δέντρου αυτού του κατάλογου με την find. Φαίνεται απλοϊκό αλλά έχω κολλήσει. Αυτό που μπορώ να κάνω είναι να βρω οποιονδήποτε κατάλογο δίνοντας : find ~ -type d -name $dirname Να βρω οποιοδήποτε αρχείο γνωρίζοντας το path, δίνοντας : find /path/ -type f Δεν μπορώ όμως να συνδυάσω αυτά τα δυο. Σκέφτηκα να εκχωρήσω το path σε μια μεταβλητή με : temp=`find ~ -type d -name $dirname` και μετά να δώσω : find $temp -type f Αυτό δουλεύει στην περίπτωση που υπάρχει μόνο ένα path, αν υπάρχουν πολλά έχω πρόβλημα, οπότε δεν είναι λύση. Πως μπορώ να το κάνω; Υποψιάζομαι ότι πρέπει να χρησιμοποιήσω την exec αλλά δεν γνωρίζω να την δουλεύω. Έψαξα λίγο στο νετ αλλά δεν βρήκα κάτι. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
warlock9_0 Δημοσ. 31 Δεκεμβρίου 2013 Share Δημοσ. 31 Δεκεμβρίου 2013 δεν κατάλαβα τίποτα αν βάλεις find $dirname σκέτο σου βγάζει όλα τα αρχεία, φακέλους και υποαρχεία, υποφακέλους κλπ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 31 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 31 Δεκεμβρίου 2013 Αν βάλω find $dirname στην περίπτωση που το $dirname είναι πχ το favicons, τότε δεν μου βρίσκει τίποτα. Είτε θα πρέπει να βάλω το absolute path είτε κάποιο relative είτε να χρησιμοποιήσω : find ~ -type d -name $dirname Εκτός και αν δεν τα έχω καλά στο μυαλό μου. Έχω προσπαθήσει έτσι όπως προτείνεις χωρίς αποτέλεσμα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
warlock9_0 Δημοσ. 31 Δεκεμβρίου 2013 Share Δημοσ. 31 Δεκεμβρίου 2013 κατάλαβα, έχεις μόνο το όνομα του φακέλου, νόμιζα οτι έχεις path find /home/ -type d -name $dirname -exec ls -R {} \; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
antbyron Δημοσ. 31 Δεκεμβρίου 2013 Μέλος Share Δημοσ. 31 Δεκεμβρίου 2013 Ευχαριστώ warlock αυτό είναι! Βρίσκεις το directory με την find και μετά με την exec εκτελείς την ls recursively. Nice Κατέβασα το learning the bash shell 3rd edition και το mastering regular exrpessions 3rd edition, ώρα για διάβασμα. 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα