When you override the -i
option on the mv
, cp
, and rm
commands, you risk removing some (or lots) of files by mistake. Using wildcards (such as *
) and no -i
makes mistakes even more likely. That said, sometimes you don't want to be bothered to step through each file you delete. You have other options as follows:
As noted with the -f option, you can force rm to delete without prompting. An alternative is to run rm, cp, or mv with a backslash in front of it (\rm bigdir). The backslash causes any command to run unaliased.
Another alternative with mv is to use the -b option. With -b, if a file of the same name exists at the destination, a backup copy of the old file is made before the new file is moved there.
Commands for moving around the filesystem, copying files, moving files, and removing files are among the most basic commands that you need to work from the shell. This chapter covers lots of commands for moving around and manipulating files as well as commands for changing ownership and permission.
The next chapter describes commands for editing and searching for files. These commands include the vim
/ vi
text editors, the find
command, and the grep
command.
Use these exercises to test your knowledge of efficient ways to get around the Linux filesystem and work with files and directories. When possible, try to use shortcuts to type as little as possible to get the desired results. These tasks assume that you are running a Fedora or Red Hat Enterprise Linux system (although some tasks work on other Linux systems as well). If you are stuck, solutions to the tasks are shown in Appendix B(although in Linux, there are often multiple ways to complete a task).
1 Create a directory in your home directory called projects. In the projects directory, create nine empty files that are named house1, house2, house3, and so on up to house9. Assuming that there are lots of other files in that directory, come up with a single argument to ls that would list just those nine files.
2 Make the $HOME/projects/houses/doors/ directory path. Create the following empty files within this directory path (try using absolute and relative paths from your home directory): $HOME/projects/houses/bungalow.txt $HOME/projects/houses/doors/bifold.txt $HOME/projects/outdoors/vegetation/landscape.txt
3 Copy the files house1 and house5 to the $HOME/projects/houses/ directory.
4 Recursively copy the /usr/share/doc/initscripts* directory to the $HOME/projects/ directory. Maintain the current date/time stamps and permissions.
5 Recursively list the contents of the $HOME/projects/ directory. Pipe the output to the less command so that you can page through the output.
6 Remove the files house6, house7, and house8 without being prompted.
7 Move house3 and house4 to the $HOME/projects/houses/doors directory.
8 Remove the $HOME/projects/houses/doors directory and its contents.
9 Change the permissions on the $HOME/projects/house2 file so that it can be read by and written to by the user who owns the file, only read by the group, and have no permission for others.
10 Recursively change permissions of the $HOME/projects/ directory so that nobody has write permission to any files or directory beneath that point in the filesystem.
CHAPTER 5 Working with Text Files
IN THIS CHAPTER
Using vim and vi to edit text files
Searching for files
Searching in files
When the UNIX system, on which Linux was based, was created, most information was managed on the system in plain-text files. Thus, it was critical for users to know how to use tools for searching for and within plain-text files and to be able to change and configure those files.
Today, configuration of Linux systems can still be done by editing plain-text files. Whether you are modifying files in the /etc
directory to configure a local service or editing Ansible inventory files to configure sets of host computers, plain-text files are still in common use for those tasks.
Before you can become a full-fledged system administrator, you need to be able to use a plain-text editor. The fact that most professional Linux servers don't even have a graphical interface available makes the need for editing of plain-text configuration files with a non-graphical text editor necessary.
After you know how to edit text files, you still might find it tough to figure out where the files are located that you need to edit. With commands such as find
, you can search for files based on various attributes (filename, size, modification date, and ownership to name a few). With the grep
command, you can search inside of text files to find specific search terms.
Editing Files with vim and vi
It's almost impossible to use Linux for any period of time and not need a text editor because, as noted earlier, most Linux configuration files are plain-text files that you will almost certainly need to change manually at some point.
If you are using a GNOME desktop, you can run gedit
(type geditinto the Search box and press Enter, or select Applications ➪ Accessories ➪ gedit), which is fairly intuitive for editing text. You can also run a simple text editor called nano
from the shell. However, most Linux shell users use either the vi
or emacs
command to edit text files.
The advantage of vi
or emacs
over a graphical editor is that you can use the command from any shell, character terminal, or character-based connection over a network (using telnet
or ssh,
for example)—no graphical interface is required. They each also contain tons of features, so you can continue to grow with them.
The following sections provide a brief tutorial on the vi
text editor, which you can use to manually edit a text file from any shell. It also describes the improved versions of vi
called vim
. (If vi
doesn't suit you, see the sidebar “Exploring Other Text Editors” for further options.)
The vi
editor is difficult to learn at first, but after you know it, you never have to use a mouse or a function key—you can edit and move around quickly and efficiently within files just by using the keyboard.
Exploring Other Text Editors
Dozens of text editors are available for use with Linux. Some alternatives might be in your Linux distribution. You can try them out if you find vi
to be too taxing. Here are some of the options:
nano: This popular, streamlined text editor is used with many bootable Linux systems and other limited-space Linux environments. For example, nano is available to edit text files during a Gentoo Linux install process.
gedit: The GNOME text editor runs on the desktop.
jed: This screen-oriented editor was made for programmers. Using colors, jed can highlight code that you create so that you can easily read the code and spot syntax errors. Use the Alt key to select menus to manipulate your text.
joe: The joe editor is similar to many PC text editors. Use control and arrow keys to move around. Press Ctrl+C to exit with no save or Ctrl+X to save and exit.
kate: This nice-looking editor comes in the kdebase package. It has lots of bells and whistles, such as highlighting for different types of programming languages and controls for managing word wrap.
kedit: This GUI-based text editor comes with the KDE desktop.
mcedit: In this editor, function keys help you get around, save, copy, move, and delete text. Like jed and joe, mcedit is screen oriented. It comes in the mc package in RHEL and Fedora.
Читать дальше