Bash + Shell

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

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

Απάντηση
Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 05 Νοέμ 2008 23:24

hey καλησπερες..

βασικα τα μπερδεψα λιγακι...τι διαφορα εχει το bash aπο το Shell ?

Για να μπουμε στο bash χρησιμοποιουμε ειτε sh είτε csh αν θελουμε το c shell βαση.

Ουσιαστικα οταν ανοιγω το terminal ειμαι στο shell και οταν δωσω sh τοτε παω στο bash?

Η εντολη echo ομως ειναι για το shell oμως οταν την χρησιμοποιω και στο terminal eεχειτα ιδια αποτελεσματα!! :o

Άβαταρ μέλους
c0d3punk
Honorary Member
Δημοσιεύσεις: 1076
Εγγραφή: 15 Σεπ 2008 22:32
Τοποθεσία: Puerto pollo
Επικοινωνία:

Bash + Shell

Δημοσίευση από c0d3punk » 06 Νοέμ 2008 00:35

ναι τα μπέρδεψες! τα shells κελύφη που υπάρχουν σε ένα unix/linux σύστημα είναι:

το bsh= bourne shell
το csh= C shell
το bash= Bourne Again Shell (αυτά θυμάμαι συμπληρώστε ή διορθώστε με αν λέω κάτι λάθος)
το kshell= Korn Shell
το zshell και άλλα...

σε linux το shell (κέλυφος ελληνιστί) που χρησιμοποιείται από default είναι το bash shell.

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

οπότε όταν ανοίγεις ένα terminal στο linux να ξέρεις ότι δουλεύεις το bash shell. αν γράψεις στο terminal:
echo $SHELL

θα το διαπιστώσεις. τώρα αν θες προγραμματιστικά ή χρηστικά να το αλλάξεις απλά γράφεις /bin/το_shell_που_θες π.χ.:

/bin/csh

και έτσι πας από το shell που ήσουν αρχικά στο cshell. αλλά προσωρινά.(με CTRL+D βγαίνεις και επανέρχεσαι στο προηγούμενο shell)

αν θες να το αλλάξεις μόνιμα τοτε γράφεις:

chsh username /bin/ksh

chsh=change shell δηλαδή άλλαξε shell
username=το username σου
/bin/ksh και το shell που θες να έχεις από δω και πέρα σαν default.

logout και πάλι login και θα έχεις μπει με το νέο σου shell.

ελπίζω να βοήθησα λίγο :-)
like ants in a colony we do our share
but there's so many other f****' insects out there || Ανανεωμένα Παρτάλια || biZfind.gr

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Bash + Shell

Δημοσίευση από agrippas » 06 Νοέμ 2008 00:54

Όπως τα λέει ο προλαλήσας, το κέλυφος (shell) ενός λειτουργικού είναι ένα πρόγραμμα που το χρησιμοποιείς για να μιλάς στο σύστημα. Και στο μεν Linux το κέλυφος είναι η γραμμή εντολών, στο δε Microsoft συστημα, το κέλυφος είναι ο windows explorer.

Στο Linux τα κελύφη είναι πολλά και διάφορα όπως είπε και ο προλαλήσας, από τα οποία οι σύγχρονοι ανεπτυγμένοι άνθρωποι πιο πολύ δουλεύουν το bash. Το bash είναι το ίδιο το sh, αλλά με περισσότερα σουσούμια και τσαλίμια. Να φανταστείς, το bash είναι για το sh, ό,τι είναι η c++ για την c, ή ο vim για τον vi, ή η Μαλβίνα Κάραλη για το Λαζόπουλο και ως εκ τούτου, όλες οι μοντέρνες διανομές έχουν το bash σαν προεπιλογή και καμιά δεν θέλει το sh και όλοι το σνομπάρουν. (Σε αντίθεση με το Λαζόπουλο).

