Περίεργο tar πρόβλημα.

Christos Ricudis ricudis at komodino.itc.auth.gr
Thu Nov 27 11:20:01 GMT 2008


apix wrote:
> Τελικά δεν είναι permittions problems γιατι δοκίμασα tar xvf *.tar -C
> /tmp και πάλι δεν τα κατάφερε. Ούτε και filessytem πρόβλημα αφού τα
> κάνω extract  σε ext3. Επίσης η tar -xf *tar -C /tmp σκέτη δεν μου
> πετάει κανένα λάθος αλλά και πάλι μένει στα 11MB. Οπότε μάλλον κάτι
> είναι τρύπιο :P
>
>   

Yποθετοντας οτι κανεις ακριβως οτι γραφεις :

Να προσεχεις με τ'αστερακια στο UNIX. Δεν κανουν ακριβως αυτο που εχεις 
συνηθισει απο το DOS.

Οριστε ενα παραδειγμα :

komodino:[ricudis]~/dulap$ ls -l
total 12
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:43 xor.tar
komodino:[ricudis]~/dulap$ tar -xvvf *.tar
-rw-r--r-- ricudis/ricudis   1 2008-11-27 12:43 koko
-rw-r--r-- ricudis/ricudis   1 2008-11-27 12:43 lala
komodino:[ricudis]~/dulap$ ls -l
total 20
-rw-r--r-- 1 ricudis ricudis     1 Nov 27 12:43 koko
-rw-r--r-- 1 ricudis ricudis     1 Nov 27 12:43 lala
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:43 xor.tar
komodino:[ricudis]~/dulap$                              

Η tar δουλεψε ακριβως οπως περιμεναμε. Εστω ομως οτι εχουμε δυο tar 
αρχεια και θελουμε να τα κανουμε extract :

komodino:[ricudis]~/dulap$ ls -l
total 24
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:43 syr.tar
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:49 xor.tar
komodino:[ricudis]~/dulap$ tar -xvvf *.tar
tar: xor.tar: Not found in archive
tar: Error exit delayed from previous error
komodino:[ricudis]~/dulap$ ls -l
total 24
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:43 syr.tar
-rw-r--r-- 1 ricudis ricudis 10240 Nov 27 12:49 xor.tar
komodino:[ricudis]~/dulap$                                 

Εδω ομως τι εγινε;

Εγινε οτι στο UNIX, το glob expansion - δηλαδη η αντικατασταση του 
"*.tar" με τα filenames που ταιριαζουν στο pattern, γινεται απο το 
shell, και το αποτελεσμα του expansion αντικαθιστα το pattern. Υστερα, 
εκτελειται η εντολη.

Δηλαδη στην πρωτη περιπτωση ειναι σαν να γραφαμε κατευθειαν

tar -xvvf syr.tar

(που εχει το επιθυμητο αποτελεσμα)

και στην δευτερη

tar -xvvf syr.tar xor.tar

...το οποιο σημαινει "ανοιξε μου το syr.tar και βγαλε εξω το xor.tar", 
που μαλλον δεν ειναι αυτο που εννοουσαμε.

Ειναι ενα αρκετα συνηθισμενο λαθος οσων ηξεραν να χρησιμοποιουν DOS και 
μαθαινουν UNIX. Η διαφορα ειναι οτι στο DOS, το glob expansion δεν 
γινεται απο τον φλοιο, αλλα απο το ιδιο το εκτελεσιμο που δεχεται τις 
παραμετρους - οποτε γνωριζει και για ποιο ορισμα προοριζονται. Ετσι για 
παραδειγμα μπορουσες να δωσεις μια εντολη του ειδους "pkunzip *.zip 
koko.*" για να κανεις extract οτι koko.* περιεχεται μεσα στο *.zip.








More information about the Ubuntu-gr mailing list