Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Linux-skriptipulma

Sivun loppuun

CLink [17.06.2006 12:03:58]

#

Yrittelin tehdä työtä helpottamaan pienen linux-skriptin, mutta jostain syystä se ei toimi siten kuin pitäisi. Mitä en ole ymmärtänyt? Olen nimennyt sriptin nimellä www ja sijoittanut hakemistoon /root/bin

#!/bin/bash
wheretogo=/srv/www/htdocs
pwd
cd $wheretogo
pwd
exit 0

ajoaikainen tulostus:

xxx:~/bin #./www
/root/bin
/srv/www/htdocs
xxx:~/bin #

Tuo pwd-komento tulostaa lähtöhakemiston. Samalla tavalla cd-komennon jälkeinen toinen pwd-komento tulostaa kohdehakemiston. Mutta kun skriptistä poistutaan, ollaan edelleen samassa hakemistossa, josta lähdettiin. Skritptin tarkoituksena on välttyä kirjoittamasta jatkuvasti komentoriville cd /srv/www/htdocs kun haluaa siirtyä tuohon hakemistoon.

edit: Hups, tuolla olisi ollut Muut kielet-alue, johon tämä aihe olisi paremmin sopinut, mutta ehkä tämä löytyy täältäkin.

Tumpelo [17.06.2006 12:17:17]

#

Hmm, en keksi kyllä mitään järjellistä selitystä, mutta ehkä tuohon ennen /srv:tä pitäisi laittaa jotain, jotta hakemisto löytyy, tyyliin ~ tai jotain. Tai sitten htdocsin jälkeen vielä /.

sooda [17.06.2006 12:23:53]

#

Siirsin muihin kieliin.

Käsittääkseni skriptit eivät voi vaihtaa tuota hakemistoa missä ollaan, siellä voi vaihtaa sen vain sen suorituksen ajaksi.

Ei tuo /srv/www/htdocs nyt kovin vaikea ole kirjoittaa? Ja kai tiedät, mitä tabtäydennys (vai mitä tabcompleting on suomeks) on? Se nopeuttaa tuollaisia huomattavasti. Kirjoita esimerkiks cd /s (eikä väliä tai mitään sen jälkeen) ja paina sit heti tabia kerran tai pari, ja katso mitä tapahtuu, ellet tiedä.

CLink [17.06.2006 12:30:17]

#

Tumpelo kirjoitti:

Hmm, en keksi kyllä mitään järjellistä selitystä, mutta ehkä tuohon ennen /srv:tä pitäisi laittaa jotain, jotta hakemisto löytyy, tyyliin ~ tai jotain. Tai sitten htdocsin jälkeen vielä /.

Root-hakemiston tunnus kauttaviiva ennen srv-hakemistoa osoittaa srv-hakemiston absoluuttisen sijainnin tiedostojärjestelmässä ja se on välttämätön, jos skriptiä halutaan kutsua hakemistossa kuin hakemistossa. Jos sen jättäisi pois, niin esimerkkiajotapauksessa tulisi virheilmoitus, koska hakemistolla /root/bin ei ole alihakemistoa srv.

Myöskään kauttaviivalla hakupolun lopussa ei ole mitään vaikutusta toimintaan. pwd-komento cd-komennon jälkeen tulostaa edelleen /srv/www/htdocs (ilman ylimääräistä kauttaviivaa lopussa) kuten esimerkkiajossa.

sooda kirjoitti:

Siirsin muihin kieliin.

Käsittääkseni skriptit eivät voi vaihtaa tuota hakemistoa missä ollaan, siellä voi vaihtaa sen vain sen suorituksen ajaksi.

Ei tuo /srv/www/htdocs nyt kovin vaikea ole kirjoittaa? Ja kai tiedät, mitä tabtäydennys (vai mitä tabcompleting on suomeks) on? Se nopeuttaa tuollaisia huomattavasti. Kirjoita esimerkiks cd /s (eikä väliä tai mitään sen jälkeen) ja paina sit heti tabia kerran tai pari, ja katso mitä tapahtuu, ellet tiedä.

Olen käyttänyt tabtäydennystä, mutta siitä ei itse asiassa näin lyhyissä poluissa ja tässä tapauksessa ole hirveästi hyötyä:

cd /sr<tab>
w<tab>
htdo<tab> eli yhteensä 13 merkkiä

Vaihtaisin nuo 13 merkkiä mieluimmin kolmeen (plus Enter) skriptin kutsumerkkiin.

Niin, itse asiassa taisin keksiä ratkaisun, jolla pulma helpottuisi ilman skriptiä. Asetin seuraavan ympäristömuuttujan:

export www=/srv/www/htdocs

sitten komentorivillä kirjoitan cd $www ja painan Enteriä. Tämä on yksinkertaisempaa kuin tab-korvauksen tai koko polun käyttäminen.

Blaze [17.06.2006 13:01:32]

#

Toinen ratkasu on symbolinen linkki.
lrwxrwxrwx 1 blaze users 26 2005-05-27 14:55 www -> /var/www/localhost/htdocs/
Nyt voi tehdä kotihakemistosta cd www, tai mistä tahansa cd ~/www

CLink [17.06.2006 13:22:59]

#

Kiitos, tuo oli näppärin ratkaisu. Ei tarvitse temppuilla tuon $-merkin kanssa komentoa kirjoittaessa.

Cornix [25.06.2006 17:03:55]

#

Eikö vieläkin helpompaa olisi tehdä alias tuosta www:stä? Silloin se toimisi juuri kuten haluat, eli kirjoittamalla www siirryttäisiin automaattisesti tuohon hakemistoon.
Esimerkiksi Fedorassa oli olemassa alias l 'ls -l --color':lle tai jollekin vastaanlaiselle. Oli kieltämättä ihan kätevä joskus.

miiro [25.06.2006 17:12:32]

#

eli .bashrc:een kirjoitat alias www='cd /var/www/localhost/htdocs' ja käynnistät bashin uudestaan ja voilá: www siirtyy tuonne haluamaasi hakemistoon :O

CLink [08.07.2006 20:11:36]

#

miiro kirjoitti:

eli .bashrc:een kirjoitat alias www='cd /var/www/localhost/htdocs' ja käynnistät bashin uudestaan ja voilá: www siirtyy tuonne haluamaasi hakemistoon :O

Kiitos. Olen välillä ollut muissa projekteissa kiinni ja tämän keskusteluryhmän tarkistaminen on jäänyt. Tuo on juuri se ratkaisu, johon alunperin tähtäsinkin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta