我正在运行 find 命令,它返回了多个结果,但我只需要第一个结果。在谷歌上搜索后,我找到了“read”命令,但我没能搞明白,手册页也没有太大帮助。
答案1
输入您的命令(例如:)ls -l
,然后输入head
带有管道的命令,如下所示:
ls -l | head -1
注意:有关于“head”用法的文档
http://schillix.sourceforge.net/man/man1/head.1.html
-n number The first number lines of each input file is
copied to standard output. The number option-
argument must be a positive decimal integer.
-number The number argument is a positive decimal
integer with the same effect as the -n number
option.
如这里所示,并且正如评论中所提到的,这也取决于您的基于 unix 的发行版:
ls -l | head -n 1
答案2
我喜欢用很多方法来解决 unix 问题。下面是其他一些方法,假设它们command
被替换成您实际正在做的事情:
command | awk 'NR == 1 {print}'
command | sed -e 1q
TMP=`mktemp tempXXX`; command > ${TMP} ; ed ${TMP} << HERE
1p
HERE
command | split -1 - ; cat xaa ; rm -f x[a-z][a-z]
LINECOUNT=$(command | tee tempfile | wc -l | sed -e 's/ *//g'); \
tail -$((${LINECOUNT} - 1)) tempfile | diff -u - tempfile | grep '^+' | \
grep -v '^+++' | sed -e 's/^+//'
如果您的输出是固定长度的记录(这可能是真的;例如输入 80 个字符加上一个终端换行符):
command | dd ibs=81 count=1
有一次,我尝试从容量受限的存储设备(软盘)安装 Unix 系统。我们经常不得不想出富有想象力的方法来使用 1.44MB 软盘上有限的命令集 :)
答案3
您可以使用 more 命令来控制一次显示的文本量。
要解决您的问题:
将输出重定向到您创建的文件。
使用 1 个周期的 For 循环(计数器 = 1,每次 -1)。您需要使用标记来实现搜索功能。
For 循环将 ECHO 第一个命令。
删除您的文件。
将 FOR 循环的回声存储在变量中(可选)。
如果您需要,我可以提供一些使用定义。
答案4
如何使用read
$ echo -e "1\n2\n3\n4\n5" 1 2 3 4 5 $ echo -e "1\n2\n3\n4\n5" | 读取 n 时;执行 echo "n:$n" ;完成 n:1 人数:2 人数:3 人数:4 数量:5 $
有关 bash 如何工作的更多信息,请访问www.tldp.org在Advanced Bash-Scripting Guide
,
还有一个关于 bash 的指南Bash Guide for Beginners
。