• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

bestimme commands "aliasen" ?

hdi

Newbie
hallo,

ich würde mir gerne ein paar commands selbst erstellen, weil ich öfters auf ordner zugreifen muss die verschachtelt sind oder leerzeichen enthalten etc.

also dass ich statt "cd /home/usr/xy/ordner1/unterordner/katze"
z.B. nur noch "cat" eingeben muss, und die konsole wechselt zu dem ordner.

hatte es jetzt so probiert:

Code:
echo "alias cat='cd /home/usr/xy/ordner1/unterordner/katze'">>~/.bashrc

allerdings wenn ich dann 'cat' eintippe, kommt die meldung:

Code:
bash: cat: command not found

ich tippe mal darauf dass die zieldatei bashrc, oder was auch immer das ist, das falsche dafür ist (ich hab keine ahnung von linux, habe aber irgendwo soetwas mit diesem bash gelesen und habs halt so versucht...)

könnt ihr mir bitte weiterhelfen? wie kann ich soetwas realisieren, und kann man das überhaupt langfristig speichern, also ohne dass ich das nach jedem neustart wieder deklarieren muss.

danke
 
Die ~/.bashrc ist schon der passende Ort dafür.
Du musst dich nach dem Eintragen des Aliases aber auch neu anmelden oder die ~/.bashrc neu einlesen (sourcen).
Code:
source ~/.bashrc
oder
Code:
. ~/.bashrc

Den Eintrag kannst du auch mit einem Editor (deines Vertrauens) vornehmen/kontrollieren.
Code:
alias cd_cat="cd /pfad";

Der Alias cat ist allerdings eine ganz schlechte Idee, da cat auch ein Befehl ist (/bin/cat), der dann für deinen User nicht mehr funktioniert.

Btw: Lesenswert: Komfortfunktionen der Bash
 
OP
H

hdi

Newbie
dank dir :)

kann man soetwas auch mit variblen machen?

z.B. kann ich den aufruf

Code:
gcc test.c -o test

durch den befehl

Code:
kompiliere test.c

ersetzen?

das problem ist ja hier eben, dass er aus test.c eine kompilierte datei namens test machen soll. also müsste ich beim aliasen irgendwie eine variable reinschreiben, die er dann erkennt.

also vllt sowas in der art:

Code:
echo "alias kompiliere [b]%variable[/b] ='gcc [b]%variable[/b] -o [b]%variableOHNE-ENDUNG[/b] '">>~/.bashrc

das problem ist: aus "test.c" soll "test" werden, das heisst bei 'variableOHNE-ENDUNG' müsste mir die shell das ".txt" rauslöschen...

geht solches variablen-äbhängiges aliasen? und wenn ja -> WIIIEEE? ^^
DANKE.
 
Mach daraus doch ein einzeiliges Script, ausführbar und in das /bin- Verzeichnis geschoben. Da wird es dann gefunden wie ein normaler Befehl.
Also in deinem Verzeichnis-Beispiel den Befehl komplett reinschreiben mit dem üblichen drumrum, das script "katze" nennen und schon wird ins Verzeichnis Katze gewechselt.

Und zum Kompilieren: ich würde als Parameter nur "test" angeben. das ".c" kann doch einfach ergänzt werden, denn das ist ja normal die Endung.
 
OP
H

hdi

Newbie
also wo soll ich denn diesen code eingeben:

Code:
kompiliere() {
  PROG="$1";
  gcc ${PROG} -o $(basename ${PROG} .c)
};

als c programm geht das ja nicht oder weil es shell befehle sind die c nicht kennt.
also wie ist die dateiendung damit es funktioniert und wo muss ich die datei abspeichern damit "kompiliere" ein standart-befehl meiner konsole wird?

danke
 
Und statt $(basename ...) kann man auch einfacher ${1%.c} schreiben. (Schema: ${variablename operator string}, hier Name 1, Operator % und abzuschneidender (%) String .c). Das spart den Extraaufruf von /bin/basename.
 
hdi schrieb:
...
Code:
gcc test.c -o test
...
Code:
kompiliere test.c
...

Es gibt das Programm "make". Make kennt "build in rules".

Code:
make test
sollte, wenn ein test.c existiert und in dem aktuellen Verzeichnis im aktuellen
Makefile keine andere Regel steht ein "gcc -o test test.c" ausführen.

alias "kompiliere=make"

sollte das Ganze dann mit "kompiliere test" funktionieren lassen.

Haveaniceday

Edit: Und make ist so intelligent, dass es test nur neu erzeugt, wenn
test älter als test.c ist.
 
Oben