/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Ksh prompt der forkorter stier?
Fra : jesper.madsen@gmail.~


Dato : 06-12-07 17:04

Hej Gruppe;
Jeg leder efter en prompt beskrivelse (til .profile) som kan forkorte
lange stier; fx.
/usr/local/lib/perl5/site_perl/5.6.1/Curses/UI/Dialog
kunne forkortes i prompten til
/usr/.../5.6.1/Curses/UI/Dialog
( eller lign. )

Lidt googling gav følgende[http://www.semicomplete.com/blog/geekery/
60.html]:

PS1='$(A=$?; [ $A -ne 0 ] && A="!!{$A}!! " || A=""; SPWD=$(/bin/pwd | /
usr/bin/sed -Ee "s,(/usr)?$HOME,~,; sz(/[^/]+/).*(/.{20,})$z
\1...\2z"); /bin/echo -n $HOST"("$SPWD") [!] ${A}${Z} " )'

[ -w "/" ] && Z="#" || Z=">"; export Z
PROMPT='$(A=$?; [ $A -ne 0 ] && A="!!{$A}!! " || A=""; SPWD=$(/bin/pwd
| \
/usr/bin/sed -Ee "s,(/usr)?$HOME,~,; sz(/[^/]+/).*(/.{20,})\$z
\1...\2z"); \
/bin/echo -n $HOST"("$SPWD") [!] ${A}${Z} " )'

case $TERM in
aterm|xterm|dtterm)
PROMPT=${PROMPT%)*}'; /bin/echo -n "^[]2;"$HOST"("$SPWD") [!] $
{A}^G" 1>&2)'
;;
esac
PS1=$PROMPT

Men det virker ikke; For det første brokker sed sig over -E flagget, i
syntaksen iøvrigt (sed: 1: "s,(/usr)?/home/myuser,~,; ...: \1 not
defined in the RE). Er der nogen som har lavet noget i stil med det
jeg søger, eller umiddelbart kan se hvad koden ovenfor fejler?

Mvh. Jesper.

 
 
Jesper Staun Hansen (07-12-2007)
Kommentar
Fra : Jesper Staun Hansen


Dato : 07-12-07 08:20

jesper.madsen@gmail.com wrote:
> Hej Gruppe;
> Jeg leder efter en prompt beskrivelse (til .profile) som kan forkorte
> lange stier; fx.
> /usr/local/lib/perl5/site_perl/5.6.1/Curses/UI/Dialog
> kunne forkortes i prompten til
> /usr/.../5.6.1/Curses/UI/Dialog
> ( eller lign. )
>
> Lidt googling gav følgende[http://www.semicomplete.com/blog/geekery/
> 60.html]:
>
> PS1='$(A=$?; [ $A -ne 0 ] && A="!!{$A}!! " || A=""; SPWD=$(/bin/pwd | /
> usr/bin/sed -Ee "s,(/usr)?$HOME,~,; sz(/[^/]+/).*(/.{20,})$z
> \1...\2z"); /bin/echo -n $HOST"("$SPWD") [!] ${A}${Z} " )'
>
> [ -w "/" ] && Z="#" || Z=">"; export Z
> PROMPT='$(A=$?; [ $A -ne 0 ] && A="!!{$A}!! " || A=""; SPWD=$(/bin/pwd
> | \
> /usr/bin/sed -Ee "s,(/usr)?$HOME,~,; sz(/[^/]+/).*(/.{20,})\$z
> \1...\2z"); \
> /bin/echo -n $HOST"("$SPWD") [!] ${A}${Z} " )'
>
> case $TERM in
> aterm|xterm|dtterm)
> PROMPT=${PROMPT%)*}'; /bin/echo -n "^[]2;"$HOST"("$SPWD") [!] $
> {A}^G" 1>&2)'
> ;;
> esac
> PS1=$PROMPT
>
> Men det virker ikke; For det første brokker sed sig over -E flagget, i
> syntaksen iøvrigt (sed: 1: "s,(/usr)?/home/myuser,~,; ...: \1 not
> defined in the RE). Er der nogen som har lavet noget i stil med det
> jeg søger, eller umiddelbart kan se hvad koden ovenfor fejler?
>
> Mvh. Jesper.


Kan sige, at der ikke er noget der virker her. Og ved ikke hvad option
-E er i sed. Ikke noget jeg har kunne finde fra senere versioner.

Regnar Bang Lyngsø (09-12-2007)
Kommentar
Fra : Regnar Bang Lyngsø


Dato : 09-12-07 16:38

Jesper Staun Hansen wrote:

>
> Kan sige, at der ikke er noget der virker her. Og ved ikke hvad option
> -E er i sed. Ikke noget jeg har kunne finde fra senere versioner.

-E findes på FreeBSD.

http://www.freebsd.org/cgi/man.cgi?query=sed

-E
Interpret regular expressions as extended (modern) regular
expressions rather than basic regular expressions (BRE's). The
re_format(7) manual page fully describes both formats.

Umiddelbart ser det ud til at svare til -r under Linux.

Knus
Regnar

Peter Makholm (07-12-2007)
Kommentar
Fra : Peter Makholm


Dato : 07-12-07 08:36

jesper.madsen@gmail.com writes:

> Hej Gruppe;
> Jeg leder efter en prompt beskrivelse (til .profile) som kan forkorte
> lange stier; fx.
> /usr/local/lib/perl5/site_perl/5.6.1/Curses/UI/Dialog
> kunne forkortes i prompten til
> /usr/.../5.6.1/Curses/UI/Dialog
> ( eller lign. )

function shortdir() {
perl -e '@a=split"/",pop;splice@a,2,@a-4,"..."if@a>6;print join"/",@a' $(pwd)
}

PS1='\u@\h:$(shortdir)\$ '

Ret selv 2, 4 og 6 til passende værdier.

//Makholm

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste