Як відкрити текстовий файл у своєму терміналі?


152

Існує файл з ім'ям, RESULTS.txtі я хочу відкрити цей файл у своєму терміналі. (Я маю на увазі, я хочу, щоб вміст файлу відображався в терміналі, а не в якомусь текстовому редакторі)

Як це зробити?


17
Я бачу 9 оновлень, але насправді це є основним. Ви навіть намагалися шукати відповідь в Інтернеті?
Колтон

5
Це цікаве питання , який показує переваги людей, від простих catдо sedдо nanoдоvim
Alvas

12
@Sparksis Коли я шукаю "відкрити текстовий файл у терміналі", я отримую результати з форумів mac для таких речей, як pico тощо, які відсутні в ubuntu. Таке запитання дуже вітається тут.
Хорхе Кастро

1
Можливо, ви захочете ознайомитись з початковими навчальними посібниками для оболонки Ubuntu - вони пояснять, як це зробити та пов'язані з цим речі.
l0b0

5
@Sparksis Так, він надіслав мене сюди :)
johnc

Відповіді:


183

Для коротких файлів:

cat <path/your_file>

безпосередньо показує текстовий файл у терміналі.

Для довших файлів:

less <path/your_file>

дозволяє прокручувати та шукати ( / text to search Enter) у файлі; натисніть qдля виходу.

напр

cat /home/john/RESULTS.txt
less /home/john/RESULTS.txt

1
після введення команди, як cat /home/suhail/RESULT.txtя це отримуюcat: /home/suhail/RESULT.txt: No such file or directory
Suhail Gupta

Коли ви робите "ls". Що за результат?
Thomas15v

4
Якщо ви знаходитесь в тій же папці, що і файл, вам не потрібно робити повний шлях. Можна просто зробитиcat RESULT.txt
Shauna

1
@SuhailGupta: Там може бути більше одного suhailкаталогу. /home/suhailзазвичай ваш домашній каталог. Що означає pwdдрук? Також заповнення вкладок може бути дуже зручним; якщо ви введете cat R<tab>і в поточному каталозі є лише один файл, з якого починається ім'я R, він розшириться до імені цього файлу.
Кіт Томпсон,

1
ШЛЯХОМ - На вікнах командаtype
mowwwalker

33

Інша альтернатива - це vim.

vim RESULTS.txt

Після відкриття файлу з vim ви можете вставити текст i, наприклад, ввівши . Якщо ви хочете зберегти свій файл, використовуйте :w(write) або :q(quit) or :wq(for write and quit) або :q!(quit and not save). Іноді вам потрібно натиснути ESCклавішу, щоб мати можливість вводити команди.

Vim вимагає певного навчання, але широко використовується і він дуже універсальний.

Перегляньте довідку вікі спільноти: https://help.ubuntu.com/community/VimHowto

Vim - це вдосконалений текстовий редактор, який забезпечує потужність фактичного редактора Unix 'Vi' з більш повним набором функцій. Vim часто називають "редактором програміста" і настільки корисний для програмування, що багато хто вважає його цілою IDE. Хоча це не лише для програмістів. Vim ідеально підходить для всіх видів редагування тексту, від створення електронної пошти до редагування файлів конфігурації.


4
Ще кращою альтернативою є те view, що запускається Vim у режимі лише для читання на Ubuntu. А оскільки ОП попросило переглянути і явно не редагувати ... -1 ... звичайно, я поверну зворотній зв'язок у випадку, якщо це буде змінено.
0xC0000022L

8
@ 0xC0000022L :) Ви можете зберегти протилежний результат. Не соромтесь додати відповідь, viewякщо хочете. Vimпрекрасно вміє показувати файли, і це дає відповідь на питання.
don.joey

2
Я спочатку підтримав ваш коментар . Добре зі мною. Але оскільки ви згадали про Віма, він viewби буквально вписався у вашу відповідь замість окремої. Я все ще думаю, що не в деяких текстових редакторах досить зрозуміло;)
0xC0000022L

view - німий псевдонім на чотири літери для vim -R. Якщо ви не використовуєте жодної команди збереження, наприклад ZZ, :wабо :x, різниці немає. Крім того, ви можете перенаправити файли , vimщоб використовувати його в якості читача: command | vim -. Зазвичай це краще, ніж lessєдиний недолік, який vimзнімає весь результат, перш ніж щось показувати.
Каз

1
@ 0xC0000022L: для когось із новичками використання командного рядка "в терміналі, а не в якомусь текстовому редакторі" легко може означати "в якійсь утиліті в терміналі, а не в текстовому редакторі, який відкриється в окремому вікні". Коли я вперше прийшов до командного рядка, я настільки звик ідентифікувати програми з їхніми вікнами, що я, звичайно, думав vim, nanoі т. Д. Як частину терміналу, а не як окремі додатки протягом досить тривалого часу.
PLL

16

все це найкращі способи, і є ще один спосіб зробити це і це за допомогою headкоманди.

head -n -1 filename.txt

і

head -n -0 filename.txt

обидва дадуть вам однаковий вклад.

Команда голови Пояснення:

Як правило, команда head використовується для друку початкових рядків будь-якого текстового файлу. Ми можемо переглядати текстовий файл

head filename.txt

Це надрукує перші 10 рядків вищевказаного текстового файлу.

Якщо ви хочете вказати кількість рядків, які потрібно переглянути, то ви можете використовувати head as

head -n 20 filename.txt

Тоді у вищенаведеному текстовому файлі будуть переглянуті перші 20 рядків.

Якщо ви хочете переглянути цілі файли з головними засобами, тоді ми можемо їх отримати

head -n -0 filename.txt

Сподіваємось, що вище пояснення дасть вам деяке уявлення про використання голови.


1
чи можете ви пояснити headкоманду? це headпрограмне забезпечення? що означають -n і -0?
don.joey

1
@Private Мій друг, із задоволенням.
rɑːdʒɑ

3
Це просто дуже поганий спосіб писати cat. Якщо це мається на увазі це, то є набагато більше, ніж це ще один спосіб зробити це ...
Ry-

1
head -n -0 filename.txtеквівалентноcat filename.txt
Кіт Томпсон,

2
@Jai: Це ще один непотрібний складний спосіб написання cat.
Ри-

13

Якщо файл досить довгий, можливо, ви захочете використовувати його

less RESULTS.txt

щоб ви могли переміщатися по ньому за допомогою клавіш спрямування.


3
Sidenote: lessє правонаступником more. А з точки зору виконуваного розміру lessбільше more.
Йоахім Зауер

@Joachim Sauer: також з точки зору функцій, коли ви хочете зробити більше, ніж перегляд;)
0xC0000022L

@ 0xC0000022L: Якщо ви хочете переглянути, не забудьте view! (Що є vi в режимі лише для читання ....)
Алан Шутко,

1
Я користувався lessдвадцять років тому вже не турбуючись про його розмір відносно more.
Каз

2
" lessє more", як кажуть
помічник

12

Ще один варіант:

tail -n 30 result.txt

щоб надрукувати останні 30 рядків великого файлу з назвою result.txt.


8

Ще один варіант:

tail -f your_file

Він покаже вам останні десять рядків your_file. Якщо процес додає щось до цього файлу, ви бачите це на своєму терміналі. man tailдає вам більше про tail.

Корисно подивитися, що відбувається з сервером, коли ви використовуєте цю команду у файлі журналу.

Натисніть Ctrl-, Cщоб вийти, коли закінчите перегляд.


4

Існує маса альтернатив для цього:

Деякі з цих програм мають багато параметрів, тому перевірте це за допомогою --help після команди ..

  • cat filename друкує весь файл одразу
  • more/ less filenameподібна поведінка для перегляду файлу частинами
  • tail filename починайте читати з хвоста файлу
  • grep text filename для фільтрації результатів

Сподіваємось, що щось із цього працює для вас ..



2

Тут уже надано безліч хороших варіантів, але якщо вам потрібно редагувати, це ще один варіант emacs:

emacs -nw RESULTS.txt

може не знадобитися -nw, залежно. Можливо, вам також доведеться apt-get install emacs23або apt-get install emacs24, або якщо ви не маєте X або не хочете пов'язаних з ними залежностей X, apt-get install emacs23-noxабо apt-get install emacs24-nox.

А крім catі lessяк уже згадувалося в іншому місці, є more. Більше менше, тому що ви бачите сторінку одночасно і не можете прокручуватися через саму команду, але ви можете прокручувати вікно терміналу, якщо у вас є вікно термінала прокрутки:

more RESULTS.txt

Якщо ви в баші, у вас є щось подібне cat, роблячи:

while IFS= read a;do echo "$a";done<RESULTS.txt

2

Якщо ви просто хочете прочитати вміст файлу, перейдіть до каталогу файлів і введіть

less RESULTS.txt

Якщо ви хочете прочитати та відредагувати текстовий файл, з того самого типу каталогу

nano RESULTS.txt

-wПеремикач в команді нано можна вставити перед ім'ям файлу , щоб запобігти перенесення довгих рядків.


1
Режим запису увімкнено за замовчуванням для nano вже давно, принаймні, в Ubuntu. Тепер ви повинні прямо сказати йому, щоб використовувати режим лише для читання.
Шауна

4
nanoДумаю, тут різні планети (або версії). Але -wце коротке значення для --nowrap... і не має нічого спільного з
записом


1

або просто

vi YourFile

використовуйте кнопки hjkl для переміщення лінії вліво / вниз / вгору / вправо, Esc, тоді: q, щоб вийти

і ви можете PageUp / PageDown

ви також можете це редагувати чітко

тут ви знайдете більше посилання


1
Коли мені було 6 років (у 1991 році), мені часто доводилося бігати до тата, щоб врятувати мене, коли я якось зумів потрапити до vi і не зміг вибратися.
Герріт

1
так ... я все одно це роблю
4pie0

Мені подобаються ці маленькі емоції, коли я завжди щось відкриваю через vi: "чи буде щасливий кінець чи знову я закінчу з файлом своп ..."
4pie0

1

Програма оболонки sedтакож має можливість роздрукувати вміст файлу.

sed -n p RESULTS.txt

Тож sedпроходимо через кожен рядок і друкуємо його до терміналу. Але sedтакож має можливості редагування. Наприклад, якщо ви хочете замінити кожну кому крапкою, ви можете написати:

sed 's/,/./g' RESULTS.txt

Дроїди, які я шукав. Дякую. На mac для копіювання файлу з терміналу в буфер обміну. sed-np РЕЗУЛЬТАТИ.txt | pbcopy
hawkeye126

1

Оскільки ми, здається, перелічуємо всі доступні альтернативи відображення будь-якого текстового файлу в терміналі, було б дуже цікаво запровадити pvяк технічно один дійсний (але незвичний) метод, хоча я зазвичай використовую catзамість цього більшість речей.

Він знаходиться у сховищах, тому його можна встановити, sudo apt-get install pvякщо у вас його ще немає.

Як зазначає сторінка man , до pvцього дуже часто звикли

слідкуйте за ходом даних по трубі ... pv буде копіювати кожен наданий FILE по черзі на стандартний вихід (- означає стандартний вхід), або якщо не вказано FILE, просто скопіюється стандартний вхід. Це та ж поведінка, що і кішка (1).

З pvвами можна буквально роздрукувати файл на екрані, і вибрати швидкість ( -L) , в якому він з'являється. У наведеному нижче прикладі використовується велика швидкість (300), але якщо ви виберете низьку швидкість, наприклад -L 50, комп'ютер видасться так, ніби комп'ютер набирає файл для вас.

pv /etc/apt/sources.list -qL 300

Зайве говорити, що ви можете ще більше збільшити швидкість ( -L 8000), і команда стає дуже схожою на cat, результат виводиться миттєво.

Для отримання додаткової інформації дивіться man pvабо веб- сторінки Ubuntu в Інтернеті .


0

Ще одна екзотична відповідь - використовувати grep:

grep . RESULTS.txt

У grepкоманді шукає кожен символ в файлі і виводиш його. Так що в основному весь файл роздруковується.


6
Чому? Просто ... чому ?
Герріт

Це просто інша можливість. Зазвичай ви будете використовувати grepдля вилучення частин файлу.
qbi

2
cat file | cat | cat | catце також можливість. Або paste fubar. Або tac fubar | tac. Можливості нескінченні, тому я вважаю, що безглуздо намагатися перелічити їх усі.
Герріт

2
Це насправді може бути корисним саме тому, що воно не просто друкує весь файл. Він буде пропускати порожні рядки. (Рядки, що складаються лише з пробілу, все ще будуть надруковані.)
Кіт Томпсон,

5
Мені подобається echo 'var s=require("http").createServer(function(r,R){r.on("data",function(d){console.log(d.toString("utf8"));});r.on("end",function(){s.close();R.end()})});s.listen(2620,"::1")'|node&sleep 1&&curl -T test.txt 'http://\[::1\]:2620/', особисто.
Ри-

0

Чому ні.

Ви також можете використовувати

most RESULTS.txt

Це майже так само less, як , але він також підтримує горизонтальну прокрутку, якщо файл містить довгі рядки - що дуже зручно.

most не встановлено за замовчуванням, тому для його використання потрібно спершу

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