Autor |
Sõnum |
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
Niisiis sisenesin ... või pigem proovisin siseneda Nähtamatusse Ülikooli ... proovisin siis kirjutada scripti. Viki õpetus piltide suurendamiseks.
Jõudsin järeldusele, et Kood: | for img in `ls *.jpg`
do
convert -resize 800x600 $img resized-$img
done | ei muutu kuidagi scriptiks. Kolasin siis veidi ringi ja leidsin piisavalt lihtsa seletuse. Writing shell script. Jõudsin sellise tulemuseni: Kood: | #!/bin/bash
#kuradi raisk
echo "for img in `ls *.jpg`
do
convert -resize 800x600 $img resized-$img
done" |
Mis siin valesti on? Küll ütleb, et "bash: ./skript: Permission denied" või tuleb selline tekst Kood: | for img in s7301902.jpg
s7301903.jpg
s7301904.jpg
s7301905.jpg
s7301907.jpg
s7301908.jpg
s7301909.jpg
s7301910.jpg
do
convert -resize 800x600 resized-
done
| Mida ma kahe silma vahele jätnud olen?
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
mihkel
Vana Pingviin
Liitunud: 16.04.2006
Postitused: 1284
Distributsioon: Fedora/Centos
|
|
Selline jupp mul töötab:
Kood: |
#!/bin/sh
for img in `ls *.jpg`
do
convert -resize 800x600 $img resized-$img
done
|
Salvestad ta mingi nime all, näiteks pildid.sh ja annad talle käivitamisõigused
chmod +x pildid.sh
Siis paiguta ta kataloogi, kus on pildid, millede suurust soovid muuta ning toksid käsureale:
./pildid.sh
|
|
|
|
Viimati muutis mihkel 03.10.2008, 08:15; muudetud 1 kord
|
|
|
|
wk
Vana Pingviin
Liitunud: 24.10.2007
Postitused: 1133
Asukoht: Tallinn, vahel Vastseliina vald
Distributsioon: Debian, Kubuntu
|
|
Käivitatavad asjad peavad saama käivitamise õigused, seda saab anda käsurealt 2 moodi:
Kood: | chmod 750 skriptike
chmod ug+x skriptike |
Numbriline 750 on kolmes osas 7 on faili omaniku õigused, 5 grupi liikme õigused ja 0 kõigi õigused. 7 omakorda saadakse liitmisel 4 + 2 + 1 (lugemisõigus + kirjutamisõigus + käivitamisõigus).
Tähed u ja g tähistavad userit ja gruppi, +x tähistab käivitamisõiguse andmist.
Loodetavasti on sest abi.
|
|
|
|
_________________ Kõike hääd,
WK
|
|
|
|
Sisyphos
Vana Pingviin
Vanus: 62
Liitunud: 24.02.2008
Postitused: 602
Distributsioon: Slackware
|
|
Proovisin ka seda skripti. Kui nime sees on tühikud siis ta ei tööta. Kui tühikuid ei ole töötab ilusasti.
|
|
|
|
_________________
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
skript.sh Kood: | #!/bin/sh
#keeldub
echo "for img in `ls *.jpg`
do
convert -resize 800x600 $img resized-$img
done" | Keeldub täiega tööle minamast. Ei avalda mingit vastupanu, aga ei tee midagi.
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
mihkel
Vana Pingviin
Liitunud: 16.04.2006
Postitused: 1284
Distributsioon: Fedora/Centos
|
|
Muidugi ta ei tee midagi.
echo "blaah"
Kuvab ekraanile kõik selle, mis jutumärkide vahel on. Sinu skriptis ongi kõik vajalik jutumärkide vahel. Ta ei saagi midagi teha
|
|
|
|
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
mihkel kirjutas: | Muidugi ta ei tee midagi.
echo "blaah"
Kuvab ekraanile kõik selle, mis jutumärkide vahel on. Sinu skriptis ongi kõik vajalik jutumärkide vahel. Ta ei saagi midagi teha |
Ja ...? On jah jutumärkide vahel. Informatiivsust jääb küll puudu. Mis siin valesti on? Ja mis blaah?
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
mihkel
Vana Pingviin
Liitunud: 16.04.2006
Postitused: 1284
Distributsioon: Fedora/Centos
|
|
echo ongi selline funktsioon, mille eesmärgiks on teksti kuvamine.
Kui kuvatav tekst mahub ühele reale, siis jutumärke pole vaja. Nt
Kui on vaja kasutada mitut rida, siis on jutumärgid ühed üsna kasulikud vidinad. Nt
Kood: | echo "Rida 1
Rida 2" |
Kuna sina panidki kogu oma skripti kasuliku osa jutumärkide vahele, siis masin saab sellest nii aru, et nad kõik kokku on üks string, mille peab lihtsalt terminali aknasse kuvama.
Või siis midagi sarnast. Üritasin omaarust lihtsalt seletada
|
|
|
|
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
Novot, aga seal pole midagi selgitavat lisatud. Mina panin asja nii kirja nagu ta oli.
St: siin pole echo-ga midagi teha? Prooovisin seda igasugust moodi muuta. Aga sain erinevaid lolluse tundemärke: unexpected... syntax error .
Lõpuks sain sellisega mingi tulemuse Kood: | #!/bin/bash
clear
echo for img in `ls *.jpg`
convert *.jpg -resize 800x600 $img *.jpg resized-$img |
... kuigi ta tegi mulle kahest pildist 4 resized--0,1,2,3 jpg faili ilma laiendita.
Ega ma nüüd aru küll ei saa, mida ma kokku keerasin.
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
Sisyphos
Vana Pingviin
Vanus: 62
Liitunud: 24.02.2008
Postitused: 602
Distributsioon: Slackware
|
|
Mihkel andis ju töötava variandi. Ei saanud tööle ainult selliste failidega tööle, kus tühikud sees.
Aga ega miks Kessu seda ei proovi mina ei tea...
|
|
|
|
_________________
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
OOOOOOOttttttt nüüd. Pildi nimi ei tohi olla kahest sõnast koosnev? St. tühikut ei tohi olla ka sõna sees ... aga ta teeb 800X542 mitte 600
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
Sisyphos
Vana Pingviin
Vanus: 62
Liitunud: 24.02.2008
Postitused: 602
Distributsioon: Slackware
|
|
Kindlasti saab ka tühikuga failinimesid kasutada, aga mina ei oska siin abiks olla. Ei ole veel elus ühtegi skripti kirjutanud
Minul tegi küll 800x600.
|
|
|
|
_________________
|
|
|
|
wk
Vana Pingviin
Liitunud: 24.10.2007
Postitused: 1133
Asukoht: Tallinn, vahel Vastseliina vald
Distributsioon: Debian, Kubuntu
|
|
Tsitaat: | Kas on piisav vastus? | Suhteliselt. Sellele skriptile ei meeldi tühikutega failinimed. Miks? Sellepärast, et ajalooliselt on tühik olnud eraldaja ja faili nime loetakse kuni esimese tühikuni. Mulle ka ei meeldi tühikute ja täpitähtedega failinimed. Miks? Sellepärast, et need võivad erinevates situatsioonides tüütuid vigu põhjustada.
Konstruktiivsemalt, proovi siis nii:
Kood: | #!/bin/sh
for img in *.jpg
do
convert -resize 800x600 "$img" resized-"$img"
done |
|
|
|
|
_________________ Kõike hääd,
WK
|
|
|
|
wk
Vana Pingviin
Liitunud: 24.10.2007
Postitused: 1133
Asukoht: Tallinn, vahel Vastseliina vald
Distributsioon: Debian, Kubuntu
|
|
Tsitaat: | aga ta teeb 800X542 mitte 600 | Elementarno, Uatson. Järelikult oli Sul algne pilt vastavate proportsioonidega. -resize teeb Su pildi nii palju väiksemaks või suuremaks, et selle laius ei ületaks 800 ja kõrgus ei ületaks 600. Kui sel pildid teha kõrgus 600, siis tuleks laiust omakorda suurendada umbes 870 pikslini. Teine variant on pilt proportsioonidest välja venitada, aga seda tuleb siis ka konkreetselt öelda.
|
|
|
|
_________________ Kõike hääd,
WK
|
|
|
|
priit
Vana Pingviin
Vanus: 40
Liitunud: 04.08.2005
Postitused: 521
Asukoht: Tartu
Distributsioon: CentOS / OS X
|
|
Kui tahad ka tühikutega failinimesid kasutada, siis näeks skript välja selline:
Kood: | #!/bin/bash
IFS='
'
for img in `ls *.jpg`; do
convert -resize 800x800 $img resized-$img
done |
Põhjus, miks resize väärtuseks panin 800x800, on see, et nii töötab ka skript püstiste failide puhul, pikemaks küljeks on alati 800 px. IFS-i kaks rida tegeleb tühikutega.
|
|
|
|
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
Seda mul just vaja oligi, aga ega ma ikka aru saa, et mis asjadega tegi on. Niipalju kui ma olen otsinud ei räägita rohkem kui algse scripti kirjutamisest: "Tere maailm!" ja muud midagi. Eesti keeles pole midagi. Väjamaalased ei kirjuta ka suurt rohkem.
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
mihkel
Vana Pingviin
Liitunud: 16.04.2006
Postitused: 1284
Distributsioon: Fedora/Centos
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
Kood: | Shell scripts should be located in your search path and ~/bin should be in your search path. |
Ma saan aru, et siin räägitakse sellest otsinguteest? Mida see endast kujutab? Kusagil kästi enda skriptidele teha eraldi kaust. Aga kuhu see kaust teha, et ma ei peaks seda skripti tõstma ühest kaustast teise?
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
Sisyphos
Vana Pingviin
Vanus: 62
Liitunud: 24.02.2008
Postitused: 602
Distributsioon: Slackware
|
|
kessu kirjutas: | Kood: | Shell scripts should be located in your search path and ~/bin should be in your search path. |
Ma saan aru, et siin räägitakse sellest otsinguteest? Mida see endast kujutab? | Otsingutee (PATH) on kohad kust otsitakse programme , mida täita .
Oma otsinguteed näed nii:
kessu kirjutas: | Kusagil kästi enda skriptidele teha eraldi kaust. Aga kuhu see kaust teha, et ma ei peaks seda skripti tõstma ühest kaustast teise? |
soovitati ju koju teha ~/bin
ja siis tuleks see koht otsinguteele lisada. Selleks lisa oma .bashrc-le rida:
Kood: | export PATH=$PATH:/home/kessu/bin |
|
|
|
|
_________________
|
|
|
|
kessu
Vana Pingviin
Vanus: 49
Liitunud: 16.07.2007
Postitused: 1106
Distributsioon: Ubuntu 16.04 LTS 64bit
|
|
Ma tegin seda juba enne. Tegin uuesti, aga ikka: "bash: ./skript: No such file or directory"
|
|
|
|
_________________ Olen umbkeelne mulk ja ei saa võõrastest keeltest piisavalt aru
|
|
|
|
|