Aix

AIX 上的 ctrl-v 鍵

  • July 22, 2017

我是 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

試試這個:

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"

當然,您通常不會單獨輸出轉義。

引用自:https://serverfault.com/questions/216354