/ 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
KSH93 filename-completion og history - hvo~
Fra : Klaus Alexander Seis~


Dato : 19-03-01 09:35

Hej rødder.

Jeg har installeret Korn Shell på min Debian-box ved at konvertere
ksh93.tgz-pakken fra Slackware 7.1 til en .deb-pakke ved hjælp af
alien. Ingen problemer.

Men er der nogen her der kan fortælle mig hvordan jeg aktiverer filename-
completion og history i ksh? Jeg har læst man-siden igennem flere gange,
men synes ikke at det er åbenlyst hvordan man skal bære sig ad.

#v+
$ ksh --version
version sh (AT&T Labs Research) 1999-09-28
#v-

Den ser noget gammel ud, hva'?


// Klaus

--
><>°

 
 
Lars Kongshøj (19-03-2001)
Kommentar
Fra : Lars Kongshøj


Dato : 19-03-01 10:37

Klaus Alexander Seistrup wrote:
> Men er der nogen her der kan fortælle mig hvordan jeg aktiverer filename-
> completion og history i ksh? Jeg har læst man-siden igennem flere gange,
> men synes ikke at det er åbenlyst hvordan man skal bære sig ad.
> $ ksh --version
> version sh (AT&T Labs Research) 1999-09-28

Det kan du så vidt jeg husker ikke. Derimod kan jeg anbefale dig at
bruge zsh, den kan konfigureres til vi-kommandolinieredigering, og div
andre ting, som gør den til en næsten perfekt ksh-klon. Hvis det har
interesse kan jeg sende en konfigurationsfil.

--
Lars Kongshøj

Klaus Alexander Seis~ (19-03-2001)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-03-01 11:46

Lars Kongshøj skrev:

>> Men er der nogen her der kan fortælle mig hvordan jeg aktiverer
>> filename-completion og history i ksh?
>
> Det kan du så vidt jeg husker ikke.

Jo, det skulle man kunne. Manualen nævner flere gange "completion", men
ikke udtrykkeligt hvordan man sætter det op eller aktiverer det, ligesom
ksh også laver en ~/.sh_history med de seneste $HISTSIZE kommandolinier
(men heller ikke her nævner manualen hvorledes jeg får dem at se).

> Derimod kan jeg anbefale dig at bruge zsh,

Nej tak, hvis jeg ikke kan få ksh til at bruge filename-completion og
history, vil jeg hellere fortsætte med bash.


// Klaus

--
><>°

Klaus Alexander Seis~ (19-03-2001)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-03-01 12:10

Efter en del experimenteren med at sætte en trap på KEYBD og lave
nogle mere eller mindre sindrige konstruktioner med ${.sh.edchar},
viste løsningen sig at være yderst simpel:

   # ~/.profile
   set -o emacs



// Klaus

--
><>°   Move 'sig'. For great justice!

Lars Kongshøj (19-03-2001)
Kommentar
Fra : Lars Kongshøj


Dato : 19-03-01 12:16

Klaus Alexander Seistrup wrote:
>
> Lars Kongshøj skrev:
>
> >> Men er der nogen her der kan fortælle mig hvordan jeg aktiverer
> >> filename-completion og history i ksh?
> >
> > Det kan du så vidt jeg husker ikke.
>
> Jo, det skulle man kunne.

Ja, OK, du kan bruge completion, men det er ikke tab-complete som i
andre shells. ESC * giver dig complete, men det er jo lidt mere
omstændigt end tab-complete. Det kræver måske at du har vi-redigering
slået til.

> Manualen nævner flere gange "completion", men
> ikke udtrykkeligt hvordan man sætter det op eller aktiverer det, ligesom
> ksh også laver en ~/.sh_history med de seneste $HISTSIZE kommandolinier
> (men heller ikke her nævner manualen hvorledes jeg får dem at se).

Jeg så ikke det med history først. Hvad mener du med, hvordan du får dem
at se? Redigering eller hvad?

> > Derimod kan jeg anbefale dig at bruge zsh,
>
> Nej tak, hvis jeg ikke kan få ksh til at bruge filename-completion og
> history, vil jeg hellere fortsætte med bash.

Jeg synes personligt at zsh kombinerer det bedste fra bash og ksh.

--
Lars Kongshøj

Klaus Alexander Seis~ (19-03-2001)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-03-01 13:28

Lars Kongshøj skrev:

> Ja, OK, du kan bruge completion, men det er ikke tab-complete som
> i andre shells.

Nej, med "set -o emacs" er det TAB-completion, ganske som i bash.

>> ksh også laver en ~/.sh_history med de seneste $HISTSIZE kommando-
>> linier (men heller ikke her nævner manualen hvorledes jeg får dem
>> at se).
>
> Jeg så ikke det med history først. Hvad mener du med, hvordan du får
> dem at se?

I bash kan jeg bladre i kommandoliniehistorien v.hj.af pil-op og -ned. Det
kunne jeg ikke i ksh - der kom bare en dum "^[[A" med pil-op. Men nu hvor
jeg har sat "set -o emacs" virker det som jeg forventede.


// Klaus

--
><>°

Claus Alboege (19-03-2001)
Kommentar
Fra : Claus Alboege


Dato : 19-03-01 14:19

>>>>> "Klaus" == Klaus Alexander Seistrup <klaus@seistrup.dk> writes:

Klaus> Lars Kongshøj skrev:
>> Derimod kan jeg anbefale dig at bruge zsh,

Klaus> Nej tak, hvis jeg ikke kan få ksh til at bruge
Klaus> filename-completion og history, vil jeg hellere fortsætte med
Klaus> bash.

Hmm, jeg ville nu ogsaa anbefale zsh.
Den har en raekke fancy'e features.
Her er lige naevnt et par. (det kan man sikkert ogsaa i andre shells?)

Genial completion:
completion paa options til mange commandoer:
* apt-get in<tab> -> apt-get install ab<tab> ->
apt-get install [liste med alle pakker, der begynder med ab]
* make <tab> -> make [liste over alle make targets]
* ./configure <tab> -> ./configure [liste over alle configure options]
* tar zxvf <tab> -> tar zxvf [kun liste over alle tgz, tar.gz filer]
* ssh <tab> -> ssh [liste af maskiner fra fx. ~.ssh/known_hosts]
* bitchg<tab> -> bitchx (altsaa rettelse af stavefejl :)
* cd /u/s/l/<tab> -> cd /usr/src/linux

dirhash'es:
hash -d pack=/afs/ies.auc.dk/sw/pack
cd ~pack havner i /afs/ies.auc.dk/sw/pack
saa slipper man for en masse symlinks :)

cd completer kun paa dirs.

zsh, har i foelge udviklerne ingen bug's! kun en masse features :)

--
Mvh Claus Albøge

"Don't summarize. Don't abbreviate. Don't interpret."
      -- D. J. Bernstein















Flemming Kjaer Jense~ (19-03-2001)
Kommentar
Fra : Flemming Kjaer Jense~


Dato : 19-03-01 15:05

>>>>> "Claus" == Claus Alboege <tractrix@kom.auc.dk> writes:
Claus> dirhash'es: hash -d pack=/afs/ies.auc.dk/sw/pack cd ~pack
Claus> havner i /afs/ies.auc.dk/sw/pack saa slipper man for en masse
Claus> symlinks :)

Symlinks er pænt godt til AFS, aldrig mere skrivekrampe

Bruger du

hash -d ies=/afs/ies.auc.dk
hash -d pack=/afs/ies.auc.dk/sw/pack

eller andre gode? Jeg har brugt samme feature til AFS homedirs for
folk på IES eksterne maskiner, som ikke kører NIS fx

hash -d tractrix=/afs/ies.auc.dk/user/tractrix

På den måde kan man jo tilgå homedirs for folk selv om det er en
hjemme maskine. Et fornuftigt script kan evt lave hash -d for de AFS
brugere som ikke er med i /etc/passwd og hvor der findes dirs
/afs/ies.auc.dk/user/*

Claus> cd completer kun paa dirs.

Claus> zsh, har i foelge udviklerne ingen bug's! kun en masse features
Claus> :)

Der har været en del forskellige branches men efter at udviklingen
flyttede til sourceforge (version 3.19) ser det ud til at en del
"features" nu er væk og zsh en del mere stabil.

mvh Flemming

Klaus Alexander Seis~ (19-03-2001)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-03-01 19:28

Claus Albøge skrev [om zsh]:

> Genial completion:
> completion paa options til mange commandoer:

Ja, det ser godt nok praktisk ud. Men det lærer mig jo ikke ksh at
gå over til zsh - og det er ksh jeg gerne vil lære.

> dirhash'es:
> hash -d pack=/afs/ies.auc.dk/sw/pack
> cd ~pack havner i /afs/ies.auc.dk/sw/pack
> saa slipper man for en masse symlinks :)

Jeg har noget lignende til bash (fik det af en svensker engang, men
husker ikke hvem):

### ~/.goingrc
#v+

[ -d ${HOME}/.going/. ] || mkdir ${HOME}/.going

function go () {
cd $(cat ~/.going/${1-_back} || echo .)
}

function on () {
echo "on $(cat ~/.going/${1-_back} || echo .)" 1>&2
cat ~/.going/${1-_back} || echo .
}

function here () {
pwd > ~/.going/${1-_back}
echo "go $1 will go to $(pwd)"
}

function there () {
( cd ~/.going && grep '' * ) | \
awk '{ FS=":" ; printf("%-10s %s\n",$1,$2); }' | \
grep -i -E ${1-.\*}
}

#v-
### EOF

og så

### ~/.bashrc
#v+

[ "$PS1" ] && {
: en del irrelevante linier slettet
[ -f ${HOME}/.goingrc ] && . ${HOME}/.goingrc
}

#v-
### EOF

Nu kan man

#v+

kas@zigzag$ cd /usr/local/src
kas@zigzag:/usr/local/src$ here src
go src will go to /usr/local/src
kas@zigzag:/usr/local/src$ cd
kas@zigzag$ go src
kas@zigzag:/usr/local/src$

#v-

> zsh, har i foelge udviklerne ingen bug's! kun en masse features :)

Hm.


// Klaus

--
><>°

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

Månedens bedste
Årets bedste
Sidste års bedste