Προς το περιεχόμενο

shell scripts σε ascii μορφή ?


mariakal

Προτεινόμενες αναρτήσεις

Έχω τα τρία shell scripts που επισυνάπτω, τα οποία τα έχω ¨τρέξει¨ σε windows με virtual box.

Προφανώς είναι σε binary μορφή.

Μου ζητά όμως ο καθηγητής να τα μετατρέψω σε ascii μορφή χρησιμοποιώντας κάποιον editor και να του τα ξαναστείλω γιατί δεν μπορεί να τα κάνει compile :-)

Ίσως να είναι πολύ ...χαζό το ερώτημά μου, αλλά έχω βραχυκυκλώσει.

Πώς μπορώ να το κάνω αυτό?

:cry:

2.1.txt

2.2.txt

2.3.txt

1.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχω τα τρία shell scripts που επισυνάπτω, τα οποία τα έχω ¨τρέξει¨ σε windows με virtual box.

Προφανώς είναι σε binary μορφή.

Μου ζητά όμως ο καθηγητής να τα μετατρέψω σε ascii μορφή χρησιμοποιόντας κάποιον editor?

Ίσως να είναι πολύ ...χαζό το ερώτημά μου, αλλά έχω βραχυκυκλώσει.

 

το txt είναι ascii μορφή

shell scripts σημαίνει εντολές κατανοητές απ' το shell αλλά και απ'τον χρήστη

 

άνοιξέ τα στα win με notepad, πρέπει να διαβάζονται

 

στο linux οι γνωστοί editors που να είναι εύχρηστοι είναι:

 

gedit geany medit kate και άλλοι

 

.

 

---------- Προσθήκη 25-03-2010 στις 01:12 ---------- Προηγούμενο μήνυμα 24-03-2010 στις 23:19 ----------

 

στο ποστ του giso φαίνεται τι είναι τα αρχεία

 

δες αυτά τα σχετικά

http://en.wikipedia.org/wiki/ASCII

http://en.wikipedia.org/wiki/Byte_order_mark

While UTF-8 does not have byte order issues, a BOM encoded in UTF-8 may nonetheless be encountered. A UTF-8 BOM is explicitly allowed by the Unicode standard[2], but is not recommended[3], as it only identifies a file as UTF-8 and does not state anything about byte order.[4] Many Windows programs (including Windows Notepad) add BOMs to UTF-8 files by default. However in Unix-like systems (which make heavy use of text files for file formats as well as for inter-process communication) this practice is not recommended, as it will interfere with correct processing of important codes such as the shebang at the start of an interpreted script.[5] It may also interfere with source for programming languages that don't recognise it. For example, gcc reports stray characters at the beginning of a source file, and in PHP, if output buffering is disabled, it has the subtle effect of causing the page to start being sent to the browser, preventing custom headers from being specified by the PHP script. The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters  in most text editors and web browsers not prepared to handle UTF-8.

 

γράψε πιό αναλυτικά την περίπτωση

γιά να πάρεις πιό εύστοχη απάντηση

 

 

αν και για όλα φταίει η micro$oft ! :mrgreen:

 

.

post-36682-129063076141_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μου ζητά όμως ο καθηγητής να τα μετατρέψω σε ascii μορφή χρησιμοποιώντας κάποιον editor και να του τα ξαναστείλω γιατί δεν μπορεί να τα κάνει compile

http://en.wikipedia.org/wiki/Unix_shell

???????????????????????????????????????

πού πήγε το 1.txt ?

αλλάζεις το κείμενο και .. δεν θα βγεί άκρη

 

ευτυχώς που η μέρκελ δεν μπαίνει στο insomnia

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1. Δεν είναι σε binary.

>
$ file 2.1.txt 
2.1.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators

 

2. Τα scripts δεν τα κάνουμε compile, τρέχουν όπως είναι σε ascii.

 

3. Πες στον καθηγητή σου ότι μπορεί να τα ανοίξει με το vi ή με το nano.

 

4. Άλλη φορά μην τα σώζεις από notepad γιατί χαλάνε οι αλλαγές γραμμών (CRLF αντί για LF) και μπαίνει και ένα πράγμα στην αρχή που λέγεται BOM, ενώ στο Linux δεν χρειάζεται.

Χρησιμοποίησε έναν οποιονδήποτε editor του Linux για να τα σώζεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το αρχείo 1.txt ποτέ δεν ανικαταστάθηκε, απλώς για λίγο το αφαίρεσα από δικό μου λάθος.

Εν πάσει περιπτώσει όμως, επειδή αρχίζω να τα βάζω σε δρόμο, μπορεί κάποιος να μου στείλει ένα output για το 1.txt ;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

επισυνάπτω διορθωμένο το 1.txt με όνομα 1_n.txt

 

έχω σβήσει το BOM που βάζει το notepad, με τη βοήθεια του mc (midnight commander)

 

με τον editor geany (γιατί δεν είμαι για vi nano και άλλες ασκήσεις πιάνου) το έσωσα ώστε να μετατρέψει τα CR & LF (που βάζει το notepad κατά τις συνήθειες της micro$oft στο τέλος κάθε γραμμής) σε σκέτα LF (κατά τις συνήθειες του unix)

 

μετονόμασα το 1.txt se 1.c γιατί δεν το καταλάβαινε ο compiler και μετά έδωσα την εντολή

 

gcc 1.c -o ena

 

το ena ειναι το εκτελέσιμο που προκύπτει εφόσον έβαλα το -ο "ονομα"

οταν γράφουμε gcc onoma.c το εκτελέσιμο που προκύπτει εχει ονομα παντα a.out

 

επισυνάπτω και το output στο τερματικό που το έτρεξα

 

 

συμβουλή :

κατέβασε μιά διανομή linux πχ knoppix

γράψ'την σε cd και τρέχε την live

θα έχεις ένα περιβάλλον έτοιμο, χωρίς να πειράζεις τα windows και θα σώζεις τη δουλειά σου σε κάποιο usb stick

 

.

1_n.txt

post-36682-129063076687_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χρησιμοποίησε το dos2unix για να μετατρέψεις το encoding του αρχείου σε κάτι που μπορεί να ανοίξει το Linux. Το πρόγραμμα θα το βρείς στα repositories της διανομής σου ή μπορείς να χρησιμοποιήσεις αυτό το site.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τέλεια, σας ευχαριστώ πολύ.

Και μια τελαυταία ερώτηση:

Τα scripts 2.1, 2.1 & 2.3 γιατί μου λέει (ο καθηγητής) ότι δεν μπορεί να τα "τρέξει";

Μήπως πρέπει κα σε αυτά να κάνω κάποια μετατροπή;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλημέρα.

 

Τέλεια, σας ευχαριστώ πολύ.

Και μια τελαυταία ερώτηση:

Τα scripts 2.1, 2.1 & 2.3 γιατί μου λέει (ο καθηγητής) ότι δεν μπορεί να τα "τρέξει";

Μήπως πρέπει κα σε αυτά να κάνω κάποια μετατροπή;

 

2 περιπτώσεις:

 

1. Στην πρώτη γραμμή των scripts (αυτή που αρχίζει με τους χαρακτήρες #! ή αλλιώς "shebang" ή αλλιώς "hashbang") καθορίζεται ότι το πρόγραμμα που πρέπει να ερμηνεύσει και να εκτελέσει τα scripts είναι το κέλυφος/shell Bash και του οποίου το εκτελέσιμο πρέπει να βρίσκεται στον κατάλογο /bin. Είτε δεν υπάρχει κέλυφος bash εγκατεστημένο στο σύστημα του καθηγητή σου και χρησιμοποιείται κάποιο άλλο κέλυφος (π.χ. zsh ή κάποιο από τα πολλά άλλα που υπάρχουν σε Linux και Unix-οειδή συστήματα) είτε υπάρχει μεν, αλλά το εκτελέσιμό του (ή symlink/συντόμευση προς αυτό) δε βρίσκεται στον κατάλογο /bin. Σε μερικά συστήματα, υπάρχει ένα symlink με όνομα sh στον κατάλογο /bin που «δείχνει» στο default εγκατεστημένο shell του συστήματος. Οπότε, αν η πρώτη γραμμή γίνει:

>#!/bin/sh

το πρόβλημα θα λυνόταν. Έτσι όμως, δεν εξασφαλιζόμαστε στην περίπτωση που το script μας περιέχει εντολές και features που είναι αποκλειστικότητα του bash και δε θα μπορούν να ερμηνευθούν σωστά από κάποιο άλλο shell.

 

2. Τα scripts ως αρχεία δεν έχουν δικαιώματα εκτέλεσης για τον τρέχοντα χρήστη. Κανονικά, για να εκτελεστεί ένα script απλά με τον προσδιορισμό του ονόματος αρχείου τους:

>./script_tade.sh

θα πρέπει πρωτύτερα ο χρήστης να έχει αλλάξει τα attributes του αρχείου, δίνοντας στον εαυτό του δικαίωμα εκτέλεσης:

>chmod u+x script_tade.sh

Ένας άλλος τρόπος είναι να καλέσουμε ρητά ένα νέο shell instance και να περάσουμε το script ως παράμετρο. Π.χ.:

>/bin/bash script_tade.sh

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...