Прежде всего, спасибо за ваш вклад в этот форум! Я перешел на Ubuntu несколько месяцев назад по рабочим причинам, и эти страницы очень помогают!
Теперь, ближе к делу: я пытался сосчитать определенный шаблон в текстовом файле: grep -c [pattern ] [имя файла] Теперь: шаблон был: знак «больше чем», то есть:> таким образом, команда, которую я дал, была: grep -c> [имя файла] Я получил это сообщение: Использование: grep [ОПЦИЯ] ... PATTERN [ФАЙЛ ] ... Попробуйте `grep --help 'для получения дополнительной информации.
Но теперь текстовый файл был пуст! (к счастью, у меня была резервная копия ...). Зачем? Я ошибся в какой-то предыдущей операции или это была последняя команда, которую я дал? Я просто пытаюсь понять это.
Предыдущий ответ технически точен, но я думаю, что он обходит знания пользователей о том, что они пытались сделать. Давайте сосредоточимся на том, что вы сделали неправильно, а затем перепишем команду, чтобы вы могли вместо этого найти записи «>» в файле.
(Объяснение причин сброса файла). Если вы используете> в конце строки (попробуйте «ls> directory.txt»), вы уничтожите directory.txt [если он существует] и введите результаты команды. Если вы используете >>, он просто добавляет (добавляет в конец) любой существующий файл. "grep" не осознавал, что вы на самом деле искали ">", вместо того, чтобы хотеть передать вывод в файл, который вы хотели найти. В результате он просто ничего не выгружал в файл, в котором были данные.
В вашем случае вы, вероятно, хотели использовать это вместо:
grep -c -- '>' filename.ext
Дайте нам знать, если это решит вашу проблему!
Вы смотрите перенаправление вывода (Bash) . Перенаправляя обычный вывод 'stdout' на filename
, вы перезаписываете его. Вывод ошибки: 'stderr' все еще отображается (хотя в вашем терминале по умолчанию). Это был текст справки, который вы видели.
Чтобы фактически использовать символ >
в grep в качестве символа для сопоставления, экранируйте его в своей оболочке (Bash), например
grep -c \> myfile
Поместив его в кавычки, '>'
также будет работать.
Фрагмент приведенной выше ссылки объясняет перенаправление в более общем виде:
COMMAND_OUTPUT >
# Redirect stdout to a file.
# Creates the file if not present, otherwise overwrites it.
ls -lR > dir-tree.list
# Creates a file containing a listing of the directory tree.
[..]
1>filename
# Redirect stdout to file "filename."
1>>filename
# Redirect and append stdout to file "filename."
2>filename
# Redirect stderr to file "filename."
2>>filename
# Redirect and append stderr to file "filename."
&>filename
# Redirect both stdout and stderr to file "filename."