Я запускаю команду find, которая возвращает несколько результатов, но мне нужен только первый результат. Небольшое приближение привело меня к команде "читать", но я не мог понять это, и страница справочника оказалась не слишком полезной.
4 ответа
введите вашу команду (пример: ls -l), а затем команду head с каналом, например:
ls -l | голова -1
Мне нравится много способов решения проблем 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,44 МБ :)
Вы можете использовать команду more для управления количеством текста, отображаемого за раз.
Чтобы решить вашу проблему:
Перенаправьте вывод в файл, который вы создаете.
Используйте For Loop с 1 циклом (счетчик = 1, -1 каждый раз). Вам нужно использовать токены для функции поиска.
Цикл For ECHO будет первой командой.
Удалить ваш файл.
Сохраните эхо цикла FOR в переменной (необязательно).
Я могу дать некоторые определения использования, если вам это нужно.
Как использовать read
$ echo -e "1\n2\n3\n4\n5" 1 2 3 4 5 $ echo -e "1\n2\n3\n4\n5" | while read n; do echo "n:$n" ; done n:1 n:2 n:3 n:4 n:5 $
Более подробную информацию о том, как работает bash, можно найти на сайте www.tldp.org в Advanced Bash-Scripting Guide
по написанию сценариев ,
есть еще одно руководство по bash Bash Guide for Beginners
.