как редактировать командную строку в sqlplus под unix

 
Известно, что sqlplus под Windows позволяет без проблем редактировать командную строку. Также известно, что ни под каким из unix'ов этого не получается делать.

Однако, существует пара способов решить эту проблему.

Первое решение: бесплатный gqlplus, ссылку на который можно найти на странице Oracle Open Source Projects.

Второе решение более общее: существует программка rlwrap (readline wrapper), которая позволяет использовать возможности GNU libreadline в любой программе. А это значит, что, используя rlwrap, можно не только редактировать командную строку, но и использовать возможности words completion (как в bash).
Для этого выполняем примерно следующую команду:

rlwrap -b "" -f $HOME/sql.dict sqlplus

Можно, вообще, определить где-нибудь в .bashrc alias вот таким вот образом:

alias sqlplus='rlwrap -b "" -f $HOME/sql.dict sqlplus'

А в файл $HOME/sql.dict можно понавставлять те слова, которые лень полностью набирать. Например, select, count(*), v$session, dba_data_files, serial#, tablespace_name etc. После чего, набрав в sqlplus 'co' и нажав <Tab>, мы получим 'count(*) '.

Ключ -b (или --break-chars) говорит о том, какие символы считаются разделителями слов в файле sql.dict. По умолчанию, разделителями считаются следующие символы: (){}[].,+-=&^%$#@\;|' Нам такое множество не нужно (особенно нам не надо, чтобы символ '$' считался разделителем), поэтому мы указываем альтернативный пустой набор. При этом разделителями считаются только символы \r,\n и пробел.

Всё. Теперь мы не просто имеем такую приятную вещь, как редактирование командной строки (что есть и в sqlplus for Windows), но и words completion (чего в sqlplus for Windows нет).