Πολλοί μαζοχισταί με μούσι φυσικά, χρησιμοποιούν sh, ή βάζουν στα scripts τους το #! /bin/sh αντί για το #! /bin/bash θες επειδή φοβούνται ασυμβατότητα στο BSD ή από άγνοια. Άλλοι πάλι δυστυχοι που η συμφορά τους αναγκάζει να bootάρουν σε runlevel 1 (single user mode), έχουν το sh προεπιλεγμένο.

Άλλα συστήματα διαολεμένα, δεν έχουν καθόλου το παραδοσιακό sh, και αντίθετα έχουν το /bin/sh ως link προς το bash ή άλλο διαολεμένο κέλυφος.

Ο κάθε χρήστης του συστήματος μπορεί να έχει το δικό του shell, σύμφωνα με τα γούστα του και αυτό δηλώνεται στο /etc/passwd. Παράδειγμα:

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

agrippas:x:1002:1003:Stainless steel account,,,:/home/agrippas:/bin/bash
Περισσότερα: http://en.wikipedia.org/wiki/Comparison ... and_shells

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 06 Νοέμ 2008 11:38

ευχαριστώ πολυ και τους 2 σας για τις απαντησεις...οντως τα ειχα κανει μπαχαλο..χαχα

Βασικα ειχα την εντυπωση πως αλλο η command line του terminal και αλλο το shell...αλλα ειναι το ιδιο :D

Ανακεφαλαιωνω...με το που ανοιγω το terminal, πχ στο ubuntu μπαινω κατευθειαν σε shell και για την ακριβεια στο bash shell. Οποτε μετα αν κατσω και δωσω sh δεν εχει κανενα νοημα καθως ειμαι ηδη στο bash, αν δωσω csh ας πουμε τοτε εχει νοημα καθως περναω σε αλλο cshell...σωστος?

Ισως με μπερδεψε το γεγονος πως ενω ημουν στο bash μπορουσα να δωσω sh και να αλλάξει το command prompt του shell μου...

χμμ...i will be back με περρισοτερες αποριες... :D

ξανα ευχαριστώ πολυ :)

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 07 Νοέμ 2008 00:08

γιατι ομωςνα ξεκινανε με #! /bin/bash

αφου το # ειναι για τα comments...εκτος αν επειδη εχει το ! διπλα του αλλαζει... λεπτομερειες θα μ πειτε αλλα... :-?

Άβαταρ μέλους
c0d3punk
Honorary Member
Δημοσιεύσεις: 1076
Εγγραφή: 15 Σεπ 2008 22:32
Τοποθεσία: Puerto pollo
Επικοινωνία:

Bash + Shell

Δημοσίευση από c0d3punk » 07 Νοέμ 2008 11:01

ναι προφανώς. είναι μια απορία που είχα και γω όταν το είδα για πρώτη φορά αλλά μην κάνεις το λάθος να τα υπεραναλίεις όλα και επικεντρούσου στην ουσία :-)
like ants in a colony we do our share
but there's so many other f****' insects out there || Ανανεωμένα Παρτάλια || biZfind.gr

id12586
στις καρδιές μας
Δημοσιεύσεις: 8387
Εγγραφή: 23 Ιουν 2003 23:28
Τοποθεσία: Far away
Επικοινωνία:

Bash + Shell

Δημοσίευση από id12586 » 07 Νοέμ 2008 18:33

^ Ακριβώς ;)
Δεν λέω χρήσιμο το syntax αλλά μην γίνεται και αυτοσκοπός γιατί χάνεις την ουσία..
Chris at your Services
ΕικόναSacame de Aqui

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 07 Νοέμ 2008 18:50

χμμμ...βασικα..ποια ειναι η ουσια στο shell scripting περαν απο το να εκτελεις καποια σεναρια...τα οποια δεν εχω κτλβει ακομα τι ρολο βαρανε..δλδ ενα χρησιμο σεναριο ποιο θα μπορουσε να ειναι?

ok ...ξερω...τα ισοπεδωσα ολα!! :P

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Bash + Shell

Δημοσίευση από agrippas » 07 Νοέμ 2008 23:18

Παράδειγμα shell script:

Κάθε 5 λεπτά στέλνε στο site μου τα 10 τελευταία youtube videos που έχω δει.

