Как я могу отобразить содержимое текстового файла в командной строке?


132

Я хотел бы отобразить содержимое текстового файла в командной строке. Файл содержит только 5-6 символов. Есть простой способ сделать это?

Ответы:


195

С помощью cat

Поскольку ваш файл короткий, вы можете использовать cat.

cat filename

С помощью less

Если вам нужно просмотреть содержимое более длинного файла, вы можете использовать пейджер, например less.

less filename

Вы можете lessвести себя как catпри запуске на небольших файлов и ведут себя нормально , но иным путем передачи его в -Fи -Xфлаги.

less -FX filename

У меня есть псевдоним для less -FX. Вы можете сделать его себе так:

alias aliasname='less -FX'

Если вы добавите псевдоним в конфигурацию оболочки , вы можете использовать его навсегда.

С помощью od

Если ваш файл содержит странные или непечатные символы, вы можете использовать odдля проверки символов. Например,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

+1, также sed -n l fileможет быть полезным.
энзотиб

1
Имеет ли lessкакие-либо явные преимущества по сравнению с другими программами пейджера pg, или это сводится к личным предпочтениям?
Сэм Вайнберг

@SamWeinberg: lessимеет больше возможностей, чем pg. Взгляните на less(1)и pg(1)страницы. Есть и другие пейджеры. Взгляните на unix.stackexchange.com/questions/81129/… . lessэто, пожалуй, самый широко используемый пейджер, но какой вы используете, зависит от личных предпочтений.

не забудь moreи most!
Рудольф Олах

29

Даже если каждый использует cat filenameдля печати текстовых файлов в стандартном выводе первой цели является жуликом кошка enating. Со страницы руководства кошки:

cat - объединяет файлы и печатает на стандартный вывод

Теперь cat подходит для печати файлов, но есть альтернативы:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

( )Возвращает значение выражения, в этом случае содержимое файла , который затем расширяется $для echoили printf.

Обновить:

< filename

Это делает именно то, что вы хотите, и легко запомнить.

Вот пример, который позволяет вам выбрать файл в меню и затем распечатать его.

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

Для дальнейшего чтения:
BashPitfalls - файл cat | sed s / foo / bar /> file
Bash Reference - Перенаправление


Ваше обновление: « < filenameэто именно то, что вы хотите, ...» вводит в заблуждение. В целом, хотя это интересная дискуссия об альтернативах, я думаю, что catэто проще.
X Tian

Bare < filenameне отображает содержимое файла, но отображает cat filename.
Ярно

Вы tee < filenameтоже можете использовать .
Ярно

2
+1 за echo "$(<filename)"башизм. Здесь этого недостаточно.
Йокай

Это отличная идея для использования Linux Internal Command с echo "$(<filename)". Спасибо ...
Реза Харасани

9

Вы можете использовать следующую команду для отображения содержимого текстового файла.

имя файла кошки 

Для получения дополнительной информации cat, запустите man cat.

9

Инструменты для обработки текстовых файлов в Unix - это основные повседневные команды:

В Unix и Linux, чтобы распечатать весь контент в файл

cat filename.txt

или же

more filename.txt

или же

less filename.txt

За последние несколько строк

tail filename.txt

Для первых нескольких строк

head filename.txt

4

Одним из вариантов является использование more

например more file.txt

Однако он не имеет все функции, добавленные less.
Одним простым примером является то, что вы не можете прокрутить обратно вверх в выводе. Как правило, он был заменен меньшим - который был назван в шутку, потому что

меньше - больше


3

Я всегда использую $ less "your file here", так как он очень прост, предоставляет встроенную интерактивную grepкоманду и предоставляет вам простой в использовании интерфейс, который вы можете прокручивать с помощью клавиш со стрелками.

(Он также включен почти в каждой системе * nix)


lessявляется overkill-версией more(сравните man lessс man more), и для меня она имеет две досадные особенности: 1) она переключается на альтернативный экранный буфер, когда меньше заканчивается, файл, который вы только что просматривали, исчезает 2) в EOF вы должны явно ввести q(Я знаю, есть вариант для этого). Поэтому одним из моих первых действий в новой среде является настройка export PAGER=/bin/moreв моем профиле и постоянное использование more.
ot--

@ ott--: 1) Попробуйте -Xфлаг. 2) Попробуйте -Eфлаг. lessимеет moreрежим эмуляции. Вы можете включить его, установив LESS_IS_MOREпеременную среды. Вы можете прокрутить вверх в moreрежиме эмуляции.


Хотя в целом я согласен, что lessэто слишком сложно. Его способность запускать внешние команды является прекрасным примером его чрезмерной сложности.

@EvanTeitelman Я всегда считал, что функциональность grep чрезвычайно полезна, @ ott - Я считаю, что благодаря эмуляции moreи множеству дополнительных функций, она отлично справляется со своей работой.
SG60

2

Если это большой файл, и вы хотите найти какую-то конкретную часть, вы можете использовать

 cat filename | grep text_to_search -ni 

Также вы можете использовать более интерактивный редактор Vim (или редактор vi, если у вас нет Vim):

 vim filename
Or
 vi filename

Vim / vi - отличный редактор, его также можно использовать для чтения в «Нормальном режиме» или с помощью опции -R, он имеет много функций, которые помогут вам при просмотре файла.


Короче vim -Rесть view. Но имейте в виду, что он не любит перенаправления, как обсуждалось в xargs и vi - «Ввод не из терминала» .
manatwork

спасибо @manatwork за головы! Я недавно начал использовать Vim, и он мне нравится из-за его нескольких функций. Что касается перенаправлений, я забыл об этом, спасибо за напоминание. На данный момент я работаю на удаленной виртуальной машине, где я использую ssh без интерфейса GUI, поэтому Vim очень полезен, когда любой другой редактор GUI не может работать, поэтому я подчеркнул Vim здесь.
Не беспокойся, дитя,

1

Используйте команду cat для отображения содержимого имени файла. имя файла кошки

Используйте команду vim для редактирования файла. VIM имя файла

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.