Вопрос или проблема
Я хочу отобразить содержимое текстового файла в командной строке. Файл содержит всего 5-6 символов. Есть ли простой способ сделать это?
Используя cat
Поскольку ваш файл короткий, вы можете использовать
cat
.
cat имя_файла
Используя less
Если вам нужно просмотреть содержимое более длинного файла, вы можете использовать постраничный просмотр, такой как
less
.
less имя_файла
Вы можете сделать так, чтобы less
работал как cat
, когда вызывается для небольших файлов, и вел себя нормально в противном случае, передав ему флаги -F
и -X
.
less -FX имя_файла
У меня есть псевдоним для less -FX
. Вы можете создать свой собственный вот так:
alias имя_псевдонима="less -FX"
Если вы добавите псевдоним в вашу конфигурацию оболочки, вы сможете использовать его
вечно.
Используя od
Если ваш файл содержит странные или нечитаемые символы, вы можете использовать
od
для изучения символов. Например,
$ cat файл
(ÐZ4 ?o=÷jï
$ od -c тест
0000000 202 233 ( 320 K j 357 024 J 017 h Z 4 240 ? o
0000020 = 367 \n
0000023
Хотя все используют cat имя_файла
для вывода текста файла в стандартный вывод, основное назначение — это сшивание.
Из страницы man для cat:
cat – соединить файлы и вывести на стандартный вывод
Теперь cat подходит для печати файлов, но есть альтернативы:
echo "$(<имя_файла)"
или
printf "%s" "$(<имя_файла)"
Знаки ( )
возвращают значение выражения, в данном случае содержимое имя_файла, которое затем расширяется с помощью $
для echo
или printf
.
Обновление (для zsh
):
< имя_файла
Это делает именно то, что вам нужно, легко запоминается, но не работает в bash
.
Вот пример, который позволяет вам выбрать файл в меню, а затем распечатать его.
#!/bin/bash
select fname in *;
do
# Не забудьте "" вокруг второй части, иначе переводы строк не будут напечатаны
printf "%s" "$(<$fname)"
break
done
Для дальнейшего чтения:
BashPitfalls – cat file | sed s/foo/bar/ > file
Справочник Bash – Перенаправление
Инструменты для работы с текстовыми файлами в Unix — это базовые, повседневные команды:
В Unix и Linux для вывода всего содержимого файла
cat имя_файла.txt
или
more имя_файла.txt
или
less имя_файла.txt
Для последних нескольких строк
tail имя_файла.txt
Для первых нескольких строк
head имя_файла.txt
Вы можете использовать следующую команду для отображения содержимого текстового файла.
cat имя_файла
Одним из вариантов является использование more
например, more файл.txt
Однако у него нет всех функций, добавленных less
.
Простой пример заключается в том, что вы не можете прокрутить обратно в выводе. Обычно он был заменен на less – что было названо в шутку, потому что
less — это больше
Я всегда использую $ less "ваш файл здесь"
, так как это очень просто, предоставляет встроенную интерактивную команду grep
и дает вам простой в использовании интерфейс, который можно прокручивать с помощью стрелок.
(Он также включен почти в каждую систему *nix)
Если это большой файл, и вы хотите найти какую-то конкретную часть, вы можете использовать
cat имя_файла | grep текст_для_поиска -ni
Также вы можете использовать более интерактивный редактор Vim (или редактор vi, если у вас нет Vim):
vim имя_файла
Или
vi имя_файла
Vim/vi — отличный редактор, его также можно использовать в качестве ридера в “Нормальном режиме” или с помощью опции -R, у него есть много функций, которые помогут вам просматривать файл.
Используйте команду cat
, чтобы отобразить содержимое имени файла.
cat имя_файла
Используйте команду vim
, чтобы отредактировать файл.
vim имя_файла
Perl:
~$ perl -pe '' Сонет_18.txt
Raku:
~$ raku -pe '' Сонет_18.txt
Пример вывода:
Должен ли я сравнить тебя с летним днем?
Ты более прекрасен и более умерен.
Суровые ветры трясут милые почки мая,
И аренда лета имеет слишком короткий срок.
Иногда слишком жарко светит око небесное,
И часто его золотой цвет тускнеет;
И каждый красавец из красавиц иногда угасает,
По воле случая или изменчивого течения природы.
Но твое вечное лето не увянет
Ни утратит владение той красотой, которую ты имеешь,
Или Смерть будет хвастаться, что ты бродишь в его тени,
Когда в вечных строках ко времени ты растешь.
Пока мужчины могут дышать или глаза могут видеть,
Так долго будет это, и это дает жизнь тебе.
Очевидно, cat
будет самым популярным ответом на этот вопрос, но приведенные выше примеры кода также обеспечат желаемый вывод (файл любезно предоставлен Шекспиром, через Проект Гутенберг). Однако изучение основных однострочных команд, используя Perl и/или Raku, имеет свои преимущества, просто потому, что с их помощью можно сделать очень много работы.
Искать в файле, возвращать совпадающие строки:
~$ #Perl:
~$ perl -ne 'print if /вечный/' Сонет_18.txt
Но твое вечное лето не увянет
Когда в вечных строках ко времени ты растешь.
~$ #Raku:
~$ raku -ne '.put if /вечный/' Сонет_18.txt
Но твое вечное лето не увянет
Когда в вечных строках ко времени ты растешь.
Заменить один фрагмент текста на другой, перенаправить вывод в новый файл:
~$ #Perl:
~$ perl -pe 's/вечный/вечность/g' Сонет_18.txt > новый_сонет.txt
~$ #Raku:
~$ raku -pe 's:g/вечный/вечность/' Сонет_18.txt > новый_сонет.txt
Наконец, если вы столкнетесь с проблемами с символами Unicode в ваших файлах, Raku – хороший инструмент, который стоит держать под рукой, поскольку он был создан с нуля для работы с кодировкой UTF-8. См. последний URL ниже для получения деталей.
https://perldoc.perl.org
https://docs.raku.org
https://docs.raku.org/language/unicode
.
Ответ или решение
Для вывода содержимого текстового файла в командной строке существует несколько простых и эффективных методов.
Если ваш файл небольшой, содержащий всего 5-6 символов, вы можете воспользоваться следующими командами:
1. Использование команды cat
Команда cat
(сокращение от concatenate) является самой распространенной для отображения содержимого файла. Она предназначена для соединения нескольких файлов и вывода их на стандартный вывод. Чтобы вывести содержимое вашего текстового файла, выполните:
cat filename.txt
Это самый прямой и простой способ. В вашем случае, когда файл маленький, вывод будет моментальным.
2. Использование команды less
Если вы хотите иметь возможность прокручивать содержимое файла, особенно если файл будет больше, подходит команда less
.
less filename.txt
less
позволяет не только просматривать, но и осуществлять поиск по тексту, что может быть полезно для более крупных файлов. При использовании less
вы можете использовать клавиши стрелок для навигации по файлу. Вы можете добавить параметры -F
и -X
, чтобы less
вел себя как cat
для кратких файлов:
less -FX filename.txt
3. Использование команды head
и tail
Если вам нужно увидеть только первые или последние несколько строк файла, вы можете использовать команды head
и tail
:
head filename.txt # Для вывода первых 10 строк файла
tail filename.txt # Для вывода последних 10 строк файла
Эти команды также позволяют указать количество строк, которые нужно вывести:
head -n 5 filename.txt # Первые 5 строк
tail -n 5 filename.txt # Последние 5 строк
4. Использование команды more
Хотя more
является более устаревшей командой, чем less
, она также может быть использована для просмотра содержимого файла:
more filename.txt
more
предоставляет базовые функции прокрутки, однако она не позволяет прокручивать обратно, что делает ее менее предпочтительным выбором по сравнению с less
.
5. Использование Perl или других скриптовых языков
Если у вас есть опыт работы с Perl или Raku, вы можете воспользоваться ими для отображения содержимого файла:
perl -pe '' filename.txt
Или для Raku:
raku -pe '' filename.txt
Эти команды предоставят аналогичный вывод с помощью простейших скриптов.
Заключение
В зависимости от ваших нужд вы можете выбрать наиболее подходящий для вас метод. Если вы работаете с небольшими текстовыми файлами, команда cat
станет самым простым и быстрым решением. Для больших файлов стоит рассмотреть less
, head
и tail
для более удобного управления выводом. Используя Perl или Raku, вы получите дополнительные функции, которые могут быть полезны для более сложных задач.