wie muss ich folgenden alias korrekt eintragen?
Code: Alles auswählen
alias ors=`awk 'BEGIN { if ( ARGC==1 ) { print "Usage: $0 <file>";exit } } ORS = /^$/ ? "\n\n" : " "'`
Code: Alles auswählen
su: Syntax error: `newline or ;' is not expected.
Code: Alles auswählen
alias ors=`awk 'BEGIN { if ( ARGC==1 ) { print "Usage: $0 <file>";exit } } ORS = /^$/ ? "\n\n" : " "'`
Code: Alles auswählen
su: Syntax error: `newline or ;' is not expected.
Code: Alles auswählen
alias name='<command>'
Code: Alles auswählen
gms1 tmp # alias ors="awk 'BEGIN { if ( ARGC==1 ) { print \"Usage: $0 <file>\";exit } } ORS = /^$/ ? \"\\n\\n\" : \" \"'"
gms1 tmp # ors
Usage: /bin/bash <file>
Ja, dass war wohl ein übler Denkfehler von mir. Ich brauche die Backticks ja eigentlich nur, wenn ich mir z.B. in einem alias das Datum mit `date ...` ausgeben lassen will.gms hat geschrieben: Warum hast du die Backticks überhaupt in dem alias drinnen?
Ich benötige das Statement (nur) für config-Dateien. Da ich aus diesen Dateien schon mal öfter 2, 3 Zeilen benötige und bei einem grep nur die Zeile mit dem Suchkriterium finde und nicht die dazugehörigen Zeilen darüber oder darunter.gms hat geschrieben:der Sinn von dem Statement ist mir zwar nicht klar, aber so könnte es möglicherweise das tun, was du möchtest:Code: Alles auswählen
gms1 tmp # alias ors="awk 'BEGIN { if ( ARGC==1 ) { print "Usage: $0 <file>";exit } } ORS = /^$/ ? "\\n\\n" : " "'" gms1 tmp # ors Usage: /bin/bash <file>
dafür hätte ich einen Vorschlag, schreib dir doch EIN Shell-Script (ähnlich wie eine Library) mit den entsprechenden Funktionen:Duff hat geschrieben:Genau das wohlte ich eigentlich vermeiden, damit ich nicht so viele "kleine" Skripte habe. Deshalb der Versuch dieses aliases ;-(ub13 hat geschrieben: Schreib doch einfach ein Einzeiler Bash Skript.
Code: Alles auswählen
gms2 ~ # cat x-lib.sh
ors() {
awk 'BEGIN { if ( ARGC==1 ) { print "Usage: $0 <file>";exit } } ORS = /^$/ ? "\n\n" : " "' "$@"
}
gms2 ~ # source x-lib.sh
gms2 ~ # ors
Usage: $0 <file>
Ok, nochmals zum Verständnis: Ich kann in dem Shell-Skripts x-lib.sh verschiedene Funktionienen einbauen, wie u.a. die Funktion ors(). Wenn ich dann anschließend ein source x-lib.sh mache, kann ich die einzelnen Funktionen aus dem Shell-Skript direkt über den Funktionsnamen aufrufen.gms hat geschrieben:dafür hätte ich einen Vorschlag, schreib dir doch EIN Shell-Script (ähnlich wie eine Library) mit den entsprechenden Funktionen:Duff hat geschrieben:Genau das wohlte ich eigentlich vermeiden, damit ich nicht so viele "kleine" Skripte habe. Deshalb der Versuch dieses aliases ;-(ub13 hat geschrieben: Schreib doch einfach ein Einzeiler Bash Skript.Dieses Shell-Script kannst du dann in deinem Profile "sourcen". Komplexe Funktionen sind auch normalerweise leserlicher als komplexe Aiases. Weiters haben Funktionen den Vorteil, daß sie wiederverwendbar sind, also in anderen Funktionen verwendet werden können.Code: Alles auswählen
gms2 ~ # cat x-lib.sh ors() { awk 'BEGIN { if ( ARGC==1 ) { print "Usage: $0 <file>";exit } } ORS = /^$/ ? "\n\n" : " "' "$@" } gms2 ~ # source x-lib.sh gms2 ~ # ors Usage: $0 <file>
Gruß
gms
Damit doch das ganze auch beim Neuanmelden funktioniert, muss ich in meine .bashrc noch den Eintrag source x-lib.sh eintragen, oder?source filename [arguments]
Read and execute commands from filename in the current shell
environment and return the exit status of the last command exe-
cuted from filename. If filename does not contain a slash, file
names in PATH are used to find the directory containing file-
name. The file searched for in PATH need not be executable.
When bash is not in posix mode, the current directory is
searched if no file is found in PATH. If the sourcepath option
to the shopt builtin command is turned off, the PATH is not
searched. If any arguments are supplied, they become the posi-
tional parameters when filename is executed. Otherwise the
positional parameters are unchanged. The return status is the
status of the last command exited within the script (0 if no
commands are executed), and false if filename is not found or
cannot be read.
so ist es "portabler" und funktioniert auch unter ksh:Duff hat geschrieben: Das nächste Problem ist, dass die ksh den source-Befehl nicht kennt.
Code: Alles auswählen
. /pfad/zu/x-lib.sh
Ok, danke.gms hat geschrieben:so ist es "portabler" und funktioniert auch unter ksh:Duff hat geschrieben: Das nächste Problem ist, dass die ksh den source-Befehl nicht kennt.Vorsicht: nach dem Punkt muß ein Abstand sein!Code: Alles auswählen
. /pfad/zu/x-lib.sh
Gruß
gms
Code: Alles auswählen
. /pfad/zu/x-lib.sh