[Solved] Βοηθεια σε ασκηση στο Unix!

Είναι δωρεάν, είναι σταθερό, είναι γρήγορο.. ας το γνωρίσουμε και λίγο καλύτερα..

Συντονιστές: Super-Moderators, Software & Hardware Moderators

Απάντηση
fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 17 Μάιος 2012 13:57

Εχω δημιουργησει στον aeto τα αρχεια f1,f2,f3,f4,f5,f6,f7
με τα εξης δικιαωματα(εκανα χρηση της chmod):
f1,757
f2,313
f3,010
f4,642
f5,551
f6,133
f7,111.

Πρεπει υποχρεωτικα να χρησιμοποιησω ls -l και egrep για να απαντησω στα παρακατω ερωτηματα και κολλαω τρομερα...Πρεπει να βρω τα αρχεια οπου
1)user και others εχουν ακριβως τα ιδια δικαιωματα
2)user group και others εχουν ακριβως τα ιδια δικαιωματα
3)user group και others εχουν τα ιδια δικαιωματα για write και execute
4)user group και others εχουν τα ιδια δικαιωματα για write
5)user group και others εχουν τα ιδια δικαιωματα για read και execute
6)user και others εχουν τα ιδια δικαιωματα για read και execute


Πως να τα συνταξω....
Προσπαθησα τα παρακατω:
ls- l | egrep '^-rwx.* rwx' f*
ls- l | egrep '^-[rwx].* [rwx]' f*
ls- l | egrep '^-[r|w|x].* [r|w|x]' f*
ls- l | egrep '^-[0-7].* [0-7]' f*

αλλα δεν μου τρεχουν τα σωστα αποτελεσματα....Κατι κανω λαθος σιγουρα στην συνταξη!!!
Αν μπορειτε βοηθηστε....Thanks.
Τελευταία επεξεργασία από το μέλος fantomas την 26 Μάιος 2012 19:27, έχει επεξεργασθεί 2 φορές συνολικά.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από gvre » 17 Μάιος 2012 19:28

Σου γράφω τα 2 πρώτα. Με την ίδια λογική μπορείς να κάνεις και τα υπόλοιπα.

1) ls -l f[1-7] | egrep -e '-(.{3}).{3}\1'
2) ls -l f[1-7] | egrep -e '-(.{3})\1\1'

Το \1 είναι το backreference του 1ου ταιριάσματος. Η τελεία σημαίνει οποιοσδήποτε χαρακτήρας. Backreference μπορείς να πάρεις μόνο από ταίριασμα που βρίσκεται μέσα σε παρενθέσεις.

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 17 Μάιος 2012 19:33

Σε ευχαριστω πολυ φιλαρακι.Να σαι καλα.

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 20 Μάιος 2012 13:02

Σε ευχαριστω πολυ φιλαρακι.Να σαι καλα.Ναρωτησω κατι...Έστω ότι εχω το αρχείο ps_output που περιέχει την έξοδο της εντολής ps auxww. Θελω να βρω από τις διεργασίες του χρήστη root αυτή με το μεγαλύτερο PID και να εμφανίσω ολόκληρη την αντίστοιχη γραμμή του αρχείου.
Εκανα μεχρι τωρα το εξης:

egrep '^root' ps_output | sort -r -k 1

'^root': για να αποκλεισω τις διεργασιες των αλλων χρηστων που υπαρχουν. και μετα:
sort -r -k 1 :ταξινομω αναποδα τα δεδομενα του αρχειου κατα την δευτερη στηλη που ειναι το process id της διεργασιας. Αλλα μετα απο εδω κολλαω στην διατυπωση της εντολης! Αν μπορειτε βοηθηστε.ΕΥΧΑριστω. 8)

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από gvre » 20 Μάιος 2012 13:59

Κώδικας: Επιλογή όλων

egrep '^root' ps_output | sort -n -k 2,2 | tail -1
Περισσότερα σχετικά με τη sort μπορείς να βρεις στη διεύθυνση http://www.gnu.org/software/coreutils/m ... ation.html

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 22 Μάιος 2012 17:57

Δινεται το αρχειο passwd που είναι στον τρέχον φάκελο. Θελω να μετρήσω με την egrep και την wc όλες τις γραμμές του αρχείου που αντιστοιχούν σε χρήστες για τους οποίους 7 από τα γράμματα του ονοματεπωνύμου τους (συνεχόμενα) περιέχονται και στο username τους (συνεχόμενα)...πχ. ο χρήστης με username asidirop και ονοματεπώνυμο "Sidirakos Apostolos" ή ο χρήστης με username antonis και ονοματεπώνυμο "papadopoulos Antonis".

Εχω κανει το εξης:
egrep -i '^[a-z]([a-z]{7}[^0-9]).*\1.*' passwd | wc -l

Το αρχειο passwd περιεχει γραμμες σαν την παρακατω:
pbartza:x:1153:1023:Bartza Panagiota:/home/student/e9596/pbartza:/bin/bash

Το αναμενομενο αποτελεσμα ειναι 425 γραμμες.Αλλα οταν το εκτελω μου εμφανιζει 459 γραμμες!!! Κατι μου διαφευγει.Πιστευω παντως οτι ειναι κοντα στο σωστο αποτελεσμα.To εχω προσπαθησει αρκετα αλλα δεν εχω αλλη ιδεα.Αν μπορει καποιος ας βοηθησει λιγακι.Ευχαριστω.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από gvre » 22 Μάιος 2012 21:41

Δοκίμασε το παρακάτω και πες αν παίζει σωστά

Κώδικας: Επιλογή όλων

egrep -i '([a-z]{7}):x:[0-9]+:[0-9]+:[^:]*\1[^:]*:' passwd | wc -l
Αν δεν παίζει, αφαίρεσε την wc -l για να δεις τι γίνεται match.

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 23 Μάιος 2012 17:35

Καλησπερα φιλε.Ευχαριστω πολυ για την απαντηση.
Αυτη η εκφραση ειναι πολυ πιο σωστη απο την δικη μου και οντως παιζει καλυτερα. Τωρα μου βγαζει 420 γραμμες αντι για 425 γραμμες που ειναι και το σωστο αποτελεσμα.
Αν αφαιρεσω το wc -l τοτε εμφανιζει παραπανω γραμμες ως αποτελεσμα. Και παλι ευχαριστω! 8)

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από gvre » 23 Μάιος 2012 17:42

Στείλε αν μπορείς τις 5 γραμμές που θα έπρεπε να γίνουν match.

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 24 Μάιος 2012 12:40

Γεια χαρα.Το κακο ειναι οτι αμα το περιεχομενο του αρχειου passwd ειναι σαν αυτο.....οι γραμμες ειναι περισσοτερες απο αυτες...!

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
webadmin:x:81:33::/home/system/webadmin:/bin/false
Debian-exim:x:100:102::/var/spool/exim4:/bin/false
statd:x:101:65534::/var/lib/nfs:/bin/false
nut:x:104:104::/var/lib/nut:/bin/false
logcheck:x:105:105:logcheck system account,,,:/var/lib/logcheck:/bin/false
chrtsia:x:1957:1048:Tsiamouras Christos:/home/student/x0607/chrtsia:/bin/bash
kyrtsim:x:1992:1048:Tsimpiridis Kyriakos:/home/student/x0607/kyrtsim:/bin/bash
dimcha:x:2010:1048:Chatzipourganis Dimitrios:/home/student/x0607/dimcha:/bin/bash
konchr:x:2035:1048:Christoforidou Konstantina:/home/student/x0607/konchr:/bin/bash
kokkoras:x:2350:993:Kokkoras Fotios:/home/staff/ektaktoi/kokkoras:/bin/bash
pansot:x:2583:1048:Sotiriou Panagiotis:/home/student/x0607/pansot:/bin/bash
tilrout:x:2690:1048:Routas Tilemaxos:/home/student/x0607/tilrout:/bin/bash
entinou:x:2692:993:Ntinou Efi:/home/staff/ektaktoi/entinou:/bin/bash

Ειναι λιγο δυσκολο να βρω αυτες τις 5 γραμμες που λες...Καθαρα αριθμητικο το θεμα...!
Αποτέλεσμα εκτέλεσης
420
Αναμενώμενο αποτέλεσμα:
425
Ακομα το παλευω παντως!

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από gvre » 24 Μάιος 2012 13:00

fantomas έγραψε:Γεια χαρα.Το κακο ειναι οτι αμα το περιεχομενο του αρχειου passwd ειναι σαν αυτο.....οι γραμμες ειναι περισσοτερες απο αυτες...!
Δεν κατάλαβα τι εννοείς.
Αν τα αποτελέσματα που δεν ταιριάζουν δεν είναι πολλά, μπορείς να αποθηκεύσεις αυτά που ταιριάζουν σε ένα αρχείο (egrep ... > matches) και μετά να κάνεις ένα diff passwd matches για να βρεις αυτά που δεν ταιριάζουν.

fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved] Βοηθεια σε ασκηση στο Unix!

Δημοσίευση από fantomas » 26 Μάιος 2012 09:32

Σωστος!Εκανα αυτο που ειπες και εφτασα πολυ πιο κοντα. Τελικα εγραψα το παρακατω
egrep -ic '([a-z-]{7}).*:[a-z ]*\1' passwd
και ειχα 100% επιτυχια! Ολοσωστο αποτελεσμα! Και παλι ευχαριστω!

Απάντηση

Επιστροφή στο “Linux Guide”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες