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


131

Я хотів би відобразити вміст текстового файлу в командному рядку. Файл містить лише 5-6 символів. Чи є простий спосіб це зробити?

Відповіді:


194

Використання 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може бути корисним.
enzotib

1
Чи lessє якісь явні переваги перед іншими програмами пейджера, як-от pg, чи це просто зводиться до особистих переваг?
Сем Вайнберг

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

не забувайте moreі most!
Рудольф Олах

29

Навіть якщо кожен використовує cat filenameдля друку текстових файлів в стандартному виведення першої мети є шахраєм кішка enating. Зі сторінки чоловічої коти:

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 - файл з котами | sed s / foo / bar /> файл
Довідка Bash - Перенаправлення


Ваше оновлення: " < filenameсаме те, що ви хочете, ..." вводить в оману. Загалом, хоча це цікава дискусія щодо альтернатив, я думаю, що catце простіше.
X Tian

Bare < filenameне відображає вміст файлу, але cat filenameробить.
jarno

Ви також можете використовувати tee < filename.
jarno

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

Це відмінна ідея для використання Linux Internal Command з відлунням "$(<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весь час.
ott--

@ ott--: 1) Спробуйте -Xпрапор. 2) Спробуйте -Eпрапор. lessмає moreрежим емуляції. Ви можете ввімкнути це, встановивши LESS_IS_MOREзмінну середовища. Ви можете прокручувати вгору в moreрежимі емуляції.

Дивіться також: unix.stackexchange.com/questions/81129/…

Хоча, загалом, я згоден, що 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 за голови! Нещодавно я почав використовувати Vim і мені це подобається через кілька його особливостей. Щодо переадресації, я забув про це, дякую за нагадування. На сьогоднішній день я працюю над віддаленим VM, де я використовую ssh без інтерфейсу GUI, тому Vim дуже корисний, коли будь-який інший редактор GUI не може працювати, тому я наголосив на Vim тут.
Не хвилюйся дитина

1

Використовуйте команду cat для відображення вмісту імені файлу. ім'я файлу кішки

Використовуйте команду vim для редагування файлу. ім'я файлу vim

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.