Μετά σύγκρινέ τα με τα πιο δημοφιλή στο site, και αν είναι μέσα σ' αυτά, ρίξε το site μου κάτω γιατί είμαι πρόβατο και ακολουθώ τη μάζα.

Τελείως πρόχειρη αλλά θαυματουργή υλοποίηση:

cron job που ανά 5 λεπτά τρέχει ως root το script. Μέσα στο script σκανάρισμα του cache folder του browser του user για τα πιο πρόσφατα αρχεία flv (τσεκάρισμα με την εντολή file που γυρνάει τον τύπο του αρχείου) και αντιγραφή τους στο /var/www/sites/boomboom/fakelos/ με επέκταση .flv και παραγωγή html κώδικα που θα τα δείχνει. Wget για να πάρω τα τελευταία από το youtube και diff στα αρχεία για να δω αν είναι τα ίδια. Αν κάποιο βρεθεί ίδιο, ρίξε τον apache web server.

Όλη η δύναμη του συστήματος σε ένα script.

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 07 Νοέμ 2008 23:30

Respect για το σεναριο...αλλα γτ σε script και οχι σε προγραμμα? :o

καλος μπελας δεν ειμαι ? :hammer:

id12586
στις καρδιές μας
Δημοσιεύσεις: 8387
Εγγραφή: 23 Ιουν 2003 23:28
Τοποθεσία: Far away
Επικοινωνία:

Bash + Shell

Δημοσίευση από id12586 » 07 Νοέμ 2008 23:38

Καταρχάς δώσε έναν ορισμό του τί είναι πρόγραμμα για να σου δώσουμε έναν ορισμό του τί ειναι script.

Θα εκπλαγείς με το αποτέλεσμα :)
Chris at your Services
ΕικόναSacame de Aqui

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 07 Νοέμ 2008 23:54

id12586 έγραψε:Καταρχάς δώσε έναν ορισμό του τί είναι πρόγραμμα για να σου δώσουμε έναν ορισμό του τί ειναι script.
προγραμμα : χμμ...βασικα αυτο που χω στο μυαλο μου ειναι κατι σε C ...οκ θα πεις πως μπορει να τρεχει το script στο background... + το script τρεχει καθε φορα με το που ανοιγεις το pc ή οποτε θες..δλδ στα windows αν θελω να τρεξω κατι τετοιο δεν υπαρχει τροπος?

id12586
στις καρδιές μας
Δημοσιεύσεις: 8387
Εγγραφή: 23 Ιουν 2003 23:28
Τοποθεσία: Far away
Επικοινωνία:

Bash + Shell

Δημοσίευση από id12586 » 08 Νοέμ 2008 00:04

Εκεί που θέλω να καταλήξω είναι ότι το script είναι το ίδιο με το "πρόγραμμα" που έχεις στο μυαλό σου.

Αν τώρα μιλάμε για software, πάμε απλώς σε μια "συλλογή" απο scripts με GUI.. *απλοϊκή ανάλυση*
Chris at your Services
ΕικόναSacame de Aqui

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Bash + Shell

Δημοσίευση από cristusflo » 08 Νοέμ 2008 00:09

αρα οταν εχουμε ενα σεναριο στο μυαλο μας αυτο μπορει να γινει τοσο στο shell οσο και σε καποια αλλη γλωσσα... ?

Άβαταρ μέλους
nske
Δημοσιεύσεις: 381
Εγγραφή: 15 Νοέμ 2002 03:39
Τοποθεσία: Αθήνα

Bash + Shell

Δημοσίευση από nske » 08 Νοέμ 2008 00:10

Οι χιλιάδες έτοιμες CLI εφαρμογές που υπάρχουν και μπορείς να χρησιμοποιήσεις σε μια γραμμή του script σου επιτρέπουν να κάνεις πράγματα που θα χρειαζόσουν πολλές γραμμές για να τα περιγράψεις σε μια κανονική γλώσσα προγραμματισμού, ακόμη και αν ήσουν τυχερός και έβρισκες αρκετά εξειδικευμένες βιβλιοθήκες/τάξεις. Αν μάλιστα συγκρίνεις με C, εκεί γίνεται απόλυτα εμφανές το πλεονέκτημα της ευχρηστίας.

Για quick-and-dirty δουλειές χρειάζεσαι τον ελάχιστο δυνατό χρόνο για να γράψεις κάτι σε shell script.

Βέβαια η υπεροχή στην απλότητα και την ευχρηστία ενός shell από μιας υψηλού επιπέδου γλώσσας όπως η perl, η python και η ruby για τη συγγραφή ακόμη και των πιο απλών scripts είναι μικρή η ανύπαρκτη. Κάποιος θα μπορούσε κάλλιστα να γράψε σε Ruby κάτι που κάποιος άλλος θα έγραφε σε bash, στον ίδιο χρόνο .
cristusflo έγραψε:αφου το # ειναι για τα comments...εκτος αν επειδη εχει το ! διπλα του αλλαζει... λεπτομερειες θα μ πειτε αλλα...
Η σημασία του προσδιορίζεται
α) από το ότι βρίσκεται στην πρώτη γραμμή
β) από το ότι ακολουθείται από τον χαρακτήρα "!"
cristusflo έγραψε:οκ θα πεις πως μπορει να τρεχει το script στο background... + το script τρεχει καθε φορα με το που ανοιγεις το pc ή οποτε θες..
Για το σύστημα δεν υπάρχει ουσιαστική διαφορά ανάμεσα σε ένα script και σε ένα (άλλο) πρόγραμμα. Δεν υπάρχει κάτι που να γίνεται σε shell και να μη γίνεται σε μια "κανονική" γλώσσα προγραμματισμού.
cristusflo έγραψε:δλδ στα windows αν θελω να τρεξω κατι τετοιο δεν υπαρχει τροπος?
Το command.com/cmd.exe είναι ένα πολύ πιο φτωχό shell από το bash και δεν υπάρχει η διαθεσιμότητα εξωτερικών CLI εφαρμογών που υπάρχει στα *nix. Τον διάδοχό του, το "PowerShell", δεν τον έχω δει.

Πάντως μέχρι και τα Windows 2003, τα περισσότερα από αυτά που θα έκανε ένας χρήστης Unix με shell scripts, στα Windows γίνονται με VBscript (συνήθως, όχι ότι δεν υπάρχει η επιλογή να χρησιμοποιηθεί κάποια άλλη γλώσσα, απλά η vbscript υπάρχει έτοιμη στο σύστημα και υποστηρίζεται από μηχανισμούς όπως το WMI).
αρα οταν εχουμε ενα σεναριο στο μυαλο μας αυτο μπορει να γινει τοσο στο shell οσο και σε καποια αλλη γλωσσα... ?
Ναι:

- Ό,τι γίνεται σε shell, γίνεται και σε μια πλούσια, δομημένη, γλώσσα προγραμματισμού, αλλά αρκετά πιο δύσκολα
- Πολλά από αυτά που γίνονται σε πλούσιες, δομημένες, γλώσσες προγραμματισμού δε γίνονται σε shell, ή γίνονται με τέτοιο αφύσικο τρόπο που να μη σε συμφέρει να τα κάνεις έτσι
- Για εφαρμογές πέρα από κάποιο σημείο περιπλοκότητας δε μπορείς να χρησιμοποιήσεις shell για πολλούς λόγους (επιδόσεις και αυτονομία εφαρμογής, συνεκτικότητα και συντηρισιμότητα κώδικα).

Αλλά για απλές δουλειές του στυλ βρες μου όλα τα αρχεία που πληρούν τα εξής κριτήρια, τροποποίησέ τα με τον εξής τρόπο και ειδοποίησέ με δεν υπάρχει λόγος να υποστείς το "τυποκρατικό" abuse μιας χαμηλού επιπέδου γλώσσας :)
Τελευταία επεξεργασία από το μέλος nske την 08 Νοέμ 2008 00:30, έχει επεξεργασθεί 7 φορές συνολικά.

Απάντηση

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

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

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