AIX 上的 ctrl-v 鍵

AIX 上的 ctrl-v 鍵

我是 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 序列。

相關內容