Linux textkonsoleprogrammierung (bash)

  • Themenstarter Themenstarter JTron
  • Beginndatum Beginndatum
J

JTron

Guest
Hallo,

ich habe kubuntu 7.04, arbeite ein bisschen mit der Textkonsole, will mal bash-Programmiereung machen, weil das mich sehr interessiert und habe nochetwas, nämlcih ein Problem, und zwar folgendes:

ich will das Kommando
Code:
find -type f -exec grep -q $1 {}  \; -print
abkürzen, ich schreibe es in eine textdatei, wie normal, und benennen sie beispielsweise mit grepall, eben für suche.

Aber wenn ich jetzt versuche, den befehl
Code:
chmod a+x grepall
grepall abc
(abc mal als beispiel natürlich) zu starten, geht es nicht

ich hoffe ihr könnt mir helfen

danke schon mal im vorraus
 
Welche Fehlermeldung bekommst du? "geht nicht" ist jedenfalls keine.
 
bash: (dann noch ein wort, weiß ich jetzt nicht, bin grad nicht an meinem computer, irgednwas mit fehler): grepall is no kommand

(so ungefähr^^, auf jedenfall nicht: "Permission denied")
 
Dann ist der Ordner, in dem sich das Skript befindet, vermutlich nicht in $PATH. Einfach in das Verzeichnis wechseln, wo es liegt und mit './grepall foobar' starten. Alternativ den komplett Pfad angeben, also '/mein/skript/ordner/grepall foobar'.
 
Es war aber im Verzeichnis, nämlich /home/julian, wo man normal ist..

aber ich versuchs mal, danke
 
Original von JTron
Es war aber im Verzeichnis, nämlich /home/julian, wo man normal ist..

aber ich versuchs mal, danke

/home/julian steht aber nicht im $PATH, würde ich mal sagen, wenn du diese Umgebungsvariable nicht explizit modifiziert hast. Siehe einfach 'echo $PATH'. Daher mußt du es mit './grepall foobar' oder /home/julian/grepall foobar' aufrufen.
 
Es wäre besser einen Ordner ~/bin zu verwenden. Man sollte keine vom Benutzer schreibbaren Dateien im path von root haben.
Wenn kubuntu dies noch nicht hat musst du natürlich ~/bin zu deinem path hinzufügen.

Der "alias" Befehl wäre hier auch besser geeignet als ein Shellscript.
 
ok es geht jetzt, ich hab einfach vor das
Code:
grepall abc
das verzeichnis gesetzt:
Code:
. grepall abc

so, danke, aber ich habe weitergemacht in meinem Buch und noch ein Problem:

ich will die Funktion "applysedfile *.tex" ausführen, dazu habe ich diese Datei geschrieben (Das Kommando ist dazu da, um in Textdateien wörter zu ersetzen)

Code:
#! /bin/bash
# use: applysedfile *.tex
# applies ./sedfile to given list of files
for i in $*
do
 echo "process $i"
 # make a backup of old file
 cp $i ${i%.*}.bak
 # build new file
 sed -f ./sedfile < ${i%.*}.bak > $i
done

und natürlich dann noch die datei sedfile.tex mit "s.daß.dass.g" (Beispiel)

wenn ich jetzt schließlich
Code:
. applysedfile *.tex
eingebe, kommt folgendes:
Code:
process *.tex
cp: Aufruf von stat für "*.tex" nicht möglich: no such file or directory
bash: *.bak: no such file or directory

Ich bin ratlos...
 
ah, jetzt hab ichs, das buch ist 5 jahre alt, der befehl müsste lauten:

Code:
chmod a+x applysedfile
. applysedfile *

es lag am buch, danke für alles
 
Zurück
Oben