QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] Cygwin bash hívása Total Commander-ből

2011.06.11. 12:00 | TrueY | Szólj hozzá!

Címkék: windows 2011 hájtek cygwin

A Total Commander gomb sorába (Button Bar) fel lehet venni egy szép gombocskát, amire bökve indítani tudja a Cygwin-t és arra a könyvtárra tud állni, ami a Total Commander-ben a jelenlegi path. Hogyan valósítható ez meg? Annyira azért nem triviális!

1. lépés: A Cygwin gomb felvétele:

Tegyük fel, hogy a cygwin a c:\cygwin alá van telepítve. Továbbá tegyük fel, hogy az rxvt csomagot is hozzáadtuk. Ekkor Total Commander-ben a Configuration menu -> Button Bar... -> Add után megadhatjuk a szükséges adatokat:

  • Command: C:\cygwin\bin\rxvt.exe
  • Parameters: -bg #000020 -fg #a0a000 -sl 5000 -geometry 80x43 -fn 9x15 -e /bin/bash -i -c "TC_SRCDIR='%P' TC_DSTDIR='%T' TC_SRCNAME='%O' TC_SRCEXT='%E' TC_DSTFILE='%M' /bin/bash -li"

    Úgy tűnhetne, hogy a TC_SRCNAME és TC_SRCEXT helyett használni lehetne a TC_SRCFILE='%N' beállítást, hiszen a %N pont a forrás file nevét adja. Van vele egy kis gond! Az összes többivel ellentétben a %N macskakörmök közé teszi a file nevét, ha szóköz van benne! De csak akkor! Ez pedig összezavarja a paraméter átadást. Se a %M, se a %O, se a %E nem csinál ilyet! Így ezt a workaround-ot kell használni!

    Ha a scroll bar-t inkább a jobb oldalra szeretnénk, akkor a paraméterek elejére adjuk hozzá egy "-sr"-t. Én jobban szeretem a bal oldalon, mert kevesebbet kell egerészni.
  • Icon File: C:\cygwin\Cygwin.ico (ínyencebbek választhatják a C:\cygwin\bin\rxvt.exe-t is)
  • Tooltip: Cygwin

2. A cygwin-ben a user-ünk .bash_profile-jának végéhez ezt a kódot adhatjuk hozzá:

if [ -n "$TC_DSTDIR" ]; then
    if [[ "$TC_DSTDIR" == \\* ]]; then
        echo "Destination is a network share. Please map it before use!"
    elif [[ "$TC_DSTDIR" == [0-9]:* ]]; then
        echo "Destination is on an ftp server."
    else
        myifs="$IFS"
        IFS=""
        TC_DSTDIR=$(cygpath -u ${TC_DSTDIR})
        IFS="$myifs"
    fi
fi
if [ -n "$TC_SRCDIR" ]; then
    if [[ "$TC_SRCDIR" == \\* ]]; then
        echo "Source is a network share. Please map it before use!"
    elif [[ "$TC_SRCDIR" == [0-9]:* ]]; then
        echo "Source is on an ftp server. Can not change directory!"
    else
        myifs="$IFS"
        IFS=""
        TC_SRCDIR=$(cygpath -u ${TC_SRCDIR})
        IFS="$myifs"
        cd "$TC_SRCDIR"
    fi
fi
TC_SRCFILE="$TC_SRCNAME"${TC_SRCEXT:+.$TC_SRCEXT}

A fenti beállítások eredményeként ha rányomunk a Total Commander-ben a Cygwin gombra, akkor elindítja a bash-t egy rxvt ablakban. Lesz pár beállított környezeti változónk, ami az alábbiakat tartalmazza:

  • TC_SRCDIR - a forrás ablakban levő könyvtár unix formátumú nevét a lezáró '/'-sel
  • TC_SRCNAME - a forrás ablakban levő éppen kijelölt file kiterjesztés nélküli nevét
  • TC_SRCEXT - a forrás ablakban levő éppen kijelölt file kiterjesztését
  • TC_SRCFILE - a forrás ablakban levő éppen kijelölt file nevét
  • TC_DSTDIR - a cél ablakban levő könyvtár unix formátumú nevét a lezáró '/'-sel
  • TC_DSTFILE - a cél ablakban levő éppen kijelölt file nevét

És a bash a forrás könyvtáron fog állni (feltéve, ha a .bash_profile-ban a fenti kódrészlet után nem hangzik el még egy 'cd' parancs). A környezeti változókat pedig prímán használhatjuk a később megírandó szkriptjeinkben.

Egy ismert probléma adódhat. Olyan könyvtárneveknél, ahol olyan hálózati drive-ra hivatkozunk, ami nincs hozzárendelve drive bötűhöz (pl. \\server\share), azt nem fogja tudni átkonvertálni unix-os path-szá és a .bash_profile üzenni fog nekünk, hogy problema van. Hasonlóan, ha egy ftp server-en vagyunk valamelyik ablakban, akkor azt sem fogja tudni cygwin path-szá alakítani és akkor üzenetet fogunk kapni a bash indulásakor. Ilyen esetben az átadott path így fog kinézni: 0:\directory.

Ha a TC_DSTFILE és/vagy a TC_SRCFILE üres, akkor az forrás és/vagy a cél ablakban a [..] könyvtáron állunk.

Az is megoldható, hogy ha több file van kijelölve, akkor ezek mindegyike átadódjon a bash-nak mind a forrás, mind a cél könyvtárakban. Lehet játszani a Total Commander %S, %P%S, %R, %L, %l, %F, %f, %D, %d, %WL, %WF, %UL, %UF változókkal. Ehhez jó szórakozást minden kedves érdeklődőnek!

Hívogassunk minden nap!

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/tr902864799

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása