vikana? Pitäsi syntyä soft-linkki mutta ei niin ei. Scripti on tämän näköinen
#!/bin/sh
ls $1*.avi>/tmp/avit.txt
while read newline; do
ln -s $newline /tmp/video.avi
done < /tmp/avit.txt
Scriptille annetaan parametriksi vaikka /mnt/videot/ ja löytyvissä videon nimissä on välilyönti kuten video 01.avi. Se pitäisi varmaan escapeta mutta mikä olisi toimiva tapa?
#!/bin/sh
ls $1*.avi>/tmp/avit.txt
while read newline; do
ln -s $newline /tmp/video.avi
done < /tmp/avit.txt
Scriptille annetaan parametriksi vaikka /mnt/videot/ ja löytyvissä videon nimissä on välilyönti kuten video 01.avi. Se pitäisi varmaan escapeta mutta mikä olisi toimiva tapa?
Vastaukset 4
Vanhimmat
eli muutat tuota ln-kutsua muotoon:
ln -f -s "$newline" /tmp/video.avi
eli muuttuja lainausmerkkeihin ja sitten -f -valitsimella pakotat jo olemassa olevan linkin ylkirjoituksen (jos niin haluat).
tuota en kokeillutkaan. Ymppäsin lainausmerkit tuohon $newline-muuttujaan eikä toiminut. Pitää kokeilla tuota kun pääsen kotiin.
kokeilinkin duunissa tavallisella tekstitiedostolla, jonka nimesin video 01.avi:ksi. Toimii vallan mainiosti. Kiittää ja kumartaa. Muistan myös iltarukouksessa;)
Tässä vaihtoehto ilman väliaikaistiedostoja
#!/bin/bash
# seuraava määrittää sanan katkeamismerkeiksi
# vain rivinvaihdon, muuten myös välilyönti ja
# tabulaattori lasketaan niiksi
IFS="
"
for avi in *.avi; do
ln -s -f "$avi" /tmp/video.avi
done
----
Miksi muuten haluat linkittää kaikki avi samalle nimelle? Oikeaksi linkiksihän jää vain listan viimeinen tiedosto..