[linux-l] Webanwendungen per Kommandozeile ansteuern
olafBuddenhagen at gmx.net
olafBuddenhagen at gmx.net
So Dez 4 20:36:41 CET 2005
Hallo,
> > Wieso so umständlich? GET-Anfragen zu generieren ist trivial. Ein
> >
> > w3m google.com/serach?q=foo
> >
> > oder
> >
> > w3m dict.leo.org?search=bar
> >
> > tut's wunderbar, wenn man nicht gerade nach Sonderzeichen suchen
> > will.
>
> Ähhm ... bei URLs gehören sogar Leerzeichen zu den Sonderzeichen.
Wieso wusste ich nur dass diese Einwand kommt?...
Das ist aus zwei Gründen irrelevant: Erstens ist es nicht wirklich
schwer statt der Leerzeichen '+' einzugeben, wenn man den String per
Hand angibt. Und zweitens braucht man das garnicht -- die Browser machen
die Ersetzung selbst. Mit dem '+' spart man sich nur in vielen Fällen
das an sonsten nötige Shell-Quoting.
Die Einzigen Zeichen, die wirklich etwas umständlicher sind, sind die,
die die Bedeutung der URL verändern. Das wären im Fall des
Query-Parameters '&', '#', '%' und '+'. Mehr fallen mir nicht ein.
> httptool http://www.google.de/search \
> --q='site:de.wikipedia.org "Das ist das Haus vom Nikolaus"'
>
> Willst du dafür die entsprechende URL zusammenfrickeln?
w3m google.com/search?q='site:de.wikipedia.org "Das ist das Haus vom Nikolaus"'
oder auch
w3m 'google.com/search?q=site:de.wikipedia.org "Das ist das Haus vom Nikolaus"'
Wo ist das Problem?
> Viel Spaß. Sonderzeichen sind unter anderem: ':', ' ' und '"'
Keines dieser Zeichen muss man manuell escapen.
Übrigens könnte man auch sowas wie
w3m google.com/search?q=`urlesc foobar`
machen. Wobei urlesc ein ziemlich simples Progrämmchen wäre, dass es
IIRC irgendwo auch schon gibt.
Ich finde sowas jedenfalls wesentlich einleuchtender, als die gesammte
Abfrage durch irgendein obfuscation-Tool zu jagen, wie Du es
vorschlägst.
> Außerdem finde ich es gar nicht gut, wie das in Shell-Scripten und
> auch PHP-Scripten allgemein läuft: Statt z.B. in PHP ne Funktion zu
> haben, die mehrere Argumente entgegen nimmt, einen für das Programm
> und die anderen für die Parameter (wie die exec*()-Funktionen in C),
> ruft man das Zeug im Stile einer Kommandozeile auf, und muss alle
> kritischen Leerzeichen etc. erstmal durch Escaping-Funktionen jagen.
In PHP gibt es beide Varianten (siehe pcntl_exec()), ebenso wie es in C
beide Varianten gibt (siehe system()).
> Das ist viel umständlicher und außerdem unsicherer, weil man schnell
> mal was doppelt escaped oder das Escaping vergisst, oder nicht mehr
> genau weiß, welches Unterprogramm was schon escaped hat und was nicht.
[...]
Ging es hier um Benutzerschnittstellen, oder um Programmierstil?...
Wenn Du nach Codequalität gegen würdest, dürftest Du bestimmt 90 % aller
freien Software nicht verwenden. (Um Missverständnisse zu vermeiden: Bei
proprietärer Software düfte das Verhältnis noch viel schlechter sein.)
-Olaf-
Mehr Informationen über die Mailingliste linux-l