Command-Line Editing and History

3 300 0
Command-Line Editing and History

Đang tải... (xem toàn văn)

Thông tin tài liệu

99 ■ ■ ■ CHAPTER 15 Command-Line Editing and History W hen working from the command line, you will at some point enter a command mul- tiple times, possibly with minor modifications. In those cases the ability to recall and modify previous commands quickly and efficiently is beneficial. In the old DOS days, a utility called doskey would keep your history in a buffer. You could go back or forth through the command history one command at a time by using the up and down arrow keys. Individual commands could be edited by using the cursor and Delete or Back- space keys to make replacements. This basic form of recall and modification of recently typed commands is also available in bash. Modern shell versions (ksh and bash) also provide more-advanced command-line capabilities. You can set your shell session to act as though you were in a vi editing session. The vi editor has two modes of operation, insert and command. When typing commands at the prompt, you are working in the shell’s equivalent of vi’s insert mode. You type a command, use the Backspace key to fix any typing mistakes, and then press Enter to input the command. When using the shell’s vi editing mode, you can press Escape to change to command mode. This allows you to move around on the command line as in vi: you use the H key to move left, the L key to move right, the B key to move one word left, the W key to move one word right, and so on. Once you have positioned the cursor where the modification is to be made, you can press the I key to go back into insert mode and start typing. Many vi commands besides cursor motion are available, such as using the X key to delete a char- acter, pressing D+W to delete a word, pressing Shift+A to append text to the end of the line, and many others that, once you are familiar with the vi editor, will be second nature. In case you’re not familiar with vi, there are many online references and tutorials. In addition to the editing commands, command mode gives you the ability to move through your command history. If you press the Escape key at the command prompt to change to command mode, the J and K keys will move you down and up through the command history list. Think of your command history as a list in a simple flat file, where the earliest com- mands in your history are at the top of the list and the most recent ones are at the bottom. 100 CHAPTER 15 ■ COMMAND-LINE EDITING AND HISTORY When you enter command mode you start at the bottom of your history and press the K key to move back up through the list. Pressing the J key moves you forward (down) through the history list. Once you have found the desired command, you can make any appropriate modifications and press Enter to run the command. One last command-history function that has been extremely valuable to me is the abil- ity to search for previous commands that match a pattern. You do this search in the same way as a search in a vi session. First you press Escape to change to command mode and then you press the forward slash (/). This gives you an opportunity to type in a substring to search for within the commands in the history stack. If the first match displayed isn’t the correct one, you can press N to see further matches, as you would in vi, until you find the command you’re looking for. I have been using this method to work at the prompt for a long time, and my fingers are accustomed to moving to the correct keys. This has improved my speed and agility immensely when working at the command line. If you’re not comfortable with the vi edi- tor, I recommend practicing; vi is the default text editor on UNIX/Linux systems, and you’ll certainly have to use it at some point. Although learning the vi editor is not the eas- iest thing to do, once you are comfortable with it you will be amazed at how powerful it is. There is also an emacs editing mode available. I recommend the vi mode if you have no previous experience, mainly because it is a more standard tool and is available on all sys- tems. If you’re a fan of emacs and comfortable with that editor, then by all means use the emacs mode. The goal here is to become quicker and more efficient. Setting Up vi Editing You can configure vi editing for either ksh or bash systemwide or for individual users. You can also configure it right at the command prompt if you like. bash With bash there are a few ways to enable the vi editing mode. The first is to modify the inputrc file. There is a systemwide /etc/inputrc file that all users use who have bash set as their shell. There is also an individual .bashrc file that is usually kept in the user’s home directory. Adding the following line to one of those two files will enable vi mode: set editing-mode vi Another way to enable vi mode in bash is to modify either the systemwide /etc/ profile or the .bash_profile in an individual user’s home directory to include the following line: set -o vi CHAPTER 15 ■ COMMAND-LINE EDITING AND HISTORY 101 ksh In ksh configuring vi editing mode can once again be set either systemwide or for an indi- vidual user. Modifying the systemwide /etc/profile file enables this editing mode for all users, and modifying the .profile file in a user’s home directory enables it at an individual level. The line to add to either of these two files is the same as for bash: set -o vi Command and File Completion One additional option, available in both shells, that increases your efficiency at the com- mand line is command and file completion. With this feature, you can start to type a path or command, and once you’ve typed a sufficient number of characters for the path or command to be uniquely determined, pressing a special key or key sequence will com- plete the command. For bash you simply press the Tab key. In ksh, you press either the Tab key or Escape and then a backslash (\)—whichever is your preference. The Escape+\ sequence works only when vi editing mode is set. Command completion can be explained with a simple example. My shell on the system I’m working on is bash and my home directory is /home/rbpeters. If I wanted to cd to that directory using command completion, I could type the following key sequence: cd /h<TAB>rb<TAB><ENTER> The first TAB would complete the /h to make it /home/ because no other subdirectories of the root directory begin with h. The second TAB would complete the /home/rb entry to /home/rbpeters. Pressing Enter then executes the command. . the command prompt to change to command mode, the J and K keys will move you down and up through the command history list. Think of your command history. earliest com- mands in your history are at the top of the list and the most recent ones are at the bottom. 100 CHAPTER 15 ■ COMMAND-LINE EDITING AND HISTORY

Ngày đăng: 05/10/2013, 08:51

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan