Tip: Max OS X Console etwas freundlicher (bash...)

Ich hab Probleme mit dem alias definieren. Ich hab in /etc/bashrc dies geschrieben:
# System-wide .bashrc file for interactive bash(1) shells.
PS1='\u@\w\$ '
alias ls='ls --color'
alias ll='ls -al --color'
export TERM=xterm-color
export CLICOLOR=true
export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx
# Make bash check it's window size after a process completes
shopt -s checkwinsize

Wenn ich dann den alias ll eingebe kommt dies:
ls: --color: No such file or directory
ls: -al: No such file or directory

Liegt das daran, dass ich vorher schon 'nen anderen alias für ls gegeben hab? Wenn ich "ls -l" eingebe schreibt er mir
ls: -l: No such file or directory

Woran liegt das?

Ausserdem, kann mir bitte einer sagen, wie ich mir 'ne Farbgebung selbst zusammenstelle??? Aus ExGxFxdxCxDxDxBxBxExEx werd ich einfach nicht schlau... ;)
 
probier mal die zwei alias zu vertauschen in der reihenfolge ;)
 
Original geschrieben von Scyx


Ausserdem, kann mir bitte einer sagen, wie ich mir 'ne Farbgebung selbst zusammenstelle??? Aus ExGxFxdxCxDxDxBxBxExEx werd ich einfach nicht schlau... ;)
 
das würd ich auch gern wissen ... gibts irgendwo eine seite die die codes erklärt? Hab schon gegoogelt :/
 
Ne, hab meinen Fehler gefunden, lag an der /etc/profile.
Dort hatte ich ebenfalls 'nen Alias definiert und der hat mir Murks gebaut.

Jetzt bleibt nur noch die Frage nach den Farben offen :)
 
hallo zusammen,

alias ll='ls -al --color'

der Nachteil an einem solchen alias ist IMHO, dass bei langen listings keine pipe in less or more da ist.

Wenn man piped, dann geht allerdings sowas nicht mehr.
ll /etc
Das geht in der tcsh relativ einfach zu lösen (mit !* soweit ich mich erinnere), in der bash geht das AFAIK über einen Umweg auch.
Allerdings nicht so einfach wie in der tcsh oder der zsh.
 
Original geschrieben von Scyx
...
Jetzt bleibt nur noch die Frage nach den Farben offen :)
 
Da gibts was:
Color-LS-0.256.1.pkg.sit
einfach mal googeln; macht farbige ls Augaben wie bei Linux ;)
 
Leute, wollt ihr mich denn nicht verstehen? ;)
Ich hab 'ne farbige "bash", aber ich wüsste gerne, was von diesem ExGxFxdxCxDxDxBxBxExEx denn für Ordner, ausführbare Dateien usw. steht und wie ich dem bestimmte Farben zuordnen kann. Sonst hab ich im Moment keine Probleme.

Zu dem alias, warum geht das denn nicht?
Wenn ich "ls /etc" benutze, kommt der "normale" ls Output, bei dem ll alias kommt dies: lrwxr-xr-x 1 root admin 11 15 Apr 18:55 /etc -> private/etc
Wenn ich "ls -al /etc" benutze, kommt aber das gleiche.
Ist die bash dann mit den Daten überfordert?
Was das Ganze mit piping zu tun hat versteh ich leider auch nicht, klärt mich bitte auf :)

Wissbegierieger Scyx *lol*
 
Original geschrieben von Scyx

....
Was das Ganze mit piping zu tun hat versteh ich leider auch nicht, klärt mich bitte auf :)

Wissbegierieger Scyx *lol*
 

nun ja;
wenn Du zum Beispiel ls -la /etc/ machst, wirst du feststellen, dass da einiges an Dir vorbeirauscht.
Du siehst da nach am Bildschirm das untere Ende des Inhaltes des /etc-Verzeichnisses.

wenn Du nun ls -la /etc/ | less machst, siehst Du soviel von /etc/ wie auf den Bildschirm passt.
Mit Leertaste, "F" oder "D" kannst du Bildschirm- oder halb-Bildschirm-weise nach unten, mit "B" oder "U" Bildschirm- oder halb-Bildschirm-weise nach oben blättern.

wenn Du nun einen alias anlegst:
ll='ls -la | less' funktioniert das zwar noch für das aktuelle Verzeichnis; nicht aber so:
ll /etc/, weil die Shell daraus macht: ls -la | less /etc

in der tcsh konnte man das so lösen:
alias ll "ls -la \!* | less"

aus ll /etc/
macht die shell dann ls -la /etc/ | less
Das meinte ich mit einfach.
In der bash kann man aber einen solchen alias nicht anlegen, da die bash keine aliase mit Parameterübergabe (\!*) unterstützt
 
Das ginge bei der bash doch auch, oder? Ich kenne mich mit Shell-Skripten nun nicht so toll aus, aber wenn ich einfach eine Variable beim alias mit übergebe und die beim eintippen halt das Verzeichnis oder eine Datei zugeteilt kriegt, müsste das doch auch gehen, oder?
Hab mal "alias lp $='ls -al | less '$ probiert, will er aber leider nicht.
vielleicht weiss ja einer auf die schnelle wie man sowas umsetzen kann. Soo schwer dürfte's aber nicht sein. ;)
 
Original geschrieben von Scyx
Das ginge bei der bash doch auch, oder? Ich kenne mich mit Shell-Skripten nun nicht so toll aus, aber wenn ich einfach eine Variable beim alias mit übergebe und die beim eintippen halt das Verzeichnis oder eine Datei zugeteilt kriegt, müsste das doch auch gehen, oder?
Hab mal "alias lp $='ls -al | less '$ probiert, will er aber leider nicht.
vielleicht weiss ja einer auf die schnelle wie man sowas umsetzen kann. Soo schwer dürfte's aber nicht sein. ;)
 

Ein shellskript würde natürlich gehen;
ist aber kein alias mehr und müsste dann so aussehen:

#!/bin/sh
ls -la $* | more

Aliasse mit Parameterübergabe gehen in der bash definitiv nicht;
dafür kann man Funktionen definieren, die Parameter übernehmen können.

man bash:
...
Aliases are created and listed with the alias command, and removed with
the unalias command.

There is no mechanism for using arguments in the replacement text.
If arguments are needed, a shell function should be used
...
 
Super Tipps, danke !

Grüße

Bene
 
Scyx schrieb:
Ausserdem, kann mir bitte einer sagen, wie ich mir 'ne Farbgebung selbst zusammenstelle??? Aus ExGxFxdxCxDxDxBxBxExEx werd ich einfach nicht schlau...

Code:
#
# LSCOLORS Definition
#
# a     black 
# b     red 
# c     green 
# d     brown 
# e     blue 
# f     magenta 
# g     cyan 
# h     light grey 
# A     bold black, usually shows up as dark grey 
# B     bold red 
# C     bold green 
# D     bold brown, usually shows up as yellow 
# E     bold blue 
# F     bold magenta 
# G     bold cyan 
# H     bold light grey; looks like bright white 
# x     default foreground or background 
#
#
# 1. directory
# 2. symbolic link
# 3. socket
# 4. pipe
# 5. executable
# 6. block special
# 7. character special
# 8. executable with setuid bit set
# 9. executable with setgid bit set
# 10. directory writable to others, with sticky bit
# 11. directory writable to others, without sticky bit

export CLICOLOR=1
export LSCOLORS=ExCxhxdxbxegedabaghbag

Gruss von IceHouse
 
Vielen Dank

VIELEN DANK!!!
Endlich die Farbcodes :)
 
also mal zum Thema bash unter Panther:

wer von MacOSX 10.2 auf Panther aktualisiert hat, sprich keine Neuinstallation gemacht hat, bei dem läuft noch die frühere Version von MacOSX die sogenannte TC-Shell, da alle Benutzereinstellungen übernommen wurden.
Das ist aber die nicht mehr empfohlene Shell-Version von Apple!

leicht zu erkennen die tcsh an dem benutzername%
bash hat benutzername$

lässt sich leicht unter Terminal-Einstellungen ändern
/bin/bash
bei der Gelegenheit gleich kontrollieren dass der Wert für Terminal-Typ ($TERM) angegeben ist und auf XTERM-COLOR steht.

desweiteren sollte Nicht-ASCII-Zeichen in Escape-Sequenze aktiv sein
und Zeichensatz Codierung unter Monitor sollte auf Unicode (UTF-8) stehen.

und wer bock hat, kann seine Bash noch auf die deutsche Tastatur konfigurieren.
dazu TextEdit starten mit Modus reiner Text
dann eintippen:

set meta-flag On
set Input-meta On
set convert-meta Off
set output-meta On
set show-all-if-ambiguous On

die Datei speichern unter inputrc.txt

dann muss die datei im terminal umbenannt werden
in .inputrc.txt mit mv .inputrc.txt

das MacOSX verweigert das, weil es meint es ist eine Systemdatei wegen dem angeführtem Punkt.
Speicherort ist direkt unter dem Benutzer, das ist wichtig!

ab sofort gehen auch alle Umlaute in der Bash wie *ä" usw...
viel Glück
 
ähm - sollte die Datei nicht .inputrc heissen ?
 
ja sorry tippfehler ;)
 
mikeIV schrieb:
Hab langer dafür gebraucht da diese verdammte Datei im Linux .bashrc heist und aber im darwin .bash_profile genannt wird.
ganz so einfach ist das nicht ;)
Wenn ich mich recht erinnere, wird ~/.bashrc bei nicht-login bashs ausgefuehrt (also wenn du zb bei OSX angemeldet bist und dann ein Terminal oeffnest) und ~/.bash_profile bei login shells (wenn du dich ueber die Konsole anmeldest). Alternativ zu bash_profile kannst du auch einfach nur ~/.profile verwenden (gilt dann auch fuer andere shells als bash (aber nicht alle ;) )).
Abgesehen davon, mag ich die zsh und die ksh lieber als bash :)

achja: Du kannst auch einfach ~/.bashrc und ~/.bash_profile auf ~/.profile linken, normalerweise moechte man fuer login- und nicht-login-shells ja dasselbe environment haben.
Code:
ln -s ~/.profile ~/.bash_profile
ln -s ~/.profile ~/.bashrc
(fuer andere shells, zb zsh)
ln -s ~/.profile ~/.zshrc

Gruss
Jonathan
 
Zuletzt bearbeitet:
Gruess Gott,

ich hab in meiner shell (zsh, aber das sollte keine Rolle spielen) an manchen stellen:

IceHouse schrieb:
Code:
#
# A     bold black, usually shows up as dark grey
Gruss von IceHouse

Das wird bei mir aber nicht dunkel grau wie gewuenscht, sondern einfach schwarz angezeigt. Kennt jem. das problem oder weis wie man es loesen kann?

xterm zeigt es richtig an, hat jedoch einen weissen Hintergrund.
Kann ich das nur ueber .Xressources aendern? (muesste mal raussuchen wie die nochmal aussehen muessten)

Gruessle
Nikodemus
 
Hallo,

was ist mit OS X Tiger, ich bekomme auf der Console keine Farben?

Gruß dwoody
 
alias ls='ls -lgAG'

müste gehen für deine farben ;)
 
Zurück
Oben Unten