Hvordan tilpasset vise rask i KornShell vise vertsnavn og gjeldende mappe?

stemmer
10

Jeg bruker KornShell (ksh) på Solaris og tiden min PS1 env var er:

PS1=${HOSTNAME}:\${PWD} \$

Og melding vises: hostname:/full/path/to/current/directory $

Men jeg vil at det skal vise: hostname:directory $

Med andre ord, hvordan kan jeg vise bare vertsnavn og navnet på den gjeldende katalogen, det vil si tmpeller ~eller public_htmletc etc?

Publisert på 23/07/2009 klokken 13:19
kilden bruker
På andre språk...                            


7 svar

stemmer
18

Fra å lese ksh mannen siden du vil

PS1 = "$ {HOSTNAME}: \ $ {PWD ## * /} \ $"

Testet på standard ksh på SunOS 5.8

Svarte 23/07/2009 kl. 13:49
kilden bruker

stemmer
11

Ok, litt gammelt og litt sent, men dette er hva jeg bruker i Kornshell:

PS1='$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")'

Dette gjør en meldingen som er tilsvarende PS1="\u@\h:\w\n$ "i bash.

For eksempel:

qazwart@mybook:~
$ cd bin
qazwart@mybook:~/bin
$ cd /usr/local/bin
qazwart@mybook:/usr/local/bin
$ 

Jeg liker en to linjen spør fordi jeg noen ganger har svært lange mappenavn, og de kan ta opp mye av kommandolinjen. Hvis du ønsker en en linjen spør, bare la av "\ n" på den siste utskrifts uttalelse:

PS1='$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "$ ")'

Det tilsvarer PS1="\u@\h:\w$ "i BASH:

qazwart@mybook:~$ cd bin
qazwart@mybook:~/bin$ cd /usr/local/bin
qazwart@mybook:/usr/local/bin$ 

Det er ikke fullt så enkelt som å sette opp en BASH spør, men du skjønner poenget. Bare skrive et manus for PS1og Kornshell vil gjennomføre det.


For Solaris og andre eldre versjoner av Kornshell

Jeg fant ut at de ovennevnte ikke fungerer på Solaris. I stedet må du gjøre det på den virkelige hackish måte ...

  • I din .profile, sørg for at ENV="$HOME/.kshrc"; export ENV er satt. Dette er trolig satt opp riktig for deg.

  • I .kshrcfilen, vil du gjøre to ting

    1. Du vil bli å definere en funksjon som heter _cd. Denne funksjonen vil gå til katalogen spesifisert, og deretter sette PS1 variable basert på din pwd.
    2. Du vil være å sette opp et alias cdfor å kjøre _cdfunksjonen.

Dette er den relevante delen av .kshrcfilen:

function _cd {
   logname=$(logname)   #Or however you can set the login name
   machine=$(hostname)  #Or however you set your host name
   $directory = $1
   $pattern = $2        #For "cd foo bar"

   #
   # First cd to the directory
   # We can use "\cd" to evoke the non-alias original version of the cd command
   #
   if [ "$pattern" ]
   then
       \cd "$directory" "$pattern"
   elif [ "$directory" ]
   then
       \cd "$directory"
   else
       \cd
   fi

   #
   # Now that we're in the directory, let's set our prompt
   #

   $directory=$PWD
   shortname=${directory#$HOME}  #Possible Subdir of $HOME

   if [ "$shortName" = "" ]  #This is the HOME directory
   then
        prompt="~$logname"   # Or maybe just "~". Your choice
   elif [ "$shortName" = "$directory" ] #Not a subdir of $HOME
   then
        prompt="$directory"
   else
        prompt="~$shortName"
   fi
   PS1="$logname@$hostname:$prompt$ "  #You put it together the way you like
}

alias cd="_cd"

Dette vil sette spørsmål som equivelent BASH PS1="\u@\h:\w$ ". Det er ikke pen, men det fungerer.

Svarte 08/08/2011 kl. 15:58
kilden bruker

stemmer
3

ENV = ~ / .kshrc, og deretter i .kshrc:

function _cd {
  \cd "$@"
  PS1=$(
    print -n "$LOGNAME@$HOSTNAME:"
    if [[ "${PWD#$HOME}" != "$PWD" ]]; then
      print -n "~${PWD#$HOME}"
    else
      print -n "$PWD"
    fi
    print "$ "
  )
}

alias cd=_cd

cd "$PWD"

Brad

Svarte 11/12/2011 kl. 22:50
kilden bruker

stemmer
1
HOST=`hostname`
PS1='$(print -n "[${USER}@${HOST%%.*} ";[[ "$HOME" == "$PWD" ]] && print -n "~" ||([[ "${PWD##*/}" == "" ]] && print -n "/" || print -n "${PWD##*/}");print "]$")'
Svarte 09/11/2012 kl. 10:13
kilden bruker

stemmer
-1
PS1=`id -un`@`hostname -s`:'$PWD'$
Svarte 10/09/2017 kl. 00:14
kilden bruker

stemmer
-2

og...

hvis du jobber mellom to skall for det meste av din innsats [KSH og Bourne sh] og ønsker en katalog sporing visning på kommandolinjen så PWD kan erstattes lett i ksh og hvis du bruker / usr / xpg4 / bin / sh for sh SHELL, vil det fungere der også

Svarte 25/02/2016 kl. 19:15
kilden bruker

stemmer
-4

Prøv dette:


PS1="\H:\W"

Mer informasjon om: Hvordan: Endre / oppsett bash tilpasset rask , jeg vet du sa ksh, men jeg er ganske sikker på at det vil fungere.

Svarte 23/07/2009 kl. 13:24
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more