grep -i και ελληνικά κεφαλαία /πεζά

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Dec 14 14:18:55 EET 2005


On 2005-12-14 13:37, "Nick Demou (enLogic)" <ndemou at enlogic.gr> wrote:
> Giorgos Keramidas wrote:
> >On 2005-12-14 12:57, "Nick Demou (enLogic)" <ndemou at enlogic.gr> wrote:
> >
> >>... Μην
> >>βρίζετε είμαι γνωστός ταχυγράφος με την μέθοδο Quasi-Blind Fast Random
> >>Hits with Strong Negative Feedback
> >
> >
> >Α αυτό δεν μας το είπες.  Κλεψιά! :P
>
> τρικ για να κρατήσω το ενδιαφέρον ψηλά ;-)
>
> >...
> >>Ιδέες?
> >
> >
> >Μέχρι όλος ο κόσμος να το γυρίσει σε UTF-8 (yeah right, καλώς ήρθατε στο
> >όνειρό μας, πάρτε καρέκλα, ποτάκι; σε λίγο έχει και ταινία), μάλλον η
> >καλύτερη λύση είναι όταν συνδέεσαι σε απομακρυσμένα συστήματα να
> >χρησιμοποιείς κάποιο unibyte locale, π.χ. 'C', σε terminal που δεν είναι
> >σε multibyte κατάσταση :-(
>
> ΟΚ, ΟΚ, υποχώρηση λοιπόν από την ουτοπία του UTF-8... δεν πειράζει θα
> ζήσω (ελληνικά και αγγλικά θέλω μόνο).
>
> Το δοκίμασα λοιπόν και φυσικά ... δεν παίζει ακόμα γιατί το environment
> είναι "POSIX". Θα μου πείτε LC_ALL=...; export LC_ALL; LANG... etc αλλά
> στην περίπτωση μου ο χρήστης που κάνει login δεν έχει για shell
> /bin/bash αλλά το /home/pass/pass.py ένα δικό μου python script (security).

Για να έχει 'restricted' shell access?

> Πως θα αλλάξω το environment κάτω από το οποίο τρέχει το python script
> σε iso8859-7?

Δεν ξέρω τόσο καλά Python, αλλά όλο και κάποια κλήση θα έχει η Python
για να θέσει το τρέχον locale...  Α νάτο, το βρήκα.

    >>> import os, locale
    >>> def mylocale(lname, lcat, lval=None):
    ...   locale.setlocale(lcat, lval)
    ...   os.putenv(lname, lval)
    ...   os.environ[lname] = lval
    ...
    >>> mylocale("LC_ALL", locale.LC_ALL, "C")
    >>> os.environ['LC_ALL']
    'C'
    >>> mylocale("LC_ALL", locale.LC_ALL, "el_GR.ISO8859-7")
    >>> os.environ['LC_ALL']
    'el_GR.ISO8859-7'
    >>>

Προσοχή, χρειάζονται *ΚΑΙ* οι 3 κλήσεις στην mylocale().  Η os.putenv()
για να περάσει η τιμή lname=lval σε οποιαδήποτε child processes, η
os.environ[] για το τρέχον process και η locale.setlocale() για να
ενημερωθεί η libc για το τρέχον locale.





More information about the Linux-greek-users mailing list