Q. Can you explain me what is device files and how do I access or see device files? Why UNIX / Linux has device files?
A. Under Linux and UNIX each and every hardware device treated as a file. A device file allows to accesses hardware devices so that end users do not need to get technical details about hardware.
In short, a device file (also called as a special file) is an interface for a device driver that appears in a file system as if it were an ordinary file. This allows software to interact with the device driver using standard input/output system calls, which simplifies many tasks.
Device file two types
There are two types of device files based upon how data written to them and read from them is processed by the operating system and hardware:
- Character special files or Character devices
- Block special files or Block devices
Understanding Character special files or Character devices
- Talks to devices in a character by character (1 byte at a time)
- Examples: Virtual terminals, terminals and serial modems etc
Understanding Block special files or Block devices
- Talks to devices 1 block at a time ( 1 block = 512 bytes to 32KB)
- Examples: Hard disk, DVD/CD ROM, and memory regions etc
Why use device files?
Device file allows transparent communication between user space applications and computer hardware.
Device file location
All device files are stored in /dev directory. Use cd and ls command to browse the directory:
How do I find out the device file type?
Simply use ls -l command:
ls -l /dev
Look for file’s type in the first column output.
A character device is marked with a c as the first letter of the permissions strings.
$ ls -l /dev/console
A block device is marked with a b as the first letter of the permissions strings:
$ ls -l /dev/sdb1
Q. How do I list or find the smallest directories or files in the current directory under Linux or UNIX like operating system?
A. There is no direct command exists for this task. However by using shell pipes and combination of other commands one can produced the desired result.
Task: Display list of smallest files
You need to use ls command and pass the option -l (long format) -S (sort) -r (in reverse order), enter:
$ ls -lSr
$ ls -lSr
$ ls -lSr | head
$ ls -lSr | head -5
-rw-r--r-- 1 root root 0 May 29 07:08 Muttrc.local
-rw-r--r-- 1 root root 0 Jan 12 2000 motd
-rw-r--r-- 1 root root 0 Jan 12 2000 exports
-rw-r--r-- 1 root root 0 Nov 28 2006 environment
-rw-rw-r-- 1 root disk 0 Aug 7 2006 dumpdates
-rw-r--r-- 1 root root 0 Jul 10 08:50 cron.deny
-rw------- 1 root root 1 Aug 23 2006 at.deny
lrwxrwxrwx 1 root root 7 Jul 10 08:50 rc -> rc.d/rc
lrwxrwxrwx 1 root root 10 Jul 10 08:50 rc6.d -> rc.d/rc6.d
lrwxrwxrwx 1 root root 10 Jul 10 08:50 rc5.d -> rc.d/rc5.d
lrwxrwxrwx 1 root root 10 Jul 10 08:50 rc4.d -> rc.d/rc4.d
lrwxrwxrwx 1 root root 10 Jul 10 08:50 rc3.d -> rc.d/rc3.d
lrwxrwxrwx 1 root root 10 Jul 10 08:50 rc2.d -> rc.d/rc2.d
Task: Display list of smallest directories
You need to use du command to display sorted (-S option) output. Use pipe to send du command output to sort command for sorting purpouse:
$ du -S . | sort -n
$ du -S . | sort -n | head -10
du -S . | sort -n | head -10
Read the man page of ls, sort and du for more options:
Q. How do I list or display the permission of a file using ssh? I don’t have GUI installed on a remote Linux computer.
A.You need to use ls command with -l option. File access permissions are displayed in the first column of the output, after the character for file type.
ls command List information about the FILEs. If no argument is given it will use the current directory by default.
Task: List a file’s access permissions
Type ls -l command as follows to display permission for /etc/passwd file:
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2453 Jul 17 16:25 /etc/passwd
Understanding the file permission
File access permissions appear in the first column of the output i.e. -rw-r–r–
- The first character – is nothing but the file type. – means regular file and d means directory.
- The next three characters (rw-) specify permissions for the user who owns the file
- The next three (r–) specify permissions for all members of the group that owns the file.
- Finally, the last three characters in the column (r–) specify permissions for all other users on the system.
Each character in permission has meaning as follows:
- r : Read permission.
- w : Write permission.
- x : Execute permission.
- – : No permission.
For example rw- permission means owner can read, write to a file but cannot execute the same.
‘m a new Linux user. We have a backup server and most our developers sftp or ftp to upload files. I just need to backup of last four weeks. If I try to list or remove directories I get an error cannot remove directory. I’m getting “Argument list too long” message. How do I solve this problem when executing commands in the bash/ksh/csh/tcsh/zsh shell?
How do I display only hidden (dot) files names under Linux / UNIX / Apple OS X / *BSD family operating systems?
ow do I list just directory names on a Linux and UNIX-like operating systems? How can I list directories only in Linux?
How do I find all files with one ore more blank space (while spaces) in their name under UNIX like operating systems?