
我是 AIX 新手,我懷念一些在其他 *nix 風格上運作良好的技巧。
我需要CTRLksh 腳本中的一個序列,例如^[
( CTRL-[) ,為此我習慣使用ctrl-v [,但在這裡它不起作用。
目前,我必須使用帶有 putty 的 Windows 盒子,因此我甚至無法在 Linux 盒子上編輯腳本並在 AIX 伺服器上傳輸腳本。
您知道為什麼以及如何解決這個問題嗎?
恢復答案:
@丹尼斯:
還有一些其他方法可以在 Korn shell 腳本中使用轉義:
print '\E' escape1='\033' # contains the literal characters as shown
echo -e "$escape1"
printf '%b' "$escape1"
print "$escape1"
escape2=$'\e' # contains an actual escape
echo "$escape2"
printf '%s' "$escape2"
print "$escape2"
對於端子顏色
man 5 terminfo
$'' 符號允許 ANSI-C 轉義:
green=$'\e[01;32m'
可能是ksh88不支援$''
我使用 ksh88,但我可以切換到 ksh93。
ctrl-v on command line
Version M-11/16/88i
/usr/dt/bin/dtksh
print ${.sh.version}
Version M-12/28/93d
green=$'\e[01;32m' doesn't give me any error on ksh88,
但它不會擴展轉義序列。在 ksh93 上$''
同樣的問題
green="$'\e[01;32m'"
使用大寫E
解決了這個問題(奇怪!!!):
print $'\E[01;32m hello'
總結一下:
\E works
\e NO
\033 works just with echo
^[ ^v^[ do not work at all
答案1
嘗試這個:
stty -a
看看是否lnext
是^V
。如果沒有,請嘗試:
stty lnext ^V
您將在其中鍵入“^”(插入符號)和“V”作為單獨的字元。現在試試看您是否可以使用^V^[
(^VEsc
在您的鍵盤上有效嗎?)來輸入轉義符。
另外,檢查您是否處於 emacs 模式
根據您的使用方式,還有一些其他方法可以在 Korn shell 腳本中使用轉義:
print '\E'
escape1='\033' # contains the literal characters as shown
echo -e "$escape1"
printf '%b' "$escape1"
print "$escape1"
escape2=$'\e' # contains an actual escape
echo "$escape2"
printf '%s' "$escape2"
print "$escape2"
當然,您通常不會單獨輸出轉義符。
答案2
如果我記得在 AIX 中,Ctrl+V轉義序列應該可以工作,但是我也記得 AIX 中的預設 TERM 並不總是您所期望的。檢查你的$TERM
變數。如果覺得奇怪的話:
export TERM=xterm
或者
export TERM=vt100
如果你$TERM
錯了,那麼即使Ctrl+V有效,Ctrl+[也可能不會做任何事。這是一個 VT100 序列。