В zsh:
ls -ld *(u$UIDm+7)
u
и m
спецификаторы globbing должны соответствовать файлам владельцем и время изменения соответственно.
Там существуйте несколько реализаций ksh:
pdksh
(общественное достояние оболочка Korn) с несколькими производными.zsh
. Zsh имеет ksh режим эмуляции, который он активирует при вызове как ksh
.Можно хотеть использовать zsh в качестве ksh или даже переключиться в целом на zsh, который является намного более мощным инструментом как интерактивной оболочкой.
Если Вы называете zsh как ksh
. У Вас может быть быстрое расширение, которое Вы хотите путем выполнения (добавьте его к Вашему $ENV
файл):
setopt PROMPT_PERCENT # restore zsh prompt expansion disabled by the ksh mode
PS1='%! %~$ '
Иначе, если действительно необходимо придерживаться AT&T или PD, Вы могли бы приблизить ее с:
PS1='! $(pwd | sed "s,^$HOME,~,")$ '
Который работал бы на ~
но не для ~other-user
.
Пример:
$ echo ${.sh.version}
Version JM 93u+ 2012-02-29
$ PS1='! $(pwd | sed "s,^$HOME,~,")$ '
85 ~$ cd /tmp
86 /tmp$ cd
87 ~$
От неопределенного воспоминания от несколько десятилетий назад, могло случиться так, что ksh88 не разворачивает замены команды внутри $PS1
. В этом случае Вы могли все еще использовать некоторый прием как:
one=1
tilde='~'
PS1='! ${tilde[0${one#${PWD##"$HOME"*}1}]}${PWD#"$HOME"}$ '
(который я теперь проверил работы надо всеми ksh93u + на Debian, ksh88i на Солярисе, MirBSD ksh 40.9.20120630 (pdksh производная) на Debian и zsh 4.3.17 (при вызове как ksh
) на Debian, таким образом, я был бы удивлен, был ли какой-либо ksh, где он не работал),
Причем идея - это если $PWD
запускается с $HOME
, затем ${PWD##"$HOME"*}
пусто, таким образом, ${one#1}
пусто, таким образом, мы добираемся ${tilde[0]}
это $tilde
. Но если это не делает затем ${PWD##"$HOME"*}
$PWD
, затем ${one#${PWD}1}
$one
, таким образом, мы добираемся ${tilde[1]}
который пуст как $tilde
выстройте как только один элемент.
Я думал, что следующее будет работать, но это оказалось ударом определенное решение. Оставляя этот ответ для ссылочной цели.
export PS1=' ! $( basename $PWD )'
Возможно, это требует обратных галочек вместо $( )
создать.
basename
. Был бы это быть /export
?
– cornbread ninja
14.10.2012, 22:07
PS1=' ! $( basename $PWD )'
и PS1 ='! '$PWD базового имени' '
– cornbread ninja
14.10.2012, 22:24
UserLoc=$(for user_loc in $(egrep -v "root|shutdown|halt|nologin" /etc/passwd | awk -F: '{print $1}' ); do echo -e "$user_loc"; done | grep $USER)
# User shell
MYSHELL=$(echo $SHELL | awk -F/ '{print $NF}')
if [ "$MYSHELL" == "bash" ] ; then
Default=$(echo -e "\e[00m")
Black=$(echo -e "\e[30m")
Red=$(echo -e "\e[31m")
Green=$(echo -e "\e[32m")
Orange=$(echo -e "\e[33m")
Blue=$(echo -e "\e[34m")
Magenta=$(echo -e "\e[35m")
Cyan=$(echo -e "\e[36m")
White=$(echo -e "\e[37m")
Def=$(echo -e "\e[0;0m")
Bold=$(echo -e "\e[1m")
Under=$(echo -e "\e[4m")
Normal=$(tput sgr0)
PrtF="$"
PS1='[${Color}${USER}${Default}@${Hostname}] \W ${PrtF} '
elif [ "$MYSHELL" == "ksh" ] ; then
esc="\033["
Default=$(echo -e "${esc}00m")
Black=$(echo -e "${esc}30m")
Red=$(echo -e "${esc}31m")
Green=$(echo -e "${esc}32m")
Orange=$(echo -e "${esc}33m")
Blue=$(echo -e "${esc}34m")
Magenta=$(echo -e "${esc}35m")
Cyan=$(echo -e "${esc}36m")
White=$(echo -e "${esc}37m")
Def=$(echo -e "${esc}0m")
Bold=$(echo -e "${esc}1m")
Under=$(echo -e "${esc}4m")
PrtF="$"
PS1='[${Color}${USER}${Default}@${Hostname}] $(if [ "${PWD#$HOME}" != "$PWD" ];then print "~${PWD#$HOME}"; else print "$(basename $PWD)"; fi) ${PrtF} '
else
PS1="[\u@\h] \w \\$ "
fi
# Color for login's user
# if root or admin user => Red
if [ "$EUID" -eq 0 ] ; then
Color=${Red}${bold}
PrtF="#"
# if user local => Cyan
elif [ "$UserLoc" == "$USER" ] ; then
Color=${Cyan}${bold}
# if standard user (AD or LDAP) => green
else
Color=${Green}${bold}
fi
export PS1
PS1='! $(pwd | sed "s,^$HOME,~,")$ '
и это не работало. – cornbread ninja 15.10.2012, 19:19(pwd | sed "s,^$HOME,~,")$ '
, в основном. Я получаю плохую замену с этимecho ${.sh.version}
. Там другой путь состоит в том, чтобы найти версию? Извините, что мой n00b показывает. – cornbread ninja 15.10.2012, 19:50$(pwd...)
(с$
). Какой эффект Вы получаете? Если это - pdksh, можно посмотреть наecho "$KSH_VERSION"
. Или можно попробоватьwhat /bin/ksh
. – Stéphane Chazelas 15.10.2012, 20:08667 $(pwd | sed s,^/export/home/students/cninja,~,)$
– cornbread ninja 15.10.2012, 20:11