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

Κενά και εντολές στο Λίνουξ


Dimmu_Borgir

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

Δημοσ.

Γειά σας,

Γράφω ένα προγραμματάκι για λίνουξ και σε κάποια φάση πρέπει να τρέξω μια εντολή με:

>Runtime.getRuntime().exec(command)

Το θέμα είναι ότι το command περιέχει κενά. Γιαυτό το λόγο τα αντικαθιστώ με "\ ".

Αλλά δεν δουλεύει...

Το ίδιο command σε terminal δουλεύει μια χαρά...

 

Καμιά ιδέα;

 

Edit: Ξέχασα να πώ ότι το γράφω σε Java...

Δημοσ.

Δεν υπάρχει πρόβλημα με τα κενά. Αν δηλαδή θες να γράψεις την εντολή στο unix "ls -l | grep abc", στον κώδικα σου κάνε

 

>
String command = "ls -l | grep abc";
Runtime.getRuntime().exec(command);

Δημοσ.

Opos akrivos eipe o Cue... xreiazetai 2 "\"

 

px. An exeis ena string: "string\n"

auto tha emfanistei os "string" + nea grammi

 

An esi theleis na sou emfanistei to "string\n" opos einai, tote prepei na to grapseis os "string\\n".

Δημοσ.

Ναι το ξέρω αυτό για τον escape character...

Και αν πρόσεξες είπα αντικαθιστώ " " με "\ " (χωρίς τα "", όχι στον κώδικα).

Τελικά βρήκα λύση...

Με χρήση String[] και όχι String, δηλαδή το command είναι String array και όχι απλό String...

Δημοσ.
Το "πρόβλημα" δεν είναι στην Java αλλά στο linux :)

 

Θες να μας εξηγησεις το λογο γιατι το προβλημα ειναι στο linux ?

 

 

Ειναι λαθος αυτο που κανατε μερικοι, να αντικαταστησετε τους κανονες που ισχυουν στο bash με αυτους που θα ισχυαν στην java.

Δημοσ.
Θες να μας εξηγησεις το λογο γιατι το προβλημα ειναι στο linux ?

 

Το "πρόβλημα" είναι όταν πας να κάνεις π.χ. cd σε ένα directory όπως "my white spaces folder" :)

 

Ειναι λαθος αυτο που κανατε μερικοι' date=' να αντικαταστησετε τους κανονες που ισχυουν στο bash με αυτους που θα ισχυαν στην java.[/quote']

 

Θες να μου εξηγήσεις εσύ το συγκεκριμένο λάθος? :/ Αν και δε νομίζω πως με αφορά.

  • 2 εβδομάδες αργότερα...
Δημοσ.
Το "πρόβλημα" είναι όταν πας να κάνεις π.χ. cd σε ένα directory όπως "my white spaces folder" :)

 

 

 

Θες να μου εξηγήσεις εσύ το συγκεκριμένο λάθος? :/ Αν και δε νομίζω πως με αφορά.

 

 

Καλα για το πρωτο πες μας οτι κανεις πλακα ή απλα πες μας οτι δεν εχεις δουλεψει ποτε σε καποιο Unix shell... δεν σοβαρολογεις τωρα, ετσι ?

Δεν υπαρχει κανενα απολυτως προβλημα..

 

Το bash, ειναι ετη φωτος μπροστα απο το cmd(<--αν θεωρηθει shell αυτο το πραγμα) των win2k family το οποιο οποτε το ανοιγω πρεπει να ριξω την συχνοτητα του εγκεφαλου μου για να το χρησιμοποιησω..

 

 

Οσον αφορα την JAVA και τα κενα, θα σου πω οτι εχω μηδαμινη εμπειρια απο JAVA.

Τα UNIX shells ειναι interpreters και εχουν τους δικους τους κανονες για τα κενα.

Αν θες να χρησιμοποιησεις JAVA στο UNIX και θες να δεις τι γινεται με τα κενα σε καποιο path θα πρεπει να κοιταξεις στο documentiation της JAVA...

Δημοσ.

Συνεχίζω να μην καταλαβαίνω αυτά που γράφεις :/...

Ίσως κάποιος άλλος να μπορεί να με διαφωτίσει.

Δημοσ.
Συνεχίζω να μην καταλαβαίνω αυτά που γράφεις :/...

Ίσως κάποιος άλλος να μπορεί να με διαφωτίσει.

 

Εχεις επαφη με Linux/Unix ?

 

Συγκεκριμενα τι δεν καταλαβαινεις ?

Δημοσ.

Πιστεύω πως παρεξήγησες τα λεγόμενα μου.

 

Το "πρόβλημα" (πρόσεξε τα εισαγωγικά) που αναφέρω για τα white spaces και το linux είναι ότι για να κάνεις π.χ. ένα cd σε κάποιο dir που το όνομα του περιέχει ws θα πρέπει είτε να τα κάνεις escape using backslash είτε να χρησιμοποιήσεις quotes.

 

C'est ca.

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

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

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