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.
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ä /.
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ä.
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.
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
Kiitos, tuo oli näppärin ratkaisu. Ei tarvitse temppuilla tuon $-merkin kanssa komentoa kirjoittaessa.
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.
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
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.