🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.comp.os.linux
Article #10992

Bash readline 使用技巧(zt)

#10992
From: NewBlue
Date: Fri, 30 May 2003 13:40
258 lines
15067 bytes
       Bash readline ʹ�ü���

�ܶ��˻��� Bash�����Ǻ�������֪�� readline ����ô���¡�readline ��һ��
ǿ��Ŀ⣬ֻҪʹ������ij��򣬶�������ͬһ�������ļ����ã�������ͬ���
�������������У�������Է���ı༭�����С�

ʹ�� readline �ij���������Ҫ�� Bash, GDB��ftp �ȡ�readline ������Щ��
��ǿ��� Emacs �Ƶ������б༭��ʽ��������������ļ��̡�

�������

�������У����Ǿ����ᵽ "C-x r" ����������"C-x r" ��ʵ���ǰ�
Ctrl-x��Ȼ�� r��ͬ�� "C-M-@" ���ǰ� ctrl-alt-@(M��ʾmeta, �� PC �Ͼ�
�� Alt ��)��������ʵ @ ��shift-2 (������ļ���)������ "C-M-@" ʵ����Ҫ
�㰴 ctrl-alt-shift-2��

�����������ļ���ļ������У����ǰ� "C-x r" ��ʾΪ "\C-xr", �� "C-M-@" 
��ʾΪ "\C-\M-@"�����Լ�������֪����ô�����ˡ�ͬ�� "Esc a" ���ʾ�� 
"\ea"��

����� Emacs ��İ����ͨ����Ƿ�����EMACS = Esc Meta Alt Ctrl Shift
:)

����ƪ���Լ�����������֮ǰ������������������ȱʡ�ļ���ܹ����е�һЩ
������÷���

��һ�У�ʹ����ǰ�������в���

���Ƿ񾭳������������������� ~/text-browser/ Ŀ¼�µ�3��.tar.gz�ļ�
�ᵽ/usr3/software/�����������룺

