Linux read 命令指南
简介
在使用 Linux 命令行时,我们经常需要与用户或文件的输入进行交互。这时,"read"命令就派上用场了。它是一个简单而强大的命令,可以在 Linux 中以多种方式处理输入。通过学习如何以各种方式使用 read 命令,我们可以更熟练地使用此命令,并更高效地自动执行任务。
让我们介绍 Linux read 命令的所有方法和格式。我们将从基础知识开始,包括如何读取用户输入以及如何自定义输入分隔符。然后,我们将讨论更高级的主题,例如从文件和其他命令读取输入。
使用 read 命令的基本方法
read 命令最基本的用法是读取用户输入。为此,只需输入"read"后跟一个变量名即可。例如 -
$ read name Somdeb $ echo "Hello $name"
运行此代码时,系统会提示用户输入其姓名。输入姓名后,值将存储在变量"name"中,脚本将输出"Hello"后跟姓名。
Hello Somdeb
使用 read 命令的高级方法
Linux 中的 read 命令具有高级选项,可以更灵活地控制输入的处理方式。让我们来探索这些高级方法 -
-d delim - 此选项允许我们指定输入行的分隔符,而不是使用默认的换行符。
-u fd − 默认情况下,read 命令从标准输入 (stdin) 读取输入,但使用此选项,我们可以从特定的文件描述符读取输入。
-r − 通常,read 命令将反斜杠字符 () 视为转义字符,但使用此选项时,反斜杠将被视为常规字符。
-t timeout − 此选项设置读取输入的超时时间,尝试在给定的秒数内读取输入。如果在收到输入之前达到超时,read 命令将终止。
–p prompt − 在请求输入之前显示提示文本,以增强用户体验。
Read 命令有几种高级方法可用于自定义其行为。其中一种方法是使用"-t"选项,它允许我们为读取命令设置超时时间。当我们想要读取用户的输入,但又不想无限期地等待他们输入时,这个选项非常有用。
$ if read -t 10 -p "Enter your name: " name; then echo "Hello $name" else echo "Timed out!!" fi
在此代码中,使用"-t"选项将读取命令的超时设置为 10 秒。如果用户在 10 秒内输入其姓名,则该姓名将存储在变量"name"中,并且脚本将输出"Hello"后跟用户名。如果用户在 10 秒内未输入其姓名,则脚本将输出"Timed out!!"。
输入您的姓名:Somdeb Nath Hello Somdeb Nath
另一种高级方法是将多个值读入多个变量。为此,只需在"read"命令后列出变量名称,并用空格分隔即可。
$ read firstname middlename lastname Sk. Adil Hussain $ echo "Hello [$firstname] [$middlename] [$lastname]"
此代码提示用户输入名字、中间名和姓氏。输入后,这些值分别存储在变量"firstname"、"middlename"和"lastname"中。脚本将返回以下输出 -
Hello [Sk.] [Adil] [Hussain]
使用 read 命令从文件读取输入
当我们想要获取特定字段的数据时,从文件读取输入非常有用。例如,假设有一个包含自行车数据的文件 (file.txt) -
bike,model,year,vin Honda,CRF450R,2022,JH2PE1030NK200013 Kawasaki,Z400,2021,JKAZR2A10MA042809 Yamaha,YZF-R6,2020,JYARJ28E8LA000081
为了读取此文件,我们可以使用循环读取文件的每一行并进行处理。
$ while read line; do echo $line done < file.txt
在此代码中,"while"循环读取文件"file.txt"的每一行并将其存储在变量"line"中。然后,"echo"命令输出"line"的值。此循环将持续进行,直到读取文件中的所有行。
使用 read 命令读取文件输入
使用 read 命令时,我们还可以读取其他命令的输入,这对于处理大量数据非常有用。一个常见的用例是将命令的输出重定向到 read 命令的输入。
以下示例展示了如何重定向 ls 命令的输出并从根文件夹提取文件名及其访问权限 -
$ ls -l / | while read -r line; do
filename=$(echo $line | awk '{print $9}')
rights=$(echo $line | awk '{print $1}')
echo "File: $filename, Access Rights: $rights"
done
我们使用 ls -l / 命令列出根文件夹中的所有文件及其访问权限。输出通过管道传输到 while 循环,该循环使用 read 命令读取每一行。awk 命令从每一行中提取文件名和访问权限,并使用 echo 命令将其打印出来。
File: , Access Rights: total File: bin, Access Rights: lrwxrwxrwx File: boot, Access Rights: drwxr-xr-x File: cdrom, Access Rights: drwxrwxr-x File: dev, Access Rights: drwxr-xr-x File: etc, Access Rights: drwxr-xr-x
结论
read 命令是与 Linux 终端交互的强大工具。它可以用来读取用户或文件的输入,并且它有几个高级选项允许我们自定义其行为。掌握 read 命令,我们可以成为更高效、更高效的 Linux 用户。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

