ubuntuusers.de

.bashrc: alias mit Variable anlegen

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

peefonic

Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

Hi,

ich möchte gerne einen alias anlegen, der auch eine Variable akzeptiert. Damit ich also z.B. statt

tar xzfp MEIN-ARCHIV.tar.gz

folgendes eingeben kann:

untar MEIN-ARCHIV.tar.gz

Hat jemand eine Idee hierzu?

HAND

Drache

Anmeldungsdatum:
5. April 2007

Beiträge: 2377

Ist jetzt nicht die Antwort… aber vielleicht solltest du mal unp ausprobieren…

Greebo

Avatar von Greebo

Anmeldungsdatum:
21. November 2006

Beiträge: 3443

Wohnort: 97070 Würzburg

Ich würde sowas einfach mit ner Funktion machen

1
function untar { tar xzfp $1 }

peefonic

(Themenstarter)
Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

Unp kenne ich schon. Ist aber nicht ganz das was ich will, da es nicht so plattformübergreifend verfügbar ist, wie tar.

Das mit der Funktion klappt super. Nur fehlte da ein Semikolon, sonst kommt die Meldung: "unerwartetes Zeilenende". Muss also so in der .bashrc stehen:

1
function untar { tar xzfp $1; }

JRipper

Anmeldungsdatum:
5. März 2010

Beiträge: 2

Aloha, ich habe im moment ein ähnliches problem. Ich suche eine möglichkeit mir einen alias (sls) anzulegen der wie folgt genutzt werden soll:

"sls <var>"

ausgeführt werden soll "ls /dir1/dir2/dir3/<var>/dir4/dir5"

Über hilfe würde ich mich freuen.

Grüße JRipper

peefonic

(Themenstarter)
Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

JRipper schrieb:

Aloha, ich habe im moment ein ähnliches problem. Ich suche eine möglichkeit mir einen alias (sls) anzulegen der wie folgt genutzt werden soll:

"sls <var>"

ausgeführt werden soll "ls /dir1/dir2/dir3/<var>/dir4/dir5"

Über hilfe würde ich mich freuen.

Grüße JRipper

Das sollte doch mit der Funktion auch klappen. Du setzt einfach die Variable in die Mitte deiner vorgegebenen Zeichenketten.

JRipper

Anmeldungsdatum:
5. März 2010

Beiträge: 2

oh, hatte das irgendwie total überlesen. danke dir, klappt wunderbar ☺

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

peefonic schrieb:

ich möchte gerne einen alias anlegen, der auch eine Variable akzeptiert. Damit ich also z.B. statt

tar xzfp MEIN-ARCHIV.tar.gz

folgendes eingeben kann:

untar MEIN-ARCHIV.tar.gz

Hat jemand eine Idee hierzu?

Greebo schrieb:

Ich würde sowas einfach mit ner Funktion machen

1
function untar { tar xzfp $1 }

ich hab in meiner .bashrc folgendes und erschlag damit eigentlich so ziemlich alles, was es bisher zu entpacken gab 😉

# extract File
#----------------

function extract()
{
     if [ -f $1 ] ; then
         case $1 in
             *.tar.bz2)   tar xvjf $1     ;;
             *.tar.gz)    tar xvzf $1     ;;
             *.bz2)       bunzip2 $1      ;;
             *.rar)       unrar x $1      ;;
             *.gz)        gunzip $1       ;;
             *.tar)       tar xvf $1      ;;
             *.tbz2)      tar xvjf $1     ;;
             *.tgz)       tar xvzf $1     ;;
             *.zip)       unzip $1        ;;
             *.Z)         uncompress $1   ;;
             *.7z)        7z x $1         ;;
             *)           echo "'$1' cannot be extracted via >extract<" ;;
         esac
     else
         echo "'$1' is not a valid file"
     fi
}

mit extract datei.foo entpackt es dann (oder auch nicht, dann gibt es die Meldung)

peefonic

(Themenstarter)
Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

Antiqua schrieb:

ich hab in meiner .bashrc folgendes und erschlag damit eigentlich so ziemlich alles, was es bisher zu entpacken gab 😉

Dafür kannst du auch einfach unp installieren. Bei mir war wichtig, dass ich einen einfachen Befehl habe, der auf meinem Server läuft (wo ich mich nicht für unp mit jailkit herumschlagen will; bin ungern root).

HAND

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

peefonic schrieb:

Antiqua schrieb:

ich hab in meiner .bashrc folgendes und erschlag damit eigentlich so ziemlich alles, was es bisher zu entpacken gab 😉

Dafür kannst du auch einfach unp installieren. Bei mir war wichtig, dass ich einen einfachen Befehl habe, der auf meinem Server läuft (wo ich mich nicht für unp mit jailkit herumschlagen will; bin ungern root).

Warum soll ich mir ein zusätzliches perl-Script instalieren, wenn eine einfache bash-funktion auch tun? Und was hat das mit root zu tun? Die Funktion liegt in der .bashrc des Users.

Und den einfachen Befehl hast du genau damit. Die .bashrc wird ja beim einloggen gesourced. Du wechselst in das Verzeichnis und brauchst dann nur einfach

extract irgendwasgepacktes.xyz

ausführen und das Archiv wird entpackt. Vorteil, du musst dich nicht mit den verschiedenen Programmen und deren Optionen herumschlagen.

Noch ein Edith angefügt.

peefonic

(Themenstarter)
Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

Antiqua schrieb:

Und was hat das mit root zu tun? Die Funktion liegt in der .bashrc des Users.

Damit ich unp auf meinem Server einem User zugänglich mache, müsste ich root sein.

Antiqua schrieb:

Warum soll ich mir ein zusätzliches perl-Script instalieren

Ist unp nur ein Perl-Skript?

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

peefonic schrieb:

Antiqua schrieb:

Und was hat das mit root zu tun? Die Funktion liegt in der .bashrc des Users.

Damit ich unp auf meinem Server einem User zugänglich mache, müsste ich root sein.

ich verstehe es immer noch nicht. Die Funktion erweitert einfach nur den Befehlssatz für die bash. Ahnlich wie ein alias. Das hat nix mit unp zu tun, absolut garnix. extract prüft, ob das File ein File ist und ruft einfach nur das passende Packprogram zum entpacken des Files auf. Und das passende Packprogramm wird einfach durch die Endung des Files rausgefunden. Wenn die Endung nicht bekannt ist, kommt eine Meldung. Wenn das File kien File ist, kommt eine Meldung 😉

Antiqua schrieb:

Warum soll ich mir ein zusätzliches perl-Script instalieren

Ist unp nur ein Perl-Skript?

ja, unp ist "nur" ein perl-Script

antiqua@slacker:~/Downloads/unp-1.0.15$ head unp
#! /usr/bin/perl

# Maintained by Eduard Bloch <edi@ka.linux.de>
# http://www.eduard.bloch.com/edecosi/unp.en.html
#
# Originaly written by A. Karwath, 1997
# andre.karwath@informatik.tu-chemnitz.de
# http://www.aka-online.de
#
# "unp" runs the correct unpack program depending on the file extension

Edith:

und das im Paket enthaltene ucat, das von unp benötigt wird, ist auch "nur" ein perl-Script und einfach nur ein wrapper

antiqua@slacker:~/Downloads/unp-1.0.15$ head ucat
#! /usr/bin/perl

# Maintained by Eduard Bloch <edi@ka.linux.de>
#
# "ucat" is a wrapper for zcat, bzcat, zip, tar. It runs the correct unpack
# program depending on the file extension or the detected file contents.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or

freebirth_one

Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

Antiqua schrieb: [...]

ich hab in meiner .bashrc folgendes und erschlag damit eigentlich so ziemlich alles, was es bisher zu entpacken gab 😉

# extract File
#----------------

function extract()
{
     if [ -f $1 ] ; then
         case $1 in
             *.tar.bz2)   tar xvjf $1     ;;
             *.tar.gz)    tar xvzf $1     ;;
             *.bz2)       bunzip2 $1      ;;
             *.rar)       unrar x $1      ;;
             *.gz)        gunzip $1       ;;
             *.tar)       tar xvf $1      ;;
             *.tbz2)      tar xvjf $1     ;;
             *.tgz)       tar xvzf $1     ;;
             *.zip)       unzip $1        ;;
             *.Z)         uncompress $1   ;;
             *.7z)        7z x $1         ;;
             *)           echo "'$1' cannot be extracted via >extract<" ;;
         esac
     else
         echo "'$1' is not a valid file"
     fi
}

mit extract datei.foo entpackt es dann (oder auch nicht, dann gibt es die Meldung)

Ich würde das jetzt nicht gerade extract nennen, da es so eine Binary schon gibt. Zwar nicht vorinstalliert, aber eventuell vorhanden

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

freebirth one schrieb:

Ich würde das jetzt nicht gerade extract nennen, da es so eine Binary schon gibt. Zwar nicht vorinstalliert, aber eventuell vorhanden

guter Einwand.

Mir war bisher nicht bewusst, das es ein Binary "extract" gibt. Bei mir auf den Systemen sowieso nicht, da ich bevor so eine Funktion in die .bashrc wandert immer nachprüfe, ob der Name noch frei ist. Aber es is ja wurscht, wie man die Funktion tituliert. Man kann sie ja auch free_the_source nennen oder zackzack oder entquetsch oder so 😉

und komm mir jetz nicht mit entquetsch gibts schon 😀

peefonic

(Themenstarter)
Avatar von peefonic

Anmeldungsdatum:
20. Juli 2008

Beiträge: 692

Wohnort: Bochum

Antiqua schrieb:

da ich bevor so eine Funktion in die .bashrc wandert immer nachprüfe, ob der Name noch frei ist.

Wie geht das?

Antworten |