UNIX / Linux Tutorial
1.9.3 Pipes | 1.9.4 Non-Destructive Redirection Of Output
1.10 File Permissions | 1.10.1 Concepts Of File Permissions
1.10.2 Interpreting File Permissions
1.9.3 Pipes We already demonstrated how to use sort as a filter. However, these examples assume that you have data stored in a file somewhere or are willing to type the data from the standard input yourself. What if the data that you wanted to sort came from the output of another command, like ls? The -r option to sort sorts the data in reverse-alphabetical order. If you want to list the files in your current directory in reverse order, one way to do it is follows: /home/patrick/papers# ls
english-list history-final masters-thesis notes Now redirect the output of the ls command into a file called file-list: /home/patrick/papers# ls > > file - list /home/patrick/papers# sort -r file - list. notes masters-thesis history-final english-list home/patrick/papers# Here, you save the output of ls in a file, and then run sort -r on that file. But this is unwieldy and uses a temporary file to save the data from ls. The solution is pipelining. This is a shell feature that connects a string of commands via a "pipe." The stdout of the first command is sent to the stdin of the second command. In this case, we want to send the stdout of ls to the stdin of sort. Use the "|" symbol to create a pipe, as follows: /home/patrick/papers# ls | j sort - r notes masters-thesis history-final english-list /home/patrick/papers# This command is shorter and easier to type. Here's another useful example, the command: /home/patrick/papers# ls /usr /bin displays a long list of files, most of which fly past the screen too quickly for you to read. So, let's use more to display the list of files in /usr/bin. /home/patrick/papers# ls /usr/ bin j more Now you can page down the list of files at your leisure. But the fun doesn't stop here! You can pipe more than two commands together. The command head is a filter that displays the first lines from an input stream (in this case, input from a pipe). If you want to display the last filename in alphabetical order in the current directory, use commands like the following: /home/patrick/papers# ls | j sort -r | j head -1 notes /home/patrick/papers# where head -1 displays the first line of input that it receives (in this case, the stream of reverse-sorted data from ls). 1.9.4 Non - Destructive Redirection Of Output Using ">" to redirect output to a file is destructive: in other words, the command: /home/patrick/papers# ls > > file-list overwrites the contents of the file file-list. If instead, you redirect with the symbol ">>", the output is appended to (added to the end of) the named file instead of overwriting it. For example: /home/patrick/papers# ls > > >> file - list appends the output of the ls command to file-list. Keep in mind that redirection and pipes are features of the shell—which supports the use of ">", ">>"and"|". It has nothing to do with the commands themselves. 1.10 File Permissions 1.10.1 Concepts Of File Permissions Because there is typically more than one user on a Linux system, Linux provides a mechanism known as file permissions, which protect user files from tampering by other users. This mechanism lets files and directories be "owned" by a particular user. For example, because Larry created the files in his home directory, Larry owns those files and has access to them. Linux also lets files be shared between users and groups of users. If Larry desired, he could cut off access to his files so that no other user could access them. However, on most systems the default is to allow other users to read your files but not modify or delete them in any way. Every file is owned by a particular user. However, files are also owned by a particular group, which is a defined group of users of the system. Every user is placed into at least one group when that user's account is created. However, the system administrator may grant the user access to more than one group. Groups are usually defined by the type of users who access the machine. For example, on a University Linux system users may be placed into the groups student, staff, faculty or guest. There are also a few system-defined groups (like bin and admin) which are used by the system itself to control access to resources—very rarely do actual users belong to these system groups. Permissions fall into three main divisions: read, write, and execute. These permissions may be granted to three classes of users: the owner of the file, the group to which the file belongs, and to all users, regardless of group. Read permission lets a user read the contents of the file, or in the case of directories, list the contents of the directory (using ls). Write permission lets the user write to and modify the file. For directories, write permission lets the user create new files or delete files within that directory. Finally, execute permission lets the user run the file as a program or shell script (if the file is a program or shell script). For directories, having execute permission lets the user cd into the directory in question. 1.10.2 Interpreting File Permissions Let's look at an example that demonstrates file permissions. Using the ls command with the -l option displays a "long" listing of the file, including file permissions. /home / patrick / foo# ls - l stuff -rw-r--r-- 1 patrick users 505 Mar 13 19:05 stuff /home / patrick / foo# The first field in the listing represents the file permissions. The third field is the owner of the file (patrick) and the fourth field is the group to which the file belongs (users). Obviously, the last field is the name of the file (stuff). We'll cover the other fields later. This file is owned by patrick and belongs to the group users. The string -rw-r--r-- lists, in order, the permissions granted to the file's owner, the file's group, and everybody else. The first character of the permissions string ("-") represents the type of file. A "-" means that this is a regular file (as opposed to a directory or device driver). The next three characters ("rw-") represent the permissions granted to the file's owner, patrick. The "r" stands for "read" and the "w" stands for "write". Thus, patrick has read and write permission to the file stuff. As mentioned, besides read and write permission, there is also "execute" permission— represented by an "x". However, a "-" is listed here in place of an "x", so Patrick doesn't have execute permission on this file. This is fine, as the file stuff isn't a program of any kind. Of course, because Patrick owns the file, he may grant himself execute permission for the file if he so desires. (This will be covered shortly). The next three characters, ("r--"), represent the group's permissions on the file. The group that owns this file is users. Because only an "r" appears here, any user who belongs to the group users may read this file. The last three characters, also ("r--"), represent the permissions granted to every other user on the system (other than the owner of the file and those in the group users). Again, because only an "r" is present, other users may read the file, but not write to it or execute it. Here are some other examples of permissions: -rwxr-xr-x The owner of the file may read, write, and execute the file. Users in the file's group, and all other users, may read and execute the file. -rw------- The owner of the file may read and write the file. No other user can access the file. -rwxrwxrwx All users may read, write, and execute the file.
1.1 Introduction 1.2.10 Referring To Home Directories 1.3.4 Copying Files
1.6 Exploring The File System 1.8 Wildcards 1.9.3 Pipes 1.10.3 Permissions Dependencies
1.12.4 Stopping And Restarting Jobs 1.13.3 Inserting Text 1.13.9 Including Other Files
1.14.3 Shell Initialization Scripts System Administration 2.3.1 The /etc/imitate file
2.4 Managing File Systems 2.6 Managing Users 2.6.5 Groups 2.7.2 gzip and compress
2.8.3 Making Backups To Tape Devices 2.9.1 Upgrading The Kernel
2.9.3 Installing A Device Driver Module
BOOK: LINUX QUICK COMMAND REFERENCE
http://personal.atl.bellsouth.net/~psadler
© copyright KnowledgeWorks, Inc. (2001)