Σελ. 4 από 149 ΠρώτηΠρώτη ... 2345691424 ... ΤελευταίαΤελευταία
Εμφάνιση 46-60 από 2232
  1. #46
    Εγγραφή
    03-11-2005
    Περιοχή
    Belfast, UK
    Ηλικία
    44
    Μηνύματα
    2.256
    Downloads
    20
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    78Mbps/19Mbps
    ISP
    Plusnet
    Router
    Plusnet Hub One
    <?PHP:
    #!/bin/sh

    cd dirA
    for file in `ls -1`
    do
        
    rm -f $file
        ln 
    -../dirB/$file $file
    done 

    Το switch της ls είναι -1 (μείον ένα), όχι -l (μείον ελ). Επίσης, γύρω από την ls -1 ο χαρακτήρας δεν είναι μονό quote αλλά backtick (πάνω απ'το Tab συνήθως). Στα κενά υπάρχει πρόβλημα, όντως. Για να δούμε αν κάποιος σκεφτεί τρόπο.

    Disclaimer: Είμαι σε Windows τώρα και το script δοκιμάστηκε σε Bash for Windows + UnxUtils (η ln μπήκε σε σχόλιο γιατί πετάει μήνυμα λάθους). Δε βλέπω το λόγο όμως να μη δουλέψει όπως πρέπει σε Linux...


    EDIT: Το παρακάτω πρέπει να δουλεύει, δοκιμάστηκε σε Linux με επιτυχία. Το πρόβλημα της for...in είναι ότι όταν δει χαρακτήρα space, το αλφαριθμητικό που ακολουθεί μετατίθεται στην επόμενη εκτέλεση του βρόχου. Οπότε, η while read... με pipe ήταν μονόδρομος.

    <?PHP:
    #!/bin/sh

    cd dirA
    ls 
    -| while read file
    do
        
    rm -"$file"
        
    ln -../dirB/"$file" "$file"
    done 
    Τελευταία επεξεργασία από το μέλος parsifal : 15-09-07 στις 23:13.

  2. #47
    Εγγραφή
    02-11-2003
    Περιοχή
    Επαναπατρισθείς στην Αθήνα
    Ηλικία
    49
    Μηνύματα
    56.427
    Downloads
    64
    Uploads
    73
    Τύπος
    VDSL2
    Ταχύτητα
    102400/10240
    ISP
    Vodafone
    Path Level
    Fastpath
    Μάλιστα ευχαριστώ.

    Θα το δοκιμάσω.

    Είχα μάθει παλαιότερα την if του bash, τώρα μαθαίνω και τις for και while. Ωραία.
    Επιτέλους το ελάχιστο δυνατό, ευέλικτο, και ψηφιακό κράτος. Με διαρκή αξιολόγηση.

  3. #48
    Εγγραφή
    02-11-2003
    Περιοχή
    Επαναπατρισθείς στην Αθήνα
    Ηλικία
    49
    Μηνύματα
    56.427
    Downloads
    64
    Uploads
    73
    Τύπος
    VDSL2
    Ταχύτητα
    102400/10240
    ISP
    Vodafone
    Path Level
    Fastpath
    Λοιπόν δούλεψε μια χαρά.

    Νά' σαι καλά parsifal.

    Το τελικό σκριπτάκι είναι αυτό:

    <?PHP:
    #!/bin/bash

    dir1=$1
    dir2
    =$2

    cd 
    "$dir1"
    ls -| while read file
    do
        
    rm -"$file"
        
    ln -../"$dir2"/"$file" "$file"
    done
    rm 
    -"$dir1"
    cd .. 
    Χρειάστηκε στο τέλος να προσθέσω και την:

    <?PHP:
    rm -"$dir1
    γιατί φτιαχνότανε και symlink του ίδιου του directory αυτού-καθεαυτού προς τον εαυτό του.

    Γλύτωσα 3.5GBytes χώρου, τα δε symlinks είναι παντελώς διάφανα στο άλλο άκρο (μεσολαβούν samba και Windows).

    Χαμπάρι δεν παίρνουν τα χαζοWindows της Microσόφτεξ.
    Επιτέλους το ελάχιστο δυνατό, ευέλικτο, και ψηφιακό κράτος. Με διαρκή αξιολόγηση.

  4. #49
    Εγγραφή
    03-11-2005
    Περιοχή
    Belfast, UK
    Ηλικία
    44
    Μηνύματα
    2.256
    Downloads
    20
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    78Mbps/19Mbps
    ISP
    Plusnet
    Router
    Plusnet Hub One
    Επίσης, η τελευταία cd .. είναι περιττή, αφού στη συνέχεια τερματίζεται το bash process που εκτελούσε το script και επιστρέφεις στο αρχικό περιβάλλον με τρέχοντα κατάλογο ίδιο με αυτόν που ήταν και πριν την εκτέλεση του script...
    Τελευταία επεξεργασία από το μέλος parsifal : 16-09-07 στις 01:15.

  5. #50
    Εγγραφή
    02-11-2003
    Περιοχή
    Επαναπατρισθείς στην Αθήνα
    Ηλικία
    49
    Μηνύματα
    56.427
    Downloads
    64
    Uploads
    73
    Τύπος
    VDSL2
    Ταχύτητα
    102400/10240
    ISP
    Vodafone
    Path Level
    Fastpath
    Παράθεση Αρχικό μήνυμα από parsifal Εμφάνιση μηνυμάτων
    Επίσης, η τελευταία cd .. είναι περιττή, αφού στη συνέχεια τερματίζεται το bash process που εκτελούσε το script και επιστρέφεις στο αρχικό περιβάλλον με τρέχοντα κατάλογο ίδιο με αυτόν που ήταν και πριν την εκτέλεση του script...
    Εμ είδες;

    Καί αυτό δεν το ήξερα.

    Στο aDSLgr κανείς μαθαίνει.
    Επιτέλους το ελάχιστο δυνατό, ευέλικτο, και ψηφιακό κράτος. Με διαρκή αξιολόγηση.

  6. #51
    Εγγραφή
    13-12-2005
    Ηλικία
    44
    Μηνύματα
    512
    Downloads
    2
    Uploads
    0
    Τύπος
    ADSL2+
    ISP
    HOL
    Κι ένας πιο σύντομος τρόπος...

    Κώδικας:
    #! /bin/bash
    [ "$2" == "" ] && exit 1
    cd "$1"
    for f in *; do 
        [ -f "../$2/$f" ] && rm -f "$f" && ln -s "../$2/$f" .
    done

  7. #52
    Εγγραφή
    10-06-2005
    Μηνύματα
    9.018
    Downloads
    65
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    N/A
    ISP
    N/A
    DSLAM
    Forthnet - Ν. ΣΜΥΡΝΗ
    Καλησπέρα

    Να ρωτησω κάτι

    Θελω να σώσω το output της εντολής python -V στην μεταβλητη a

    Πως θα το κάνω?

    Δοκιμασα διαφορα αλλα τπτ δεν μου βγήκε

  8. #53
    Εγγραφή
    03-11-2005
    Περιοχή
    Belfast, UK
    Ηλικία
    44
    Μηνύματα
    2.256
    Downloads
    20
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    78Mbps/19Mbps
    ISP
    Plusnet
    Router
    Plusnet Hub One
    Κώδικας:
    a=`python -V`
    δε δουλεύει...;

  9. #54
    Εγγραφή
    10-06-2005
    Μηνύματα
    9.018
    Downloads
    65
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    N/A
    ISP
    N/A
    DSLAM
    Forthnet - Ν. ΣΜΥΡΝΗ
    Και όμως όχι

    Κώδικας:
    [root@Nantia(Arch) hwoarang]# a=`python -V`
    Python 2.5.1
    [root@Nantia(Arch) hwoarang]# echo $a
    
    [root@Nantia(Arch) hwoarang]#

  10. #55
    Εγγραφή
    03-11-2005
    Περιοχή
    Belfast, UK
    Ηλικία
    44
    Μηνύματα
    2.256
    Downloads
    20
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    78Mbps/19Mbps
    ISP
    Plusnet
    Router
    Plusnet Hub One
    Μάλιστα. Προφανώς το -V switch στέλνει το output στο stderr και όχι στο stdout. Δοκίμασε:

    Κώδικας:
    a=`python -V 2>&1`
    Τελευταία επεξεργασία από το μέλος parsifal : 01-10-07 στις 23:04.

  11. #56
    Εγγραφή
    10-06-2005
    Μηνύματα
    9.018
    Downloads
    65
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    N/A
    ISP
    N/A
    DSLAM
    Forthnet - Ν. ΣΜΥΡΝΗ
    Παράθεση Αρχικό μήνυμα από parsifal Εμφάνιση μηνυμάτων
    Μάλιστα. Προφανώς το -V switch στέλνει το output στο stderr και όχι στο stdout. Δοκίμασε:

    Κώδικας:
    a=`python -V 2>&1`
    Ευχαριστώ . Δουλεψε. Μπορεις να μου εξηγήσεις τι ειναι αυτο το 2>&1 γιατι το βλέπω συχνά αλλα δεν καταλαβαινω τι ειναι

  12. #57
    Εγγραφή
    10-06-2005
    Μηνύματα
    9.018
    Downloads
    65
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    N/A
    ISP
    N/A
    DSLAM
    Forthnet - Ν. ΣΜΥΡΝΗ
    Παράθεση Αρχικό μήνυμα από Hwoarang Εμφάνιση μηνυμάτων
    Ευχαριστώ . Δουλεψε. Μπορεις να μου εξηγήσεις τι ειναι αυτο το 2>&1 γιατι το βλέπω συχνά αλλα δεν καταλαβαινω τι ειναι
    Επίσης μπορεις να μου πεις αν θελω να πάρω το exit code ( 0,1) απο μια εντολή πως θα το πάρω?

  13. #58
    Εγγραφή
    03-11-2005
    Περιοχή
    Belfast, UK
    Ηλικία
    44
    Μηνύματα
    2.256
    Downloads
    20
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    78Mbps/19Mbps
    ISP
    Plusnet
    Router
    Plusnet Hub One
    Τα 1, 2 κλπ είναι συντομεύσεις προς τον πίνακα των file descriptors του kernel. Εξ ορισμού, o 0 είναι η στάνταρ είσοδος (stdin), 1 η στάνταρ έξοδος (stdout), 2 ή έξοδος λάθους (stderr) κλπ.

    Όπως κάνεις redirection από/προς ένα αρχείο (π.χ. ls -l > list.txt), μπορείς να ορίσεις διάφορες ανακατευθύνσεις και για το standard I/O, προσπερνώντας τις default συμβάσεις, αφού και τα stdin, stout, stderr ως αρχεία αναπαριστώνται.


    Παράθεση Αρχικό μήνυμα από Hwoarang Εμφάνιση μηνυμάτων
    Επίσης μπορεις να μου πεις αν θελω να πάρω το exit code ( 0,1) απο μια εντολή πως θα το πάρω?
    Υπάρχει η ειδική μεταβλητή περιβάλλοντος $? που είναι πάντα ενήμερη για το exit code της διεργασίας που έχει τερματιστεί πιο πρόσφατα*.


    *Χωρίς να είμαι σίγουρος, λογικά μέσα στο context της καλούσας διεργασίας, δηλαδή του συγκεκριμένου bash instance που εκτελεί το script. Οπότε, μη σε προβληματίζουν θέματα multitasking και λοιπών διεργασιών που τρέχουν στο σύστημα...
    Τελευταία επεξεργασία από το μέλος parsifal : 01-10-07 στις 23:30.

  14. #59
    Εγγραφή
    03-05-2006
    Περιοχή
    Τρίκαλα, Αθήνα
    Ηλικία
    38
    Μηνύματα
    857
    Downloads
    25
    Uploads
    3
    ISP
    Cosmote, Nova, Wind
    Παράθεση Αρχικό μήνυμα από Hwoarang Εμφάνιση μηνυμάτων
    Επίσης μπορεις να μου πεις αν θελω να πάρω το exit code ( 0,1) απο μια εντολή πως θα το πάρω?
    echo $?

  15. #60
    Εγγραφή
    10-06-2005
    Μηνύματα
    9.018
    Downloads
    65
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    N/A
    ISP
    N/A
    DSLAM
    Forthnet - Ν. ΣΜΥΡΝΗ
    Παράθεση Αρχικό μήνυμα από ftso Εμφάνιση μηνυμάτων
    echo $?
    Εχει κολλήσει απίστευτα το μυαλο μου. Σε ευχαριστώ
    Παράθεση Αρχικό μήνυμα από parsifal Εμφάνιση μηνυμάτων
    Τα 1, 2 κλπ είναι συντομεύσεις προς τον πίνακα των file descriptors του kernel. Εξ ορισμού, o 0 είναι η στάνταρ είσοδος (stdin), 1 η στάνταρ έξοδος (stdout), 2 ή έξοδος λάθους (stderr) κλπ.

    Όπως κάνεις redirection από/προς ένα αρχείο (π.χ. ls -l > list.txt), μπορείς να ορίσεις διάφορες ανακατευθύνσεις και για το standard I/O, προσπερνώντας τις default συμβάσεις, αφού και τα stdin, stout, stderr ως αρχεία αναπαριστώνται.




    Υπάρχει η ειδική μεταβλητή περιβάλλοντος $? που είναι πάντα ενήμερη για το exit code της διεργασίας που έχει τερματιστεί πιο πρόσφατα*.


    *Χωρίς να είμαι σίγουρος, λογικά μέσα στο context της καλούσας διεργασίας, δηλαδή του συγκεκριμένου bash instance που εκτελεί το script. Οπότε, μη σε προβληματίζουν θέματα multitasking και λοιπών διεργασιών που τρέχουν στο σύστημα...
    Ευχαριστώ πολυ για τις info

Σελ. 4 από 149 ΠρώτηΠρώτη ... 2345691424 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Βοήθεια για ένα απλό bash script
    Από AddictedToChaos στο φόρουμ Unix - Linux
    Μηνύματα: 34
    Τελευταίο Μήνυμα: 22-07-11, 01:57
  2. bash - matlab
    Από simeon.mattes στο φόρουμ Unix - Linux
    Μηνύματα: 25
    Τελευταίο Μήνυμα: 25-06-08, 23:00
  3. Bash Script help (Αρχάριος)
    Από weakwire στο φόρουμ Unix - Linux
    Μηνύματα: 12
    Τελευταίο Μήνυμα: 08-05-07, 00:41
  4. bash rename (mv)
    Από hayzel στο φόρουμ Unix - Linux
    Μηνύματα: 6
    Τελευταίο Μήνυμα: 07-01-07, 16:33

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας