Linux Bible. Christopher Negus
Чтение книги онлайн.
Читать онлайн книгу Linux Bible - Christopher Negus страница 54
cp
and mv
commands, rm
is also usually aliased to include the -i
option. This can prevent the damage that can come from an inadvertent recursive remove (-r
) option. Here are some examples of the rm
command:
$ rm abc $ rm *
The first remove command deletes the abc
file; the second removes all of the files in the current directory (except that it doesn't remove directories and/or any files that start with a dot). If you want to remove a directory, you need to use the recursive (-r
) option to rm
or, for an empty directory, you can use the rmdir
command. Consider the following examples:
$ rmdir /home/joe/nothing/ $ rm -r /home/joe/bigdir/ $ rm -rf /home/joe/hugedir/
The rmdir
command in the preceding code only removes the directory (nothing
) if it is empty. The rm -r
example removes the directory bigdir
and all of its contents (files and multiple levels of subdirectories), but it prompts you before each is removed. When you add the force option (-f
), the hugedir
directory and all of its contents are immediately removed, without prompting.
CAUTION
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.
Summary
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.
Exercises
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 gedit into 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