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!
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |