abonnement Unibet Coolblue Bitvavo
pi_120283387
quote:
0s.gif 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.
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.
Aim at perfection in everything, though in most things it is unattainable. However, they who aim at it, and persevere, will come much nearer to it than those whose laziness and despondency make them give it up as unattainable.
pi_121298540
ok ik ben een beetje nieuw met shell scripting, en ik krijg een foutmelding die ik niet helemaal begrijp:
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
scriptje geeft de volgende output:
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.

de 1e loop gaat dus goed, daarna niet meer.
Verslikt'ie zich in het feit dat ik new_host_up iedere keer probeer te overschrijven ofzo?

-edit- doel van het scriptje is natuurlijk dat'ie iedere 5 seconden checkt of mijn smartphone aanwezig is (ergo of ik thuis ben).
pi_121299671
Hmm, zet eens " om de vars in de if. Dus "$new_hosts_up" -ne "$host_up".
pi_121301354
while true? of while sleep 5?
జ్ఞ‌ా
pi_121303875
quote:
1s.gif Op dinsdag 8 januari 2013 08:49 schreef µ het volgende:
while true? of while sleep 5?
while True. Moet een startup scriptje worden op mijn router dat iedere 5 seconden kijkt of ik (mijn telefoon) thuis ben.
zal zodadelijk die aanhalingstekens proberen als ik weer een device met toetsenbord in mijn handen heb.
pi_121303960
True inderdaad (post kwam van mobiel). Kijk ook even of je host_up= wil definieren als host_up=0. Wellicht helpt dat. :s).
జ్ఞ‌ా
pi_121311423
Het waren de aanhalingstekens van NightH4wk :)
pi_121328111
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.
pi_121329146
Voor de brainiacs onder ons, iemand een verklaring voor het volgende verschijnsel?

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

Vooralsnog alleen voor elkaar gekregen op virtuele machines met RHEL/CentOS 5.8...
PSN: Cidolfas - FFXIV: Cidolfas Windu
pi_121329302
php op de router geinstalleerd en het is in 5 minuten gepiept :')
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);
}
  dinsdag 8 januari 2013 @ 21:32:50 #161
29444 RemcoDelft
4 8 15 16 23 42
pi_121329708
quote:
18s.gif 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.
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.
censuur :O
pi_121330837
quote:
0s.gif 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.
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).

Ik wist niet dat er nog verschil zit tussen sh en bash, dus ook maar even Bash geinstalleerd en weer een paar verschillende combinaties geprobeerd, maar het maakt geen verschil. Ik hou het wel mooi op PHP.
SPOILER
Om 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.


[ Bericht 24% gewijzigd door KomtTijd... op 08-01-2013 21:59:08 ]
  dinsdag 8 januari 2013 @ 22:01:49 #163
187069 slacker_nl
Sicko pur sang
pi_121331347
quote:
0s.gif 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...
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.
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 8 januari 2013 @ 22:05:04 #164
187069 slacker_nl
Sicko pur sang
pi_121331535
quote:
0s.gif 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.
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.
In theory there is no difference between theory and practice. In practice there is.
pi_121334785
quote:
0s.gif 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.
dash?
జ్ఞ‌ా
pi_121335561
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.
  woensdag 9 januari 2013 @ 06:41:42 #168
187069 slacker_nl
Sicko pur sang
pi_121341005
quote:
14s.gif Op dinsdag 8 januari 2013 23:08 schreef µ het volgende:

[..]

dash?
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/
In theory there is no difference between theory and practice. In practice there is.
  woensdag 9 januari 2013 @ 07:07:33 #169
187069 slacker_nl
Sicko pur sang
pi_121341092
quote:
0s.gif 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.
Welke systemen draaien nog de native bourne shell? Dat zijn er vrij weinig volgens mij.
In theory there is no difference between theory and practice. In practice there is.
pi_121342121
quote:
0s.gif 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 nested pipe in de command substitution veroorzaakt dat de returncodes niet meer kloppen. Bugreportje aangemaakt..
PSN: Cidolfas - FFXIV: Cidolfas Windu
pi_121351229
quote:
0s.gif 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.
De BSDs en Android?
pi_123245567
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.
pi_123245786
Maak een hash van elke picca en delete de dubbelen? Zijn scripts voor te vinden.
pi_123245946
Ja heb net deze gevonden die alles checkt;

1find -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

En deze die alle dubbele delete
1find -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

Nu even kijken hoe ik deze recursief kan maken :P
pi_123246127
quote:
7s.gif 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 :P
Volgens mij doet je find command dat al automatisch als ik het goed heb.
Aim at perfection in everything, though in most things it is unattainable. However, they who aim at it, and persevere, will come much nearer to it than those whose laziness and despondency make them give it up as unattainable.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')