Guide to the Linux read Command

The read command in Linux is a built-in shell command used to read input from the user, files, or other commands. It captures input and stores it in variables, making it essential for interactive scripts and automated data processing. The read command is commonly used in shell scripting to create user-friendly interfaces and process structured data.

Basic Syntax and Usage

The most basic use of the read command is to capture user input into a variable:

read variable_name

Simple Input Example

$ read name
Somdeb
$ echo "Hello $name"
Hello Somdeb

When executed, the command waits for user input. Once the user types a value and presses Enter, it gets stored in the specified variable.

Advanced Options

The read command offers several options to customize its behavior:

Option Description Example
-p prompt Display prompt text before input read -p "Enter name: " name
-t timeout Set timeout in seconds read -t 10 name
-r Treat backslashes as literal characters read -r line
-d delimiter Use custom delimiter instead of newline read -d "," field
-u fd Read from specific file descriptor read -u 3 data

Timeout Example

$ if read -t 10 -p "Enter your name: " name; then
   echo "Hello $name"
else
   echo "Timed out!!"
fi
Enter your name: Somdeb Nath
Hello Somdeb Nath

Multiple Variables

The read command can assign input to multiple variables simultaneously:

$ read firstname middlename lastname
Sk. Adil Hussain
$ echo "Hello [$firstname] [$middlename] [$lastname]"
Hello [Sk.] [Adil] [Hussain]

Reading from Files

The read command can process file content line by line using input redirection or pipes. Consider a CSV file with bike data:

# file.txt content
bike,model,year,vin
Honda,CRF450R,2022,JH2PE1030NK200013
Kawasaki,Z400,2021,JKAZR2A10MA042809
Yamaha,YZF-R6,2020,JYARJ28E8LA000081

Processing File Content

$ while read line; do
   echo "Processing: $line"
done < file.txt

Parsing CSV Data

$ while IFS=',' read -r bike model year vin; do
   echo "Bike: $bike, Model: $model, Year: $year"
done < file.txt

Reading from Command Output

The read command can process output from other commands using pipes:

$ ls -l / | while read -r permissions links owner group size month day time filename; do
   if [[ "$filename" != "total" ]] && [[ -n "$filename" ]]; then
       echo "File: $filename, Permissions: $permissions"
   fi
done
File: bin, Permissions: lrwxrwxrwx
File: boot, Permissions: drwxr-xr-x
File: dev, Permissions: drwxr-xr-x
File: etc, Permissions: drwxr-xr-x

Common Use Cases

  • Interactive Scripts Creating user-friendly command-line interfaces

  • Configuration Input Gathering setup parameters from users

  • File Processing Parsing structured data files like CSV or logs

  • Data Validation Combining with conditional statements for input validation

Best Practices

  • Always use -r option when reading file content to preserve backslashes

  • Set appropriate IFS (Internal Field Separator) for structured data

  • Use timeouts in interactive scripts to prevent indefinite waiting

  • Validate user input before processing to ensure data integrity

Conclusion

The Linux read command is a versatile tool for capturing and processing input in shell scripts. Its various options enable flexible data handling, from simple user interaction to complex file processing. Mastering the read command enhances scripting capabilities and enables creation of robust, interactive command-line applications.

Updated on: 2026-03-17T09:01:38+05:30

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements