![Wie kann ich einen Alias verwenden, wenn ich im selben Befehl mehr als eine Binärdatei aufrufen muss?](https://rvso.com/image/1365809/Wie%20kann%20ich%20einen%20Alias%20%E2%80%8B%E2%80%8Bverwenden%2C%20wenn%20ich%20im%20selben%20Befehl%20mehr%20als%20eine%20Bin%C3%A4rdatei%20aufrufen%20muss%3F.png)
Angenommen, ich habe zwei Binärdateien:binär1Undbinär2.
Jeder von ihnen hat seinen eigenen Optionssatz:Optionen1UndOptionen2.
Benutzer müssen einen Befehl aufrufen, der dieser Struktur folgt:
binary1 options1 binary2 options2
Ich möchte jedochOptionen2selbst und lasse sie Folgendes ausführen:
binary1 options1 alias
Wo
alias='binary2 options2'
Gibt es eine Möglichkeit, dies unter Bash/TCSH zum Laufen zu bringen? Ich arbeite unter SLES 11 SP2 über eine 64-Bit-Architektur.
Antwort1
Sie müssen binary1 und options1 so einstellen, wie sie gestartet werden sollen. Dann: Definieren Sie die Funktion „etwas“:
something () {
options2="...." #you define them as you want, either here or from another source
binary1="$1" ; shift
"$binary1" "$@"
binary2 $options2
}
(und lassen Sie es in den Bash-Anmeldedateien definieren)
Und lassen Sie sie ausführen:
something binary1 options1
Auf diese Weise können sie sich bei den Optionen1 so richtig austoben, wie zum Beispiel:
something touch file1 file2 "file3 with extra spaces" file4
Antwort2
mpirun führt nicht gerne einen Alias aus, wie Sie wahrscheinlich bereits herausgefunden haben. Am besten erstellen Sie einen Wrapper um Ihre ausführbare Datei. Platzieren Sie also Folgendes in einer Datei (machen Sie sie ausführbar):
#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*
Wenn Sie diese Datei „dplace“ nennen und sie im Benutzerpfad in einem Verzeichnis platzieren, das vor dem Verzeichnis durchsucht wird, in dem sich das echte dplace befindet, wird stattdessen das Wrapper-Skript transparent ausgeführt (denken Sie daran, beim Ausprobieren ein „Rehash“ durchzuführen).
Ich gehe davon aus, dass TOP_PROC in der Umgebung bereits definiert ist.