ok en hoe krijg ik dat? Vind alleen maar lange manualsquote:Op zondag 19 december 2010 17:40 schreef slacker_nl het volgende:
dat werkt niet met ftp nee, ssh toegang is wel een vereiste
Als je server ssh draait, dan vanuit windows met putty of vanuit linux gewoon vanuit de terminal:quote:Op zondag 19 december 2010 18:58 schreef Dale. het volgende:
[..]
ok en hoe krijg ik dat? Vind alleen maar lange manualswaar ik niet veel zin heb om die helemaal door te lezen.
Ah thanks dat is eenvoudig.quote:Op zondag 19 december 2010 19:18 schreef Joooo-pi het volgende:
[..]
Als je server ssh draait, dan vanuit windows met putty of vanuit linux gewoon vanuit de terminal:
$ ssh inlognaam@ip-van-server
Vraagje... hoe verplaats ikquote:Op zondag 19 december 2010 15:33 schreef slacker_nl het volgende:
[..]
Het is gewoon een perl regexp ja, die -n is dat ie laat zien wat ie zou doen, zonder het daadwerkelijk te doen.
mkdir "Home Alone" ; mv "Home Alone.mkv.part01.rar" "Home Alone/Home Alone.mkv.part01.rar"quote:Op maandag 27 december 2010 22:46 schreef Dale. het volgende:
[..]
Vraagje... hoe verplaats ik
"Home Alone.mkv.part01.rar"
naar
"Home Alone/Home Alone.mkv.part01.rar"
ps. wanneer ik met ssh ingelogd ben bestaat de commando rename trouwens niet eens... en mv kent de optie -n niet.
ah ja sorry maar bedoel natuurlijk alle parts iets van 50 ofzoquote:Op maandag 27 december 2010 23:10 schreef slacker_nl het volgende:
[..]
mkdir "Home Alone" ; mv "Home Alone.mkv.part01.rar" "Home Alone/Home Alone.mkv.part01.rar"
Kan te maken hebben met je PATH, maar zou ook kunnen zijn dat het niet installed is.
mv Home\ Alone.mkv.part*.rar Home\ Alone/quote:Op maandag 27 december 2010 23:22 schreef Dale. het volgende:
[..]
ah ja sorry maar bedoel natuurlijk alle parts iets van 50 ofzodus dat hij alle .rar's verplaatst, niet enkel 01.
Hmmmm ik heb nu via ssh admin@<ip> ssh geopend alleen wanneer ik de commando rename uitvoer zegt die dat hij die niet kent...quote:Op zondag 19 december 2010 17:40 schreef slacker_nl het volgende:
dat werkt niet met ftp nee, ssh toegang is wel een vereiste
Rename commando bestaat ook niet voor Linux. Normaliter doe je het met het 'mv' commando (move)quote:Op woensdag 12 januari 2011 13:44 schreef Dale. het volgende:
[..]
Hmmmm ik heb nu via ssh admin@<ip> ssh geopend alleen wanneer ik de commando rename uitvoer zegt die dat hij die niet kent...
pssstquote:Op woensdag 12 januari 2011 14:07 schreef Blinker het volgende:
[..]
Rename commando bestaat ook niet voor Linux. Normaliter doe je het met het 'mv' commando (move)
Voorbeeld:
blinker@ubuntu:~$ mv test test2
Zo hernoemt hij het bestand test naar test2.
Kijk hier voor meer linux commands: http://ss64.com/bash/
dan doe je echo "mv stuff daar" en dan zie je wat je zou doenquote:Op woensdag 12 januari 2011 21:22 schreef Dale. het volgende:
Ja maar rename doet het nog steeds niet op ssh en bij ssh kent mv de optie -v niet waardoor ik niet eerst de output te zien krijg?
Ik kwam diverse (denk aan Apple) TimeMachine-achtige oplossingen tegen die allemaal niet doen wat ik precies wil. Nu heb ik er zelf maar eentje gemaakt: een simpel scriptje dat ik handmatig opstart. Het doet dit:quote:Op donderdag 29 september 2011 22:19 schreef PiRANiA het volgende:
Hebben mensen nog interessante scriptjes?.
1 2 3 4 5 6 | #!/bin/bash backupdir=/andereharddisk/TimeMachineBackup/`date +%Y_%m_%d_%a_%H:%Mh` mkdir -p $backupdir; cd $backupdir/.. oudebackupdir=`ls -rt | tail -n 2 | head -n 1` cp -a /home/userdir/data $backupdir fdupes -rL $oudebackupdir/data $backupdir/data |
1 | VBoxManage startvm "vm" --type headless |
1 | ~/run_replication.sh |
1 | ./run_server.sh |
1 | sudo shutdown now |
Het commando van die Vbox is zoals ik het zelf in de commandline ingeef om hem op te starten dus ik weet dat dat werkt maar om een of andere reden als ik die regel in een cronjob of in rc.local zet dan gebeurd er niks.quote:Op dinsdag 8 mei 2012 11:28 schreef slacker_nl het volgende:
Dus die run_replication and run_server moeten 1x per uur binnen de vbox instance gedraaid worden en de shutdown moet 1x per dag gedaan worden?
Dat is allemaal via een cronjob te regelen: man crontab
Dat andere, je moet even kijken of vboxmanage ook een status optie heeft, dan kan je dat relatief makkelijk scripten.
Ik zou er gewoon een soort van init script van maken, met start, stop, restart, status functies, dan kan je het zo leuk maken als je zelf wilt.
1 | 0 0 * * * /usr/bin/aptitude update &>/dev/null |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ sudo crontab -l [snip] */5 * * * * /usr/local/bin/vnstat_all $ cat /usr/local/bin/vnstat_all #!/usr/bin/env bash PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin vnstat=/usr/bin/vnstat [ ! -x $vnstat ] && echo "Unable to run $vnstat" >&2 && exit 1 for int in $(ifconfig | grep "^[^ ]" | awk '{print $1}') ; do $vnstat --force -u -i $int done |
Sorry ik probeer zo snel mogelijk alles onder de knie te krijgen maar ik ben nogsteeds een groentje hiermeequote:Op dinsdag 8 mei 2012 11:35 schreef slacker_nl het volgende:
Je moet het volledige path gebruiken.
Bijvoorbeeld als je aptitude update vanuit de cron gaat draaien krijg je dit:
[ code verwijderd ]
Als je zelf een script schrijft moet je zorgen dat je PATH in je script gedefinieerd is.
[ code verwijderd ]
En uiteraard ook je script chmodden
1 | /usr/lib/virtualbox/VBoxManage startvm "vm" --type headless |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /usr/local/bin/./lamppstart.sh /usr/lib/virtualbox/VBoxManage startvm "vm" --type headless exit 0 |
Waarom doet ie het niet? Haal het uit rc.local en maak er een apart iets van, dan kan je dat aparte ding in rc3.d zetten en ook nog los gebruiken op de commandline, aka /etc/init.d/vboxheadless start|status etc.quote:Op dinsdag 8 mei 2012 11:41 schreef Black_Ninja het volgende:
[..]
Sorry ik probeer zo snel mogelijk alles onder de knie te krijgen maar ik ben nogsteeds een groentje hiermee
[ code verwijderd ]
Zou dat voldoende moeten zijn in rc.local?
[ code verwijderd ]
Want dit doet hij dus niet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $ cat /etc/bind/tools/bind.sh #!/usr/bin/env bash start() { /etc/init.d/bind9 start } stop() { pkill -f /usr/sbin/named } status() { pgrep -lf /usr/sbin/named } restart() { stop sleep 2 start } case $1 in start|stop|restart|status) $1;; *) echo "Usage: $(basename $0) <start|stop|restart|status>";; esac |
Ja dat begrijp ik dus ook niet waar hij het niet doetquote:Op dinsdag 8 mei 2012 11:44 schreef slacker_nl het volgende:
[..]
Waarom doet ie het niet? Haal het uit rc.local en maak er een apart iets van, dan kan je dat aparte ding in rc3.d zetten en ook nog los gebruiken op de commandline, aka /etc/init.d/vboxheadless start|status etc.
Dit is zeg maar iets wat ik voor bind heb getikt, zoiets moet jij ook gaan doen:
[ code verwijderd ]
Kan aan path en environment vars liggen.quote:Op dinsdag 8 mei 2012 17:46 schreef Black_Ninja het volgende:
ARG!!!
Ik heb dus nu een scriptje gemaakt, als ik het handmatig uitvoer werkt het wel, in de cronjob niet!
Verder heb ik het nu wel zo ver dat als de VM machine opstart hij wel het replication script uitvoert maar hij start nogsteeds de webserver niet op!
quote:Op dinsdag 8 mei 2012 18:58 schreef PiRANiA het volgende:
[..]
Kan aan path en environment vars liggen.
Post je script eensquote:Op dinsdag 8 mei 2012 19:25 schreef Black_Ninja het volgende:
[..]zou je dat een beetje kunnen toelichten?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command @reboot /home/media/startscripje.sh @hourly /home/media/startscripje.sh |
1 2 3 4 | #!/bin/bash clear /usr/lib/virtualbox/VBoxManage startvm "vm" --type headless |
Dat doe ik toch goed?quote:Op dinsdag 8 mei 2012 19:29 schreef NightH4wk het volgende:
http://www.wonkity.com/~wblock/docs/html/interrupted.html
Nummer 2 van de interrupted Unix FAQ.
quote:Op dinsdag 8 mei 2012 19:29 schreef Black_Ninja het volgende:
[ code verwijderd ]
[ code verwijderd ]
Even mijn codes toegevoegd
1 2 3 4 5 6 7 | $ /usr/lib/virtualbox/VBoxManage list vms "ZoneCD" {fc21749e-413d-4054-a498-2307ed8c785d} "Android" {bd77113d-9194-4d8e-a6ee-fb301a2a9ee5} $ sudo /usr/lib/virtualbox/VBoxManage list vms $ sudo -u mijnusername /usr/lib/virtualbox/VBoxManage list vms "ZoneCD" {fc21749e-413d-4054-a498-2307ed8c785d} "Android" {bd77113d-9194-4d8e-a6ee-fb301a2a9ee5} |
Je ziet mijn code, volgens mij roep ik het gewoon aan maar het vreemde is dat ik hem niet met sudo hoef te starten als ik het handmatig doequote:Op dinsdag 8 mei 2012 19:33 schreef PiRANiA het volgende:
[..]
[ code verwijderd ]
Het VBoxManage command hangt dus af van de user. Voer je de cron als root uit?
In cron root werkt het ook nietquote:Op dinsdag 8 mei 2012 19:33 schreef PiRANiA het volgende:
[..]
[ code verwijderd ]
Het VBoxManage command hangt dus af van de user. Voer je de cron als root uit?
1 | ~/run_replication.sh |
1 | ./run_server.sh |
log blijft leeg maar wordt wel aangemaaktquote:Op dinsdag 8 mei 2012 21:58 schreef slacker_nl het volgende:
Dan heb ik een pro-tip. set -x gebruiken en dan 2>> /tmp/logfile redirecten![]()
Dan krijg je debug info in een log, kek
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command */1 * * * * danny -u /home/musicbrainz/run_server.sh 10 * * * * /home/musicbrainz/run_replication.sh >> /tmp/replication.log 2>&1 @reboot /home/musicbrainz/run_replication.sh 46 * * * * /home/musicbrainz/run_server.sh >> /home/musicbrainz/startserver.log |
run_replication werkt dus, en die moest met ~/ worden gestartquote:Op dinsdag 8 mei 2012 23:16 schreef slacker_nl het volgende:
~/ werkt niet, dan moet je $HOME gebruiken. Volgens mij staat dat ook ergens in deze draadJep: you@shellscripts$ enter() { echo "Shell scripting ftw!, deel 1
Die werken dus ook niet!quote:Op dinsdag 8 mei 2012 23:23 schreef slacker_nl het volgende:
DUDE STOP FUCKING WITH RELATIVES PATHS!!!!! ABSOLUTE PATHS PLEASE!!!!!!
1 | /home/musicbrainz/run_server.sh |
Als ik meer info had zou ik het graag gevenquote:Op dinsdag 8 mei 2012 23:27 schreef slacker_nl het volgende:
Dan moet je chmodden en/of je #! aanpassen en/of je PATH variabele in je script goed zetten. Niet werken is niet zo een duidelijke omschrijving
run_replication.sh staat in dezelfde map als run_server.sh dat is dus allemaal zo vreemdquote:Op dinsdag 8 mei 2012 23:29 schreef NightH4wk het volgende:
Weet je zeker dat het probleem niet in in .sh files zit? Environment variabelen worden overschreven. Dus vervang run_server.sh door run_replication.sh en kijk of de cron hem iig wel aanroept.
Maar wordt het script dus aangeroepen? Indien dat het geval is dat zit het probleem in de .sh.quote:run_replication.sh staat in dezelfde map als run_server.sh dat is dus allemaal zo vreemd
net het even omgedraaid en ook dan wordt replication wel aangeroepen en server niet.quote:Op dinsdag 8 mei 2012 23:38 schreef NightH4wk het volgende:
[..]
Maar wordt het script dus aangeroepen? Indien dat het geval is dat zit het probleem in de .sh.
Als je een script autonoom wilt draaien, kan dat op 2 manierenquote:Op woensdag 9 mei 2012 09:50 schreef Black_Ninja het volgende:
Inmiddels weer een stapje verder. Als ik run_server.sh opstart zie ik het een en ander gebeuren (hij geeft weer welke communicatie er plaats vind). Wanneer ik dan het ssh venster sluit sluit ook direct het script.
Ik zal hem dus als een soort daemon process moeten draaien denk ik, kan iemand me op weg helpen hoe ik dat moet doen?
1 2 3 4 5 | cd /tmp/ [ -f nohup.out ] && rm nohup.out [ -f run_server.sh.log ] && rm run_server.sh.log nohup /home/musicbrainz/run_server.sh & mv nohup.out run_server.sh.log |
1 2 3 | at 12pm /home/bla/scriptje.sh ^d |
1 2 3 | at now /home/musicbrainz/run_server.sh ^d |
quote:Op woensdag 9 mei 2012 10:00 schreef gebrokenglas het volgende:
[..]
Als je een script autonoom wilt draaien, kan dat op 2 manieren
methode 1: nohup
Zoiets:
[ code verwijderd ]
Ouput komt dan in een /tmp/run_server.sh.log file terecht, maar je scherm kun je rustig sluiten.
methode 2: at
at is een mechanisme a la cron, om dingen op een later tijdstip uit te voeren.
Bijvoorbeeld het starten van een scriptje om 12 uur 's middags:
[ code verwijderd ]
Die ctrl-d is om aan at aan te geven dat je klaar bent met het opvoeren van de commando's.
In jouw geval
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function mapstylus() { scr0xaxis=$(xrandr --current | grep '*+' | uniq | awk '{print $1}' | cut -d 'x' -f1) scr0yaxis=$(xrandr --current | grep '*+' | uniq | awk '{print $1}' | cut -d 'x' -f2) scr1xaxis=$(xrandr --current | grep '* ' | uniq | awk '{print $1}' | cut -d 'x' -f1) scr1yaxis=$(xrandr --current | grep '* ' | uniq | awk '{print $1}' | cut -d 'x' -f2) $((element00=scr0xaxis/(scr0xaxis + scr1xaxis))) $((element11=scr0yaxis/scr1yaxis)) echo -e "scale = 5; $element00" | bc echo -e "scale = 5; $element11" | bc #xinput set-prop "Serial Wacom Tablet stylus" --type=float "Coordinate Transformation Matrix" $element00 0 0 0 $element11 0 0 0 1 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function my_function() { local output="$(xrandr --current)" local w=$(echo -e "$output" | grep shizzle1) local x=$(echo -e "$output" | grep shizzle2) local y=$(echo -e "$output" | grep shizzle3) local z =$(echo -e "$output" | grep shizzle4) local iets=$(echo "scale = 4; $x + $w | bc) local anders=$(echo "scale 4; $y + $z" | bc ) xinput set-prop "Serial Wacom Tablet stylus" --type=float "Coordinate Transformation Matrix" $iets 0 0 0 $anders 0 0 0 1 } |
Stel je vraagquote:Op woensdag 12 december 2012 18:28 schreef relativity het volgende:
Is er hier nog leven? Ik kan wel wat hulp gebruiken hehe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #!/bin/bash IFS=$'\n' #changing IFS to newline means spaces #are ignored during word-breaking DIR=${1:-/home/mainstream/Music/rename} TYPE='.mp3' shopt -s extglob #enable extended globbing for file in $DIR/*$TYPE ; do filepath=${file%/*} newname=${file##*/} mp3=${file##*/} #remove junk characters from filename newname=${newname//+([,\'])/} regex='_\(final\)|\ \(CDQ\)|\ \(NoShout\)|\ \(CDQ \& Final\)|\ \(Dirty\)|\ \(Mastered\)|\ \(full\)' newname=${newname//+($regex)/} #replace delimiter regex='\ \-\ |\_\-\_|\-\-' newname=${newname//+($regex)/-} regex='_featuring_\|_feat_\|_f._\|_ft_|_feat._' newname=${newname//+($regex)/_ft._} regex='\(feat._|\(feat_' newname=${newname//+($regex)/\(ft._} #replace all instances newname=${newname//+(_and_)/_&_} #change spaces (and tabs) to underscores in filename #extglob reduces multiple spaces to single underscore newname=${newname//+([[:space:]])/_} #lowercase filename newname=${newname,,} #remove all initial "digit+[-_]" combinations #again extglob handles variable numbers of digits newname=${newname#+([0-9])[_-]} #remove any final group "-zzzz" strings #similar to the last operation #assumes the file ends in ".mp3", however regex='zzzz|mst|alki|you|wus|htf|whoa' newname=${newname/-+($regex).mp3/.mp3} #remove any "-(nnn_bpm)" strings #remember, spaces have been changed to underscores already newname=${newname/-(+([0-9])_bpm)} if [[ $mp3 != $newname ]] then echo \.-------------------------------------------------------------\. echo "Old: \"$mp3\"" echo "New: \"$newname\"" mv $DIR/$mp3 $DIR/$newname echo \'-------------------------------------------------------------\' fi done exit 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/bash DIR=${1:-/home/mainstream/Music/rename} read -e -p "Enter Year: " -i "2012" YEAR echo "Select a Genre" select GENRE in "Classical" "Dubstep" "Hip-Hop" "Skip"; do case $GENRE in Classical ) echo $GENRE; break;; Dubstep ) echo $GENRE; break;; Hip-Hop ) echo $GENRE; break;; Rap ) echo $GENRE; break;; Skip ) exit;; esac done id3v2 -D $DIR/$DIR &> /dev/null id3v2 -g $GENRE -y $YEAR $DIR/$DIR &> /dev/nul |
Ik zou zelf met find werken, ik neem even aan dat je mp3's in subdirs hebt staan. Als ik dit script loslaat op m'n eigen music dir doet het namelijk helemaal niks.quote:Op donderdag 13 december 2012 18:55 schreef relativity het volgende:
Oke bedankt! :-)
Allereerst: Ik ben vrij basaal met het bash programmeren, maar vind het wel degelijk interessant!
Ik ben bezig geweest met een bash scriptje om mijn mp3 collectie wat op te schonen van vervelende tags e.d.
Echter moet ik mijn script meerdere malen uitvoeren om alles toe te passen op de bestanden.
Het script is als volgt:
[ code verwijderd ]
Tweede stap:
Nu ben ik ook bezig om er iets dergelijks in te bouwen zoals dit:
[ code verwijderd ]
En misschien automatisch ook de artist+song tags (ID3V1 & V2) toewijzen.
Hoe krijg ik dit in een script verwerkt?
Bij voorbaat dank
1 | for file in $(find $DIR -name \*$TYPE); do |
1 2 3 | for file in $(find $DIR -name \*$TYPE | head -10); do my_rename_func "$file" done |
1 2 3 4 5 6 7 8 9 | function my_rename_func() { # while bunch of code echo $new_name } for file in $(find $DIR -name \*$TYPE | head -10); do new_file=$(my_rename_func "$file") tag_the_stuff $new_file done |
Nee alles staat gewoon in een dir; lekker makkelijk.quote:Ik zou zelf met find werken, ik neem even aan dat je mp3's in subdirs hebt staan. Als ik dit script loslaat op m'n eigen music dir doet het namelijk helemaal niks.
1 2 3 | <?php Verder kan je met basename en dirname werken (dat $filepath gedeelte) ?> |
Oke, nog nooit gedaan, maar ga ik eens proberenquote:Een andere tip is om dat hele rename gebeuren in een functie te frotten,
Ga ik proberenquote:je kan dan met een subset dingen testen
[ code verwijderd ]
Hier raak je mij een beetje kwijt haha!quote:Je zou daarna de mp3tags kunnen aanpassen in dezelfde loop, de nieuwe filename return je dan in je my_rename_func
[ code verwijderd ]
Krijg hoofdpijn van die loops lol.quote:En de functie tag the stuff doe je al het spul wat je leuk om te mee te taggen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | #!/bin/bash set -vx IFS=$'\n' #changing IFS to newline means spaces #are ignored during word-breaking DIR=${1:-/home/mainstream/Music/rename} TYPE='.mp3' shopt -s extglob #enable extended globbing function my_rename_func() { #break input filename into path and name #so that names with paths included are correctly handled filepath=${file%/*} newname=${file##*/} mp3=${file##*/} #remove junk characters from filename newname=${newname//+([,\'])/} regex='_\(final\)|\ \(CDQ\)|\ \(NoShout\)|\ \(CDQ \& Final\)|\ \(Dirty\)|\ \(Mastered\)|\ \(full\)' newname=${newname//+($regex)/} #replace delimiter regex='\ \-\ |\_\-\_|\-\-' newname=${newname//+($regex)/-} regex='_featuring_\|_feat_\|_f._\|_ft_|_feat._' newname=${newname//+($regex)/_ft._} regex='\(feat._|\(feat_' newname=${newname//+($regex)/\(ft._} #replace all instances newname=${newname//+(_and_)/_&_} #change spaces (and tabs) to underscores in filename #extglob reduces multiple spaces to single underscore newname=${newname//+([[:space:]])/_} #lowercase filename newname=${newname,,} #remove all initial "digit+[-_]" combinations #again extglob handles variable numbers of digits newname=${newname#+([0-9])[_-]} #remove any final "-zzzz" strings #similar to the last operation #assumes the file ends in ".mp3", however regex='zzzz|mst|alki|you|wus|htf|whoa' newname=${newname/-+($regex).mp3/.mp3} #remove any "-(nnn_bpm)" strings #remember, spaces have been changed to underscores already newname=${newname/-(+([0-9])_bpm)} #you can continue adding as many changes as you want here. #call mv to change the filename. #I used -iv to make it interactive and verbose, but that's up to you. if [[ $mp3 != $newname ]] then echo \.-------------------------------------------------------------\. echo "Old: \"$mp3\"" echo "New: \"$newname\"" #mv $DIR/$mp3 $DIR/$newname echo \'-------------------------------------------------------------\' fi } tag_the_stuff() { read -e -p "Enter Year: " -i "2012" YEAR echo "Select a Genre" select GENRE in "Classical" "Dubstep" "Hip-Hop" "Skip"; do case $GENRE in Classical ) echo $GENRE; break;; Dubstep ) echo $GENRE; break;; Hip-Hop ) echo $GENRE; break;; Rap ) echo $GENRE; break;; Skip ) exit;; esac done id3v2 -D $DIR &> /dev/null id3v2 -g $GENRE -y $YEAR $DIR &> /dev/nul } for file in $(find $DIR -name \*$TYPE | head -10); do new_file=$(my_rename_func "$file") tag_the_stuff $new_file done exit 0 |
vi/vim/elvis o.i.d. gebruiken? 't Is even wennen, maar daarna wil je niets anders meer!quote:Op donderdag 13 december 2012 20:21 schreef relativity het volgende:
Het is een beetje lastig op Xubuntu...
In gedit zag je tenminste gekleerde tekst. Nou heb ik lap zwarte tekst.
Enige tips hiervoor? Want dit werkt niet echt fijn.
Dat is allemaal commandline hè? Hoewel ik daar een groot voorstander van ben, vind ik een GUI toch wat fijner werken met het schrijven van scriptsquote:Op donderdag 13 december 2012 20:49 schreef RemcoDelft het volgende:
[..]
vi/vim/elvis o.i.d. gebruiken? 't Is even wennen, maar daarna wil je niets anders meer!
Tjah het gaat met niet zozeer om snelheid. Ik doe dit enkel om er wat van te leren. GUI vind ik het makkelijkste, vandaar mijn keuze.quote:Op donderdag 13 december 2012 21:11 schreef RemcoDelft het volgende:
Wat moet je met een GUI als je een script typt? Vi is ontworpen om snel mee te werken, leer het, en je bent sneller dan steeds je muis te pakken.
Klein voorbeeld, regel kopieren: yyp, dat kost iets van 0.3 seconden.
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/sh host_up= while [ 1 ]; do new_host_up=`iw dev wlan0 station dump | grep -c **.**.**.**.**.**` if [ $new_hosts_up -ne $host_up ]; then echo $new_host_up host_up=$new_host_up else echo 'nothing to do' fi sleep 5 done |
1 2 3 4 5 6 7 8 | 1 [5 seconden later] sh: 1: unknown operand nothing to do [5 seconden later] sh: 1: unknown operand nothing to do enz. |
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |