working with files


All files are case sensitive

Linux is case sensitive, this means that FILE1 is different from file1, and /etc/hosts is different from /etc/Hosts (the latter one does not exist on a typical Linux computer).
This screenshot shows the difference
root@linux:~/Linux$ ls
winter.txt Winter.txt
root@linux:~/Linux$ cat winter.txt
It is cold.
root@linux:~/Linux$ cat Winter.txt
It is very cold!
everything is a file

A directory is a special kind of file, but it is still a (case sensitive!) file. Even a
terminal window (/dev/pts/4) or a hard disk (/dev/sdb) is represented somewhere in
the file system as a file. It will become clear throughout this course that everything
on Linux is a file.
File

The file utility determines the file type. Linux does not use extensions to determine
the file type. Your editor does not care whether a file ends in .TXT or .DOC. As a
system administrator, you should use the file command to determine the file type.
Here are some examples on a typical Linux system.
root@linux:~$ file pic33.png
pic33.png: PNG image data, 3840 x 1200, 8-bit/color RGBA, non-interlaced
root@linux:~$ file /etc/passwd
/etc/passwd: ASCII text
root@linux:~$ file HelloWorld.c
HelloWorld.c: ASCII C program text

The file command uses a magic file that contains patterns to recognise file types.
The magic file is located in /usr/share/file/magic. Type man 5 magic for more information.
It is interesting to point out file -s for special files like those in /dev and /proc.
root@debian6~# file /dev/sda
/dev/sda: block special
root@debian6~# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead...
root@debian6~# file /proc/cpuinfo
/proc/cpuinfo: empty
root@debian6~# file -s /proc/cpuinfo
/proc/cpuinfo: ASCII C++ program text
#touch

One easy way to create a file is with touch.
root@linux:~/test$ touch file1
root@linux:~/test$ touch file2
root@linux:~/test$ touch file555
root@linux:~/test$ ls -l
total 0
-rw-r--r-- 1 paul paul 0 2007-01-10 21:40 file1
-rw-r--r-- 1 paul paul 0 2007-01-10 21:40 file2
-rw-r--r-- 1 paul paul 0 2007-01-10 21:40 file555
#touch –t

Of course, touch can do more than just create files. Can you determine what by
looking at the next screenshot? If not, check the manual for touch.
root@linux:~/test$ touch -t 200505050000 SinkoDeMayo
root@linux:~/test$ touch -t 130207111630 BigBattle
root@linux:~/test$ ls -l
total 0
-rw-r--r-- 1 paul paul 0 1302-07-11 16:30 BigBattle
-rw-r--r-- 1 paul paul 0 2005-05-05 00:00 SinkoDeMayo
#rm

When you no longer need a file, use rm to remove it. Unlike some graphical user
interfaces, the command line in general does not have a waste bin or trash can to
recover files. When you use rm to remove a file, the file is gone. Therefore, be careful
when removing files!
root@linux:~/test$ ls
BigBattle SinkoDeMayo
root@linux:~/test$ rm BigBattle
root@linux:~/test$ ls
SinkoDeMay
#rm –i

To prevent yourself from accidentally removing a file, you can type rm -i.
root@linux:~/Linux$ touch brel.txt
root@linux:~/Linux$ rm -i brel.txt
rm: remove regular empty file `brel.txt'? y
root@linux:~/Linux$
#rm –rf  

By default, rm -r will not remove non-empty directories. However rm accepts several
options that will allow you to remove any directory. The rm -rf statement is famous
because it will erase anything (providing that you have the permissions to do so).
When you are logged on as root, be very careful with rm -rf (the f means force and
the r means recursive) since being root implies that permissions don't apply to you.
You can literally erase your entire file system by accident.
root@linux:~$ ls test
SinkoDeMayo
root@linux:~$ rm test
rm: cannot remove `test': Is a directory
root@linux:~$ rm -rf test
root@linux:~$ ls test
ls: test: No such file or directory
#cp

To copy a file, use cp with a source and a target argument. If the target is a directory,
then the source files are copied to that target directory.
root@linux:~/test$ touch FileA
root@linux:~/test$ ls
FileA
root@linux:~/test$ cp FileA FileB
root@linux:~/test$ ls
FileA FileB
root@linux:~/test$ mkdir MyDir
root@linux:~/test$ ls
FileA FileB MyDir
root@linux:~/test$ cp FileA MyDir/
root@linux:~/test$ ls MyDir/
FileA
#cp –r   

To copy complete directories, use cp -r (the -r option forces recursive copying of
all files in all subdirectories).
root@linux:~/test$ ls
FileA FileB MyDir
root@linux:~/test$ ls MyDir/
FileA
root@linux:~/test$ cp -r MyDir MyDirB
root@linux:~/test$ ls
FileA FileB MyDir MyDirB
root@linux:~/test$ ls MyDirB
FileA
cp multiple files to directory

You can also use cp to copy multiple files into a directory. In this case, the last
argument (a.k.a. the target) must be a directory.
cp file1 file2 dir1/file3 dir1/file55 dir2
#cp –I    

To prevent cp from overwriting existing files, use the -i (for interactive) option.
root@linux:~/test$ cp fire water
root@linux:~/test$ cp -i fire water
cp: overwrite `water'? no
root@linux:~/test$
#cp –p  

To preserve permissions and time stamps from source files, use cp -p.
root@linux:~/perms$ cp file* cp
root@linux:~/perms$ cp -p file* cpp
root@linux:~/perms$ ll *
-rwx------ 1 paul paul 0 2008-08-25 13:26 file33
-rwxr-x--- 1 paul paul 0 2008-08-25 13:26 file42
cp:
total 0
-rwx------ 1 paul paul 0 2008-08-25 13:34 file33
-rwxr-x--- 1 paul paul 0 2008-08-25 13:34 file42
cpp:
total 0
-rwx------ 1 paul paul 0 2008-08-25 13:26 file33
-rwxr-x--- 1 paul paul 0 2008-08-25 13:26 file42
#mv

Use mv to rename a file or to move the file to another directory.
root@linux:~/test$ touch file100
root@linux:~/test$ ls
file100
root@linux:~/test$ mv file100 ABC.txt
root@linux:~/test$ ls
ABC.txt
root@linux:~/test$
When you need to rename only one file then mv is the preferred command to use.

No comments:

Post a Comment