$mv ~/text-browser/*.tar.gz /usr3/software/

������һ���Ѿ�֪�������� ~/text ֮�� TAB �Ϳ��Բ�ȫtext-browser���
���ļ���ɣ�����Bash �Ļ��ܡ��ҷϻ������ˣ��͵���֪���ɡ��������
��Ҫ���Ķ������������һЩ��

Go on! �ո����뵽�����ͻȻ����Ӧ���� /usr3/software/ ���Ƚ���һ��
Ŀ¼��browsers������Ž�ȥ���ļ��ȽϺù��?

������ Ctrl-u��ɾ�������������ѽ����ô��������һ�¾�û�ˡ��Dz�����
���ϧ���⻹�����鷳��Ȼ����

mkdir /usr3/software/browser
mv ~/text-browser/*.tar.gz /usr3/software/browser

�š�TAB �ǰ����㲻��æ��������ʵ�����и�õİ취�������������ðɣ�
���� readline ������������������� ���ǻص����������

$mv ~/text-browser/*.tar.gz /usr3/software/

��ղ��ǰ��� Ctrl-u ɾ������������Ķ�������ϧ������Ҫ�ǰ� M-#(Ҳ����
��ס PC ��� Alt ���ٰ� #��ʵ���Ͼ��� Alt-Shift-3)����ô Bash �ͻ���
�����ͷ����һ�� "#"��Ȼ���������С���������ͱ���Ϊһ��ע����������
ʷ�� ����ʲô�ô������������������������ݾͿ��Ա��ٴ����á����ţ���
�������룺

mkdir ...

�ȵȣ����Dz��������� /usr3/software/���㲻������һ���ˣ�ֱ�Ӱ� M-.(Alt 
�Ӿ��)�������� /usr3/software/ �Dz��dz��������������ˣ�M-. ���ǵ����� 
yank-last-arg �������һ����������һ����������������ϡ����ˣ��س�
�ɣ� ��������룺

mv ...

�ȵȣ������Ǹ����� ~/text-browser/*.tar.gz �ˡ�������������һ�ַ�ʽ�ɡ�
�밴��"M-1 M-."(����һ������ĵ�һ�����������������)�����������г�Ϊ
�ˣ� mv /usr3/software/browser

��ô�������ˣ�������ġ���һ�������ʲô�ɣ��ǡ������Լ������������
����������Ҫ�ġ���ô�����ٰ�һ�� "M-."�������˰ɣ�����������Ѿ���Ϊ�� 
mv ~/text-browser/*.tar.gz

�á���һ���ո��ٰ�һ�� "M-."�������б���ˣ� 
mv ~/text-browser/*.tar.gz /usr3/software/browser

���������Ҫ�ģ� �Dz��ǿ������㻹�ǻ��˲��ٹ��򣿵�����һ�룬�������
Ҫִ������һ�������أ�

mv /data/ftp/pub/TUG/texmf/tex/latex/CJK/GB/GB.cap \
 /usr/local/texlive/texmf-local/tex/latex/CJK/GB/

�š���ס����������M-. �� ���ǰ������� M-0, ... ��Ϊ���ֲ��� 
�ڶ��У���ȫ�������ļ���ͱ�����
��֪�� TAB ���Բ�ȫ�������Ϻܶණ�����������������������ʱ����ô�죿 

man a-very-very-long-command-name

�������� man a-ver... ֮�󣬰� TAB��ʲô��ӦҲû�С���Ϊ TAB ִ�е��� 
���������ȫ��(complete)���� man��֪����Ӧ����һ�������ô����Ϊ�� 
������Ӧ����һ���ļ������ ��������Ҫ���������������ô�죿�𰸣�
�� "M-!". ������������Ҫ���� XMODIFIERS="@im=fcitx"����������

export XM...

�� TAB? û�з�Ӧ��Ϊʲô�أ���Ϊ TAB �IJ�ȫ��Ҫһ���ļ����ǰĿ¼
û�п�ͷ�� "XM..." ���ļ�����ô����ô��ȫ���𰸣�"M-$"�� 

��ʵ readline �IJ�ȫ��ʽ�� Bash �����˺ܶࡣ�����ж��ٰɣ�

"TAB": complete
"\M-!": complete-command
"\M-/": complete-filename
"\M-@": complete-hostname
"\M-~": complete-username
"\M-$": complete-variable

�Լ����԰ɣ� 
�����У���չ������

���һ��Ŀ¼���кܶ����Ƶ��ļ������ֽ� T12.txt, T12.log, T23.txt,
T23.log, T13.txt, T13.log���� �к�׺ txt �ģ�Ҳ�к�׺ log �ġ�... ����
�����е�ijЩ T*.txt ���ƶ�������һ��Ŀ¼����T*.log������������T*.txt 
Ҳ����ȫ����Ҫ�ƶ������������T*.txt �������������ϣ�Ȼ��ѡ������һЩ��
�����룺

mv T...

���Ű� "M-*"(insert-completions)����� T ��ͷ���ļ������ŵ����������ˡ�
�š�����ijЩʱ�������õģ������������ T*.log ���ļ�Ҳ����ȥ�ˡ����С�
�������Ǽ������룺

mv T*.txt 

���ˣ��������ǿ���ʹ�� "C-x*"(�Ȱ�ctrl-x��Ȼ��*)�������������T*.txt 
���ļ������ŵ������������档"C-x*" ִ�еĺ������ glob-expand-word. ��
��ƪ���Dz��Ǿ�����Щ������Ѽ�ס����˳�֣����£����Ƕ��ǿ��Ըı�ģ���
��Emacs�ļ��������Ա�����ĸı䣡

����ʹ��readline�ij��򣬶�ʹ��һ�������ļ������������Ϊ�ͼ�󶨡����
�ļ�һ���� INPUTRC ��������ȷ���ġ���������������û��ֵ����ôȱʡʹ
�� ~/.inputrc��

~/.inputrc �ļ��ܼ򵥣�ֻ��4����䣺 

ע�� 
�����������(set variable value) 
���("keyseq":function) 
�������($if ... $endif) 
�����Ȳ�˵����ģ�����������󶨰ɣ� 
���
����䡣 

�����ھͿ��Զ���������ϲ���Ŀ��Ʒ�ʽ�����磬�ҷ�����Щʱ������Ҫ������
�������� mark(Emacs ����)��Ȼ���mark �͹��֮��� region(Emacs����) 
ɾ������������� Emacs �����kill-region. �������Ƿ������������ Bash 
��ȱʡ��û�а󶨵ġ������ϣ��õ��� Emacs һ��İ� C-w �Ļ����Ͱ���
�в��뵽 ~/.inputrc:

"\C-w":kill-region

ʹ����Ч��Ϊ��ʹ��������Ч������Ҫִ�� re-read-init-file ����
�������ȱʡ������ "C-x C-r"�����޸� ~/.inputrc ֮���� Bash ������ 
"C-x C-r" �Ϳ���ʹ�µ�������Ч�ˡ�

�г����õĺ���

��������ô֪����Щ������Ա����أ�readline �� info 
ҳ�г��˺ܶຯ������㲻��ÿ�ζ�ȥinfo���ѯ�ɣ����鷳������ʵ�����
ʹ��bash�� bind �������õ����еļ��:

$bind -p

������ʾ�������е��Ѿ��󶨺�û�а󶨵ĺ���û�б��󶨵ĺ�����ʾΪ 
"(not bound)"������������ע�͡���������

"\C-g": abort
"\C-x\C-g": abort
"\M-\C-g": abort
"\C-j": accept-line
"\C-m": accept-line
# alias-expand-line (not bound)
# arrow-key-prefix (not bound)
# backward-byte (not bound)
"\C-b": backward-char
"\M-OD": backward-char
"\C-h": backward-delete-char
"\C-?": backward-delete-char

����԰��������������Ϊһ��ģ�壬Ƕ�뵽 ~/.inputrc �ļ�������ϲ����
����󶨵�����İ��� ��ʵ readline ���������������㷽��IJ�ѯ����
�����ͺ�İ�����������ǣ�

dump-functions
dump-variables
dump-macros

��������ȱʡ��û�б��󶨵��κΰ��������Ϊ���Ƿֱ��������� "C-xf",
"C-xv", "C-xm" �������׼���İ󶨡� ������˰󶨡��� ������Ϳ�������
����Ҫ�İ����������㻹���п�������Ҫ��ʱ��ͻȻ�Dz�����Щ��󶨿��Բ�
ȫ����ʱ�������룺

$bind -p | grep compl

�õ���� 
"\C-i": complete
"\M-\e": complete
"TAB": complete
"\M-!": complete-command
"\M-/": complete-filename
"\M-@": complete-hostname
"\M-{": complete-into-braces
"\M-~": complete-username
"\M-$": complete-variable
"\M-\C-i": dynamic-complete-history
"\M-g": glob-complete-word
"\M-*": insert-completions
.......

������Dz�סһ�����ʱ��Ϳ��Է���IJ�ѯ�������֮����ͻ���Լ���
Ҫ�İ����ס�ˡ�

����

���飺 
Bash �� readline ��һЩ�������Կ��������Ϊ������: 

bell-style ���Կ��Ƴ���ʱ�� audible(��������)��visible(������Ļ)������
none(ʲô������)��editing-mode ���Կ��������� Emacs �����뷽ʽ������ 
vi �ģ�

completion-query-times ��ֵ�����ڲ�ȫ�ĸ�������Nʱ��bash ��ʾ�� 
��Display all N possibilities? (y or n)����

��������� expand-tilde Ϊ on�������롰ls ~/doc������ TAB ʱ�������л�
�Զ���� "ls /home/wy/doc".

���� visible-stats ����Ϊ on����ô�г���ȫ��ʱ��Ŀ¼����ִ���ļ���
������ӣ��ᱻ�ֱ�ʹ�� /, *, @ ����ǣ����� ls -F �ĵ��Ľ��

���ã� 
���õķ�������򵥣����� ~/.inputrc �ļ���д��������䣺

set visible-stats on

Ȼ�� "C-x C-r" ʹ������Ч�� 
����֪������Щ���ã� 
�������õIJ����Ǻܶ�ġ�ʹ������ 

$bind -v

�Ϳ��Եõ�������Щ�������õı��������ǵ�ֵ�ˡ� 

--------------------------------------------------------------------------------

-- 
Email:
echo "newblue@batbug.org"|sed -e 's/batbug.org/newhuanet.com/g'

============================================
======		�±�˼����          =========
===========		      ==============
========= 	Welcome to 	============
=========    cn.comp.os.linux   ============
============================================
=ǿ=ǿ=ǿ=ǿ=ǿ=ǿ=ǿ=-ǿ-=ǿ=ǿ=ǿ=ǿ=ǿ=ǿ=ǿ=
============================================
Technical Details
Message-ID: <uisrswo1l.fsf@batbug.org|s/batbug.org/xinhuanet.com/g>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-06!sn-xit-09!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!news.cn99.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: 10b277,abc7ee5bb1673d12,start
X-Google-Attributes: gid10b277,public
X-Google-ArrivalTime: 2003-05-30 06:42:31 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-06!sn-xit-09!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!news.cn99.com!not-for-mail
From: NewBlue <newblue@batbug.org|s/batbug.org/xinhuanet.com/g>
Newsgroups: cn.comp.os.linux
Subject: Bash readline 使用技巧(zt)
Date: Fri, 30 May 2003 21:40:22 +0800
Organization: Bentium Ltd. (CN99)
Lines: 258
Message-ID: <uisrswo1l.fsf@batbug.org|s/batbug.org/xinhuanet.com/g>
NNTP-Posting-Host: 211.97.35.81
Mime-Version: 1.0
Content-Type: text/plain; charset=gb2312
Content-Transfer-Encoding: 8bit
X-Trace: mail.cn99.com 1054302088 98284 211.97.35.81 (30 May 2003 13:41:28 GMT)
X-Complaints-To: usenet@news.cn99.com
NNTP-Posting-Date: Fri, 30 May 2003 13:41:28 +0000 (UTC)
User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (windows-nt)