Welcome, Guest
Username: Password: Remember me

TOPIC: Βοήθεια με Unix κέλυφος

Βοήθεια με Unix κέλυφος 1 year 11 months ago #1

  • Kostas3698
  • Kostas3698's Avatar
  • Offline
  • Wishlister
  • Posts: 17
  • Thank you received: 1
Γνωρίζω πως είναι σχετικά απίθανο να βρω κάποιον που ασχολείται με Unix, αλλά δεδομένου ότι πολλές διανομές Linux έχουν πολλά κοινα, και του ότι στο forum θα υπάρχουν κάποιοι που γνωρίζουν από GNU/Linux θα ρωτήσω.

Σε άσκηση πάνω στο Unix (μια έκδοση της διανομής tinycore συγκεκριμένα) έχω την εξης ερώτηση.

"Χρησημοποιείστε την εντολή grep για να βρείτε πόσες φορές εμφανίζεται η έκφραση 'file' σε όλα τα αρχεία του καταλόγου /etc των οποίων το όνομα τελειώνει σε .conf . Ποιές εντολές χρησημοποιήσατε?"

Οι δύο πιθανες απαντήσεις που έχω στο μυαλό μου είναι:
1η: grep file /etc/*.conf | wc
2η: find /etc -name *.conf -exec grep file \; {} | wc

Στο screenshot φαίνονται τα αποτελέσματά τους τα οποία διαφέρουν σε μεγάλο βαθμό, αν και προσωπικά δεν μπορώ να εντοπίσω τη διαφορά λειτουργίας των εντολών.

Οπότε όποιος μπορει ας μου πει ποια είναι η σωστή εντολή (εννοείται ακόμα και αν δεν είναι κάποια απ' αυτές τις δύο) και ας μου εξηγήσει την διαφορά μεταξύ των δύο εντολών που έγραψα.

Εκ των προταίρων ευχαριστώ για τη βοήθεια.

Υ.Γ. Η εργασία μου πρέπει να είναι έτοιμη μεχρι Τετάρτη 9/11/2016 βράδυ γιατί την παραδίδω την επομένη, οπότε θα το εκτιμούσα αν η απάντηση δινόταν το συντομότερο δυνατόν. Χωρίς αυτό να σημαίνει ότι κάθε απάντηση μετα τις 9/11 δεν είναι ευπρόσδεκτή. Κάλιο αργά, παρά πότε.
Attachments:
Last Edit: 1 year 11 months ago by Kostas3698. Reason: Έβαλα λάθος screenshot
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #2

  • rapsoulis
  • rapsoulis's Avatar
  • Offline
  • Packer
  • Net & Sys Admin + Computer Engineer
  • Posts: 573
  • Thank you received: 156
Δεν είμαι ειδικός του Unix, αλλά συνήθως ότι χρειάζομαι το βρίσκω με βοήθεια μέσω internet. Θα χρησιμοποιήσεις την παρακάτω εντολή και έπειτα θα κολλήσεις και το grep. (ακριβώς με το grep δεν ξέρω να σου πώ, αν θες θα το ψάξω κ αυτό).
find /etc -type f -iname "*.conf"

Τις πληροφορίες τις βρήκα από εδώ, αν σε βοηθάει.
AMD FX-8320 || Gigabyte 990FXA-UD3 (rev1.0) || Kingston HyperX 16GB 1600Mhz CL9 (4x4GB DIMMs) || Sapphire 7970 Vapor-X GHZ Edition || Kingston Hyper-X 3K 120GB || WD 1TB Black SATAIII || WD 500GB Green SATAII || Corsair 600M || Aerocool Xpredator (Black)

EVGA Affiliate Code: EFLAVH3SBF
Last Edit: 1 year 11 months ago by rapsoulis.
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #3

  • sub_zero
  • sub_zero's Avatar
  • Offline
  • Payment receiver
  • Posts: 136
  • Thank you received: 15
Χμ, καταρχάς το find ψάχνει recursively σε όλα τα subdirs του etc γιαυτό ίσως δίνει παραπάνω αποτελέσματα από την 1η εντολή. Το grep για να γίνει recursive μπορείς να βάλεις μπροστά:
grep -nIr
Αλλά από τη στιγμή που βάζεις μετά /etc/*.conf χάνεται το recursion. Για recursion με pattern στα ονόματα των αρχείων (".conf") τσέκαρε το --include του grep μαζί με το -nIr.

Δεν μπορώ να δοκιμάσω τώρα αλλά νομίζω η 2η σου εντολή πρέπει να δουλεύει σωστά.

Επίσης για να είσαι safe πάντα τα expressions (file, .conf) βάζε τα σε " " ή κάνε escape το * με \ ("\*").

Πάντα επίσης μπορείς να κάνεις τη χαμαλοδουλειά του να φτιάξεις μόνος σου ένα απλό directory με 2-3 αρχεία με 5-6 συγκεκριμένες λέξεις το καθένα και να δοκιμάζεις εκεί ξέροντας το σωστό αποτέλεσμα.
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #4

  • Kostas3698
  • Kostas3698's Avatar
  • Offline
  • Wishlister
  • Posts: 17
  • Thank you received: 1
Ή αλήθεια είναι πως έκανα ήδη τη χαμαλοδουλειά που λες, αλλά και πάλι ευχαριστώ. Ωστόσο υπάρχει και ακόμα ένα πρόβλημα. Αν ή έκφραση file βρίσκεται παραπάνω απο μία φορές σε μία γραμμή ή wc -l θα το μετρήσει ως μία. Στη περίπτωση μου τυχαίνει να μην συμβαίνει αυτό, αλλά δεδομένου ότι πρόκειται για εργασία μάλλον πρέπει να γράψω μία εντολή που θα δίνει σωστό αποτέλεσμα κάτω από οποιεσδήποτε συνθήκες. Κανείς καμιά ιδέα?
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #5

  • sub_zero
  • sub_zero's Avatar
  • Offline
  • Payment receiver
  • Posts: 136
  • Thank you received: 15
Εκεί θες το -ο, όπως λέει το
man grep
 -o, --only-matching
              Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
The administrator has disabled public write access.
The following user(s) said Thank You: Kostas3698

Βοήθεια με Unix κέλυφος 1 year 11 months ago #6

  • Kostas3698
  • Kostas3698's Avatar
  • Offline
  • Wishlister
  • Posts: 17
  • Thank you received: 1
Παιδιά σας ευχαριστώ όλους για τη βοηθειά. Μόλις μου χαρίσατε ένα δεκάρι στην εργασία. Και πάλι ευχαριστώ.
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #7

  • rapsoulis
  • rapsoulis's Avatar
  • Offline
  • Packer
  • Net & Sys Admin + Computer Engineer
  • Posts: 573
  • Thank you received: 156
Kostas3698 wrote:
Παιδιά σας ευχαριστώ όλους για τη βοηθειά. Μόλις μου χαρίσατε ένα δεκάρι στην εργασία. Και πάλι ευχαριστώ.

Το σωστό πoιο ήταν τελικά;
AMD FX-8320 || Gigabyte 990FXA-UD3 (rev1.0) || Kingston HyperX 16GB 1600Mhz CL9 (4x4GB DIMMs) || Sapphire 7970 Vapor-X GHZ Edition || Kingston Hyper-X 3K 120GB || WD 1TB Black SATAIII || WD 500GB Green SATAII || Corsair 600M || Aerocool Xpredator (Black)

EVGA Affiliate Code: EFLAVH3SBF
The administrator has disabled public write access.

Βοήθεια με Unix κέλυφος 1 year 11 months ago #8

  • Kostas3698
  • Kostas3698's Avatar
  • Offline
  • Wishlister
  • Posts: 17
  • Thank you received: 1
Σωστή ήταν η εντολή: grep file -o /etc/*.conf | wc -l
The administrator has disabled public write access.
Powered by Kunena Forum