Εμφάνιση 91-105 από 2232
Θέμα: Ερώτηση για bash
-
02-01-08, 01:16 Απάντηση: Ερώτηση για bash #91
-
06-02-08, 00:12 Απάντηση: Ερώτηση για bash #92
- Εγγραφή
- 20-06-2007
- Περιοχή
- Chicago, Illinois
- Ηλικία
- 32
- Μηνύματα
- 30.632
- Downloads
- 96
- Uploads
- 25
- Άρθρα
- 14
- Τύπος
- FTTH
- Ταχύτητα
- 1 Gbps
- ISP
- Nova
Καλησπερα
Εφτιαχνα για πρωτη φορά script για την μεταφορα ενός αρχείου αλλα έχω κολλησει σε ένα χαζό σημείο
Η δουλειά του είναι να αντιγραψει ένα αρχείο .tar.gz από το Desktop , να το μεταφερει στο /home/flamelab/new-package και εκεί να το κανει untar και cd στο νεο φακελο .
Αλλα δεν ξερω πως μετά το untaring να θεσω στο script να κανει cd στο νεο φακελο μετα το untarring .
Δείτε πως περιπου θελω να είναι το script
Κώδικας:#!/bin/bash cd / cp /home/flamelab/Desktop/*.tar.gz /home/flamelab/new-package cd /home/flamelab/new-package tar -xvfz *.tar.gz cd ---> Eδώ τι βαζουμε ? Πως γίνεται cd στο φακελο μετα το untarring ? nice -n 19 makepkg cp *.pkg.tar.gz /home/flamelab/local-repos/arch-local/amd64/custom/packages /bin/update-local-repo custom amd64
Eπίσης θα ήθελα να βαλω καπου
sleep -5 ( μαλλον στο πριν την εντολή makepkg που θελει χρόνο )
Στα τεστ που του έκανα δεν δεχόταν την μεταβλητη .Τελευταία επεξεργασία από το μέλος flamelab : 06-02-08 στις 00:17.
Dies, died, will die.
Lived, lives, will live.
-
06-02-08, 00:15 Απάντηση: Ερώτηση για bash #93
η πιο απλή περίπτωση, και εφόσον είναι ένα αρχείο που κάνεις untar
cd `ls`
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
06-02-08, 00:16 Απάντηση: Ερώτηση για bash #94
- Εγγραφή
- 20-06-2007
- Περιοχή
- Chicago, Illinois
- Ηλικία
- 32
- Μηνύματα
- 30.632
- Downloads
- 96
- Uploads
- 25
- Άρθρα
- 14
- Τύπος
- FTTH
- Ταχύτητα
- 1 Gbps
- ISP
- Nova
Δηλαδή
Κώδικας:#!/bin/bash cd / cp /home/flamelab/Desktop/*.tar.gz /home/flamelab/new-package cd /home/flamelab/new-package tar -xvfz *.tar.gz cd 'ls' <-- αυτό ? nice -n 19 makepkg cp *.pkg.tar.gz /home/flamelab/local-repos/arch-local/amd64/custom/packages /bin/update-local-repo custom amd64
Κώδικας:[flamelab@flamepc Desktop]$ ./new-package tar: z: Cannot open: No such file or directory tar: Error is not recoverable: exiting now ./new-package: line 7: cd: ls: No such file or directory ./new-package: line 8: cd: ls: No such file or directory ==> ERROR: PKGBUILD does not exist. cp: cannot stat `*.pkg.tar.gz': No such file or directory ==> Adding package '/home/local-repos/arch-local/amd64/custom/packages/catalyst-7.12-2-x86_64.pkg.tar.gz' -> Creating 'desc' db entry... -> Computing md5 checksums... -> Creating 'depends' db entry... ==> Adding package '/home/local-repos/arch-local/amd64/custom/packages/firefox-branded-2.0.0.11-1-x86_64.pkg.tar.gz' -> Creating 'desc' db entry... -> Computing md5 checksums... -> Creating 'depends' db entry... ==> Adding package '/home/local-repos/arch-local/amd64/custom/packages/virtualbox_bin-1.5.4-4-x86_64.pkg.tar.gz' -> Creating 'desc' db entry... -> Computing md5 checksums... -> Creating 'depends' db entry... ==> Adding package '/home/local-repos/arch-local/amd64/custom/packages/yaourt-0.8.7-1-x86_64.pkg.tar.gz' -> Creating 'desc' db entry... -> Computing md5 checksums... -> Creating 'depends' db entry... ==> Creating updated database file /home/local-repos/arch-local/amd64/custom/packages/custom.db.tar.gz [flamelab@flamepc Desktop]$
Τελευταία επεξεργασία από το μέλος flamelab : 06-02-08 στις 00:23.
Dies, died, will die.
Lived, lives, will live.
-
06-02-08, 00:27 Απάντηση: Ερώτηση για bash #95
οχι το single quote αλλά το ` που ειναι πάνω απο το ΤΑΒ
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
06-02-08, 00:29 Απάντηση: Ερώτηση για bash #96
- Εγγραφή
- 20-06-2007
- Περιοχή
- Chicago, Illinois
- Ηλικία
- 32
- Μηνύματα
- 30.632
- Downloads
- 96
- Uploads
- 25
- Άρθρα
- 14
- Τύπος
- FTTH
- Ταχύτητα
- 1 Gbps
- ISP
- Nova
Ευχαριστώ
Το τελικό script
Κώδικας:#!/bin/bash cd / cp /home/flamelab/Desktop/*.tar.gz /home/flamelab/new-package cd /home/flamelab/new-package tar -xvf *.tar.gz cd `ls cd `ls nice -n 19 makepkg cp *.pkg.tar.gz /home/flamelab/local-repos/arch-local/amd64/custom/packages /bin/update-local-repo custom amd64
EDIT !
Δεν αντιγραφει όμως το αρχείο με καταληξη .pkg.tar.gz εκεί που θελω !
Κώδικας:==> Finished making: picasa (Tue Feb 5 13:31:27 PST 2008) cp: cannot create regular file `/home/flamelab/local-repos/arch-local/amd64/custom/packages': No such file or directory
Τελευταία επεξεργασία από το μέλος flamelab : 06-02-08 στις 00:32.
Dies, died, will die.
Lived, lives, will live.
-
06-02-08, 00:33 Απάντηση: Ερώτηση για bash #97
Πρώτον, θέλει μέσα σε δύο ανάποδα quotes.
Δεύτερον, τα 2 απανωτά cd θα δουλέψουν, αλλά σε περίπτωση που δεν υπάρχει δεύτερος κατάλογος θα πάρεις μήνυμα λάθους. Επίσης πιθανόν να υπάρχει δεύτερος κατάλογος και να μην τον θες (π.χ. docs). Οπότε κανονικά πρέπει να ελέγχεις αν το output της ls είναι 1 γραμμή μόνο. π.χ.
Κώδικας:NLINES=`ls | wc -l` [ $NLINES == "1" ] && cd `ls`
Κώδικας:if [ $NLINES == "1" ]; then MYDIR=`ls` [ -d "$MYDIR" ] && cd "$MYDIR" fi
Τελευταία επεξεργασία από το μέλος hot_swapper : 06-02-08 στις 00:34.
-
06-02-08, 00:34 Απάντηση: Ερώτηση για bash #98
το ls πρέπει να έχει backquote και απο τις δύο μεριές
`ls`
ουσιαστικά στο shell, με το backquote λέμε να εκτελέσει ότι εντολές έχει μέσα, σαν να τις δίναμε απο την γραμμή εντολών, και αφήνει το αποτέλεσμα. οπότε στο cd `ls`
εκτελείται πρώτα το ls, και ότι θα μας έφερνε σαν αποτέλεσμα μπαίνει στην θέση του `ls` οπότε η εντολή μας γίνεται cd {όνομα directory}
υποθέτοντας βέβαια ότι είναι μόνο ένα.
Εαν δεν ισχύει αυτό, δηλαδή να είναι μόνο ένας κατάλογος, τότε πρέπει να κάνουμε την εντολή λιγο πιο πολύπλοκη. πχ εαν έχει και αρχείο, αλλά ξέρουμε ότι είναι μόνος ένας κατάλογος μπορούμε αντί για ls να έχουμε ls -d *
Eαν έχουμε περισσότερους του ενός καταλόγους, τότε θαναι δύσκολο να επιλέξουμε τον σωστό κατάλογο απο ένα ls. Θα πρέπει να το βρούμε απο πιο πριν απο το script. Πχ είναι ένα tar.gz αρχείο και έχοντας υπόψη την κοινή παραδοχή ότι το όνομα κάνει και ίδιο directory τότε μπορείς να κάνεις το εξής
fname=`ls *.tar.gz | head -1`
dirname=`echo $fname | cut -f1 --delimiter='.'`Τελευταία επεξεργασία από το μέλος anon : 06-02-08 στις 00:39.
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
06-02-08, 00:39 Απάντηση: Ερώτηση για bash #99
- Εγγραφή
- 20-06-2007
- Περιοχή
- Chicago, Illinois
- Ηλικία
- 32
- Μηνύματα
- 30.632
- Downloads
- 96
- Uploads
- 25
- Άρθρα
- 14
- Τύπος
- FTTH
- Ταχύτητα
- 1 Gbps
- ISP
- Nova
Ωραία , δεχθηκε το `ls`
Βγαζει όμως για καποιο λογο αυτό
Κώδικας:cp: cannot create regular file `/home/flamelab/local-repos/arch-local/amd64/custom/packages': No such file or directory
Και μετά θα ήθελα να γίνει rmdir του new-package στο /home/flamelab , με ότι αρχειο έχει μεσα γιατί παραπονιεται η bash .
ΟΚ και αυτά από πανω .
Για το πρωτο : είχα κανει τυπογραφικό , για το δεύτερο εβαλαΚώδικας:rm -r
Edit : Γίνεται , ενώ δεν είμαι root ( αυτά επανω απαγορεύονται ενώ είμαι root ) , να μπει εντολή να γίνω root ? Σκετο su ?Τελευταία επεξεργασία από το μέλος flamelab : 06-02-08 στις 00:49.
Dies, died, will die.
Lived, lives, will live.
-
06-02-08, 13:23 Απάντηση: Ερώτηση για bash #100
Ερώτηση: Για να κάνουμε rename πολλά αρχεία πως δουλεύουμε?
Χρησιμοποιώ το εξής
Κώδικας:for file in *.txt ;do foo=`echo $file | cut -d. -f1`;mv $file $foo; done
Για να κάνω append την κατάληξη .txt στο filename κάθε αρχείου πως το κάνω;Desktop: Kubuntu | Server: Debian testing
-
06-02-08, 14:02 Απάντηση: Ερώτηση για bash #101
oxi su. τις εντολές που πρέπει να τρέξουν με root δικαιώματα θα τις κάνεις ένα άλλο script, και θα το τρέξεις με sudo. Τώρα εαν πρέπει να βάλεις και το password του root, δεν το έχω δοκιμάσει, νομίζω όμως ότι μπορείς να το κάνεις με heredoc. Να ξέρεις όμως ότι είναι τρύπα ασφάλειας. Εναλλακτικά μπορείς να βάλεις suid στο script που θες να τρέχει με root δικαιώματα.
Για να κάνω append την κατάληξη .txt στο filename κάθε αρχείου πως το κάνω;
mv {filename} {filename}.txt
Eαν το βάλεις σe loop
for file in * ;do mv $file $file.txt; done
Για το άλλο, τα πράγματα είναι πιο δύσκολα. Δεν ξέρεις εαν έχει μία ή περισσότερες τελείες το αρχείο, και θες να "κόψεις" το τέλος που έχει ".txt"
αυτό θα το κάνεις ως εξής
echo $file | sed -e 's/.txt$//'
για άλλα κόλπα με τον sed (πολύ χρήσιμο μαζί και με το awk, grep)
http://sed.sourceforge.net/sed1line.txt
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
06-02-08, 14:40 Απάντηση: Ερώτηση για bash #102
-
06-02-08, 15:39 Απάντηση: Ερώτηση για bash #103
Για το append απάντησε ο anon , εγώ ήθελα να πω κάτι άσχετο.
το `echo $file | cut -d. -f1` θα δείξει το 1ο πεδίο χωρίζοντας με βάση την τελεία.
Έτσι, αν έχεις αρχεία με όνομα π.χ foo-test.bar.txt το αποτέλεσμα θα είναι foo-test και
όχι foo-test.bar που είναι το σωστό.
Αντι για αυτό μπορείς να χρησιμοποιήσεις την basename με την μορφή:
Κώδικας:for file in *.txt ;do foo=`basename $file .txt`;mv $file $foo; done
-
06-02-08, 15:42 Απάντηση: Ερώτηση για bash #104
δεν είχα υπόψη μου την basename. Πολύ καλή ιδέα. Εγώ πάλι όλα τα περνώ απο sed ή awk ή cut
If your tool is a hammer, every problem is a nail.
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
06-02-08, 16:49 Απάντηση: Ερώτηση για bash #105
Σωστός
Το command που έδωσα έπρεπε να αναφέρω πως το χρησιμοποιώ για αρχεία που έχουν συγκεκριμένο format (ποτέ τελείες και ειδικοί χαρακτήρες) και πάντα συγκεκριμένη κατάληξη.
Την basename την αγνοούσα.
ThanksDesktop: Kubuntu | Server: Debian testing
Παρόμοια Θέματα
-
Βοήθεια για ένα απλό bash script
Από AddictedToChaos στο φόρουμ Unix - LinuxΜηνύματα: 34Τελευταίο Μήνυμα: 22-07-11, 01:57 -
bash - matlab
Από simeon.mattes στο φόρουμ Unix - LinuxΜηνύματα: 25Τελευταίο Μήνυμα: 25-06-08, 23:00 -
Bash Script help (Αρχάριος)
Από weakwire στο φόρουμ Unix - LinuxΜηνύματα: 12Τελευταίο Μήνυμα: 08-05-07, 00:41 -
bash rename (mv)
Από hayzel στο φόρουμ Unix - LinuxΜηνύματα: 6Τελευταίο Μήνυμα: 07-01-07, 16:33
Bookmarks