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. |
while True. Moet een startup scriptje worden op mijn router dat iedere 5 seconden kijkt of ik (mijn telefoon) thuis ben.quote:
1 2 3 4 5 6 7 8 9 10 | [root@server1 ~]# ksh # /bin/false;echo $? 1 # /bin/false;echo $? 1 # echo foo | grep $(echo foo | grep foo) foo # /bin/false;echo $? 0 # |
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/php-cli <?php $hostonline = 0; while (true) { $new_hostonline = exec("iw dev wlan0 station dump | grep -c **.**.**.**.**.**"); if ($hostonline != $new_hostonline) { echo $new_hostonline; $hostonline = $new_hostonline; } sleep(5); } |
Ik gebruik uitsluitend bash, geen sh, dus ken de verschillen in details niet.quote:Op dinsdag 8 januari 2013 21:04 schreef KomtTijd... het volgende:
Pfft het waren toch niet die aanhalingstekens. Ik snap er helemaal niets meer van. Hoe fucking moeilijk kan het zijn om gewoon 2 variables tegen elkaar te vergelijken? Enkele haakjes, dubbele haakjes, ronde haakjes, wel/geen dollartekens, wel/geen aanhalingstekens... heb alles zitten proberen maar niets levert het gewenste resultaat.
Dat commando kijkt of de device (het mac-adres) in de verbonden stations voorkomt. Werkt prima, geeft 0 terug indien niet, en 1 of hoger indien wel. Ping werkt niet want als je telefoon in sleep gaat kun je 'm niet meer pingen. (bovendien wil je niet iedere 5 seconden een ping naar je telefoon sturen denk ik).quote:Op dinsdag 8 januari 2013 21:32 schreef RemcoDelft het volgende:
[..]
Ik gebruik uitsluitend bash, geen sh, dus ken de verschillen in details niet.
En ik kan hier niet zien wat "iw dev wlan0 station dump | grep -c **.**.**.**.**.**" voor output zou moeten geven: kan je dat hier dumpen?
In bash zou ik gewoon dit doen:
while test 1; do ping -c 5 192.168.a.b > /dev/null && echo 'Host is up'; done
Met 192.168.a.b het lokale IP wat je natuurlijk vast zet.
SPOILER2Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Simpel toch.quote:Op dinsdag 8 januari 2013 21:23 schreef Cid het volgende:
Voor de brainiacs onder ons, iemand een verklaring voor het volgende verschijnsel?
[ code verwijderd ]
Vooralsnog alleen voor elkaar gekregen op virtuele machines met RHEL/CentOS 5.8...
sh is zo goed als dood, je hebt op Solaris nog sh, maar dat is grotendeels hele oude versies. Op Debian based bakken is het vaak dash.quote:Op dinsdag 8 januari 2013 21:32 schreef RemcoDelft het volgende:
[..]
Ik gebruik uitsluitend bash, geen sh, dus ken de verschillen in details niet.
En ik kan hier niet zien wat "iw dev wlan0 station dump | grep -c **.**.**.**.**.**" voor output zou moeten geven: kan je dat hier dumpen?
In bash zou ik gewoon dit doen:
while test 1; do ping -c 5 192.168.a.b > /dev/null && echo 'Host is up'; done
Met 192.168.a.b het lokale IP wat je natuurlijk vast zet.
dash?quote:Op dinsdag 8 januari 2013 22:05 schreef slacker_nl het volgende:
[..]
sh is zo goed als dood, je hebt op Solaris nog sh, maar dat is grotendeels hele oude versies. Op Debian based bakken is het vaak dash.
quote:
1 2 3 4 5 6 | Description: POSIX-compliant shell The Debian Almquist Shell (dash) is a POSIX-compliant shell derived from ash. Since it executes scripts faster than bash, and has fewer library dependencies (making it more robust against software or hardware failures), it is used as the default system shell on Debian systems. Homepage: http://gondor.apana.org.au/~herbert/dash/ |
Welke systemen draaien nog de native bourne shell? Dat zijn er vrij weinig volgens mij.quote:Op dinsdag 8 januari 2013 23:26 schreef NightH4wk het volgende:
sh is niet zo goed als dood, het is gewoon een implementatie van IEEE POSIX 1003.2. Gewoon lekker basic en dat is goed, om systeem scripts uit te voeren, etc.
De nested pipe in de command substitution veroorzaakt dat de returncodes niet meer kloppen. Bugreportje aangemaakt..quote:Op dinsdag 8 januari 2013 22:01 schreef slacker_nl het volgende:
[..]
Simpel toch.
echo foo | grep $(echo foo | grep foo)
dat is zoek foo in foo en dat laat ie zien en dan is de return code 0, bij false is de return code > 0, of 1 in dit geval.
En daarna een /bin/false.. apart, erg apart.
(zsh)$ echo foo | grep -q $(echo foo | grep foo)
22:02 pts/2 0 xxx
(zsh)$ /bin/false
22:02 pts/2 1 xxx
na pts/2 is de return code.
De BSDs en Android?quote:Op woensdag 9 januari 2013 07:07 schreef slacker_nl het volgende:
[..]
Welke systemen draaien nog de native bourne shell? Dat zijn er vrij weinig volgens mij.
1 | find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate |
1 | find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate | cut -f3-100 -d ' ' | tr '\n.' '\t.' | sed 's/\t\t/\n/g' | cut -f2-100 | tr '\t' '\n' | perl -i -pe 's/([ (){}-])/\\$1/g' | perl -i -pe 's/'\''/\\'\''/g' | xargs -pr rm -v |
Volgens mij doet je find command dat al automatisch als ik het goed heb.quote:Op zaterdag 23 februari 2013 17:34 schreef Dale. het volgende:
Ja heb net deze gevonden die alles checkt;
[ code verwijderd ]
En deze die alle dubbele delete
[ code verwijderd ]
Nu even kijken hoe ik deze recursief kan maken
fdupesquote:Op zaterdag 23 februari 2013 17:22 schreef Dale. het volgende:
Vraagje... heeft iemand hier een script die t volgende kan?
Ik heb een folder. Hierin zitten allemaal plaatjes. Nu heb ik een boel dubbele files omdat zij van naam verschillenen. Nu is het veel te veel werk om dit allemaal na te gaan. Daarom zoek een script dat eigenlijk dus checkt welke plaatjes dus allemaal dubbel zijn en dubbele plaatjes verwijderd.
heb er inderdaad een mooi script voor weggegooidquote:Op zaterdag 23 februari 2013 23:07 schreef RemcoDelft het volgende:
fdupes is inderdaad fantastisch spul! Voor ik dat vond had ik zelf zoiets in elkaar gescript... fdupes is veel beter.
1 2 3 4 5 6 7 8 9 10 11 | if [ $APPLICATIONSTATUS -ne 0 ]; then case $APPLICATION in sabnzbd) /usr/bin/sabnzbdplus -d ;; SickBeard*) /usr/bin/python /home/mainstream/SickBeard/SickBeard.py ;; AutoSub*) /usr/bin/python /home/mainstream/SickBeard/auto-sub/AutoSub.py ;; |
Ik doe het zo:quote:Op vrijdag 1 maart 2013 22:19 schreef relativity het volgende:
Even nog een vraag voor de script guru's:
Ik heb een script die de applicatie status gecontroleerd. Hij controleert op de applicaties al gestart zijn en als dat niet geval is, doet dit script dat voor mij.
Echter ontstaat het probleem dat hij de applicaties na elkaar controleert (PGREP) en gaat dus alleen verder als de exit status van de vorige applicatie nul is, ergo hij start de rest van de applicaties niet op. Dit heb ik deels weten te omzeilen om programma's als daemon te starten, maar de opeenvolgende programma's hebben die mogelijkheid niet (sickbeard & autosub).
[ code verwijderd ]
Heeft het zin om de output te verwijzen naar /dev/null 2>&1 om dit probleem te omzeilen of hoe kan ik dit het best aanpakken.
BVD
1 2 3 4 | pgrep fbpanel || fbpanel& pgrep RetroShare || RetroShare& pgrep redshift || redshift -l 52.130:4.659& pgrep opera || /usr/bin/opera& |
Ja dat weet ik dat dat zo kan, alleen weet ik niet hoe ik dit in mijn script moet verwerken, omdat het afzonderlijke commands zijn.quote:Op vrijdag 1 maart 2013 22:22 schreef µ het volgende:
[..]
Ik doe het zo:
[ code verwijderd ]
Voor elke regel geldt: als het programma niet draait wordt het opgestart.
Je kan het in een paste buffer stoppen, even vergeten hoe ookalweer.quote:Op donderdag 21 maart 2013 20:48 schreef Dale. het volgende:
Weet iemand of het volgende kan in VIM? En zo ja hoe?
Bij het copy/paste/delete in VISUAL mode kan ik iets kopieren en dan maar één keer pasten. Ik wil iets kopieren en dan ongelimiteerd pasten zonder dat ik dus die copy actie weer opnieuw moet doen. Hoe doe ik dat?
Super! Ga even proberen danquote:Op donderdag 21 maart 2013 21:06 schreef slacker_nl het volgende:
[..]
Je kan het in een paste buffer stoppen, even vergeten hoe ookalweer.
Select block, shift " [a-z] y (om te yanken).
dan
shift " [a-z] p (om te pasten).
en a-z zijn dan je buffers, dus je kan een buffer in a hebben, in b en die zijn verschillend.
En dat werkt ook tussen files in dezelfde vim sessie.
Moet lukken, ik heb het net getestquote:
quote:Op donderdag 21 maart 2013 21:12 schreef slacker_nl het volgende:
[..]
Moet lukken, ik heb het net getest
1 2 3 4 5 6 | running=$(mysql -u ******** -p******** -e SHOW SLAVE STATUS\G" | /bin/grep "Slave_SQL_Running: ") if [${running} == "Slave_SQL_Running: Yes"]; then /usr/bin/zenity --warning --text="Replication is running\n${running}" --display=:0.0 else /usr/bin/zenity --warning --text="Replication is NOT running\n${running}" --display=:0.0 fi |
Waarom zou je dat doen?quote:Op donderdag 11 juli 2013 14:14 schreef KomtTijd... het volgende:
[ code verwijderd ]
ik krijg constant de melding:
line 2 [: missing `]'
...en hij gaat naar het else statement, terwijl echo ${running} wel degelijk "Slave_SQL_Running: Yes" laat zien...
Weet iemand wat ik fout doe?
-edit-
fixed
== moest zijn =
en hij struikelde over whitespaces.
1 2 3 4 5 6 | echo bla | grep -q bla if [ $? -eq 0 ] ; then echo "bla found" else echo "bla was not found" fi |
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |
Dat begrijpen we, maar is wel erg jammer. Je kunt FOK! namelijk wel gratis LEZEN, maar we kunnen FOK! niet gratis MAKEN. De inkomsten van de advertenties zorgen ervoor dat we de kosten van de site kunnen dragen zodat je ook morgen FOK! nog kunt bezoeken.
Zou je willen overwegen om voor FOK! een uitzondering te maken in je adblocker (of andere middelen die onze ads blokkeren)? Je krijgt deze melding dan nooit meer te zien.
Ja, ik wil fok.nl whitelisten, laat me zien hoe
Ik neem liever een premium account zodat ik geen advertenties hoef te zien (je moet eerst inloggen)
Ja, breng me naar de shop