Как прервать cat
Собираю LFS, сделал опечатку в файле, попытался вернуть все назад, получилось вот что:
Т.е. я не могу выйти из режима записи, как это сделать?
Тогда перейди на другую вкладку, запусти ps aux|grep cat, найди нужный процесс, найди его process id и запусти kill <process-id>.
PS на всякий случай — в предыдущем посте подразумевались обычные кавычки, а не ёлочки
How to kill a runaway cat?
Many times I accidentally run the cat command on files that have contents up to few thousand lines.
I try to kill the cat command with Ctrl + C or Ctrl + Z , but both only take effect after the total output of cat is displayed in the terminal, so I have to wait till cat gets completely executed.
Is there a better solution that avoids waiting? Because sometimes the files are up to size of 100MBs, and it gets irritating to wait for it.
I am using tcsh .
7 Answers 7
If the file(s) in question contain lots of data, sending the signal can actually get to cat before it finishes. What you really observe is the finite speed of your terminal — cat sends the data to the terminal and it takes some time for the terminal to display all of it.
Remember that it usually has to redraw the whole output window for each line of output (i.e. move the contents of the window one line up and print the next line at the bottom). While there are techniques and algorithms to make this faster than if it was done the straightforward way, it still takes some time.
Thus, if you want to get rid of the output as quickly as possible, hide the terminal window, because then (usually) no actual redrawing takes place. In a graphical environment this can mean either minimizing the window or switching to a different virtual desktop, on the Linux virtual console just switch to another one (( Ctrl +) Alt + Fx ).
Also notice that if you ran this over a slow network link (SSH over a GSM connection, for example), you would definitely see much less output before cat is killed by the signal, because the speed of the terminal redrawing wouldn’t be the bottleneck any more.
? to see the available options (
Terminal Setup
I reckon this is more to do with the way the terminal is set up, than with any buffering issue. Check the output of stty -a | grep intr , you should have intr = ^C; on the output line if Ctrl — C is enabled at the tty / pty . If it isn’t, you can use stty intr ^C to enable it. Add the line to your .tcshrc or .login to make it permanent (or delete the line that changes it in the first place!).
Failing Ctrl — C , you can also try sending SIGQUIT with Ctrl — \ . If this doesn’t work, again check stty -a | grep quit to see if it is properly set up.
Terminal Emulator Setup
Also check the settings for your terminal emulator (if you are using one), it may be that there is a shortcut set up at this level (maybe for copy or something) and the Ctrl — C does not reach the pty level. A shortcut could also be set up somewhere else in your desktop environment or Window system.
A good test on Linux if you are using a terminal emulator is to switch to a Linux console ( Ctrl — Alt — F1 ), login there and see if the same behaviour occurs. If it doesn’t then this suggests the problem lies with your Window system or terminal emulator.
It could be an issue with the delay between data being read from the pty device as suggested by peterph. But if this is the case and you do actually have to wait minutes for the data to be displayed, then surely the terminal emulator is buffering way too much data (or your PC is very slow). The answer would be to find a way to reduce that buffer size in your terminal emulator settings or use a different one.
Extra Tip
Something else worth adding; I usually end up in the runaway cat situation when if I accidentally cat a binary file. The other effect of this can be to screw up your terminal settings (if the binary data happens to match various terminal escape codes which it often does). If tput is installed (usually is by default), you can avoid having to restart with the following command:
Использование кошек
Этот инструмент является частью пакета GNU coreutils. Исходный код GNU coreutils легко доступен на GitHub.
- Отображение содержимого файла
Я создал текстовый файл со случайными данными. Данные были получены из генератора случайных байтов с помощью Random.org.
Давайте проверим содержимое файла с помощью «кота».
Инструмент «кошка» может распечатать вывод любого файла, который текущий пользователь имеет разрешение на чтение. Например, любой пользователь может просто «прочитать» файл «/ etc / passwd».
кошка / etc / passwd
Однако он не может получить доступ к тому, на что только «root» имеет разрешение. В этом случае файл «sudo_random.txt »является точной копией исходного« random.txt », но только« root », имеющий к нему доступ.
- Содержимое нескольких файлов
Структура этой команды аналогична базовому использованию слова «кошка». Все, что вам нужно сделать, это передать файлы с их местоположением один за другим.
Это может быть выполнено и по-другому.
- Создайте файл с помощью «кота»
На самом деле это не основная функция команды «cat». Тем не менее, он может довольно легко справиться с этой задачей.
После выполнения этой команды вы можете ввести все, что хотите, а затем нажать «Ctrl + D». Он запишет пользовательский ввод в файл.
Если вам нужен только пустой файл, нажмите «Ctrl + D», ничего не вводя.
- «более или менее»
Если вы обращаетесь к слишком большому файлу, то прокрутка вывода команды «cat» становится действительно очень раздражающей. В этом случае мы можем перенаправить вывод на «больше» или «меньше» для большего удобства.
Например, демонстрационный текстовый файл, который я использую, довольно большой. Если вы работаете с файлами журнала, это знакомый сценарий. В таких ситуациях «больше» или «меньше» может иметь значительную ценность. Инструмент «Дополнительно» отображает вывод по одной странице за раз. Инструмент «меньше» похож на «больше», но с дополнительными функциями. Однако мы не собираемся углубляться в эти инструменты.
Давайте перенаправим вывод «cat» на «more».
Чтобы выйти из просмотра, нажмите Q.
Для конвейерной обработки вывода в «меньше» используйте эту команду.
То же, что и «больше», для выхода нажмите Q.
- Номера строк
Когда «кошка» отображает контент, нумерация строк не отображается. Используйте флаг «-n».
Вы также можете использовать это с «больше» или «меньше».
При использовании флага «-n» «cat» показывает нумерацию всех строк, включая пустые и непустые. Однако, используя флаг «-b», «cat» будет нумеровать только непустые.
Примечание. Этот флаг по умолчанию имеет приоритет над «-n».
- Конец линии
Как насчет замены «конца строки» на $?
Здесь «cat» печатает вывод с номером строки и заменяет «конец строки» символом $.
- Вкладка Display
Используя следующую команду, вы можете поменять местами табуляторы с помощью символа «^ I».
В хаосе персонажей трудно найти эти вкладки, верно?
- Подавить повторяющиеся пустые строки
В некоторых случаях между содержимым может быть несколько пустых строк. В этом случае используйте флаг «-s», чтобы удалить пустые строки в выводе.
- Перенаправить вывод
Мы можем использовать стандартный формат вывода, чтобы перенаправить вывод любой команды «cat» в файл. Если файл уже существует, он будет перезаписан. В противном случае он будет создан.
Эту команду также можно использовать для объединения содержимого нескольких файлов в один файл.
Если вы не хотите перезаписывать содержимое существующего файла, вы можете добавить вывод «кошка» в конце.
Как и раньше, можно добавить содержимое нескольких файлов в один и тот же файл.
- Отображение непечатаемых символов
Текстовый файл — это не только все отображаемые символы. Есть ряд скрытых символов, которые нельзя распечатать. Если вам нужно их показать, используйте флаг «-v».
«Кошачья» альтернатива
Хотя «кошка» является важной частью каждой системы UNIX / Linux, существуют надежные альтернативы печати содержимого текстового файла. Здесь я покажу «летучую мышь» — «кошачий» клон с крыльями!
Инструмент «летучая мышь» доступен во всех основных дистрибутивах Linux. Придумывает свой стиль. Вы можете настроить вывод с помощью тем, пейджера, форматов и многого другого.
Посмотрим, как «летучая мышь» показывает содержимое моего демонстрационного файла.
Как видите, «летучая мышь» по умолчанию показывает номер строки и имя файла. Более того, по умолчанию он использует «более» -подобную прокрутку. Чтобы выйти из окна, нажмите Q.
Посмотрим, успешно ли «летучая мышь» скопирует файл.
Используя «летучую мышь», можно без проблем выполнять все «кошачьи» функции. Полную документацию можно найти на официальной странице bat GitHub.
Последние мысли
Есть множество сценариев, в которых могут быть полезны слова «кошка» и «летучая мышь». Из всех доступных опций нет ничего лучше, чем справочная и информационная страницы.
человек летучая мышь
информация летучая мышь
Ваше творчество — единственный ограничивающий фактор с точки зрения раскрытия максимального потенциала этих инструментов.
Игры
Игры
Игры
Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий
Команда Cat в Linux: Использование и Примеры
Команда cat в Linux — одна из самых полезных утилит, которые обязательно стоит выучить. Являясь сокращением английского слова «concatenate» (конкатенация), она позволяет создавать, объединять, а также выводить содержимое файлов в командной строке или в другом файле.
Утилита не требует дополнительных установок, так как предварительно установленна в пакете coreutils в любой системе на основе Debian или Red Hat.
В этом уроке мы рассмотрим общие способы использования команды Linux cat, объясняя её особенности.
Команда Cat: Синтаксис
Прежде чем мы начнём углубляться в тему статьи, мы должны войти в VPS через SSH и быстро проверить основной синтаксис. Команда принимает имя файла в качестве аргумента вместе с опциями, уточняющими отдельные операции.
Чтобы найти все доступные опции, просто введите cat –help в терминале.
Создание Файла с Помощью Команды Cat
С помощью команды cat вы можете быстро создать файл и поместить в него текст. Для этого используйте оператор > redirect, чтобы перенаправить текст в файл.
Файл создан, и вы можете начать заполнять его текстом. Если вы хотите добавить несколько строк, просто нажимайте Enter в конце каждой строки. Когда вы закончите, нажмите CTRL+D, чтобы выйти из файла.
Чтобы убедиться, что файл действительно создан, просто введите в терминале следующую команду ls:
Просмотр Содержимого Файла с Помощью Команды Cat
Это один из самых базовых примеров использования команды cat. Без каких-либо дополнительных опций команда прочитает содержимое файла и выведет его в консоли.
Для удобного просмотра длинных файлов, используйте параметр | more, который позволит скролить выходные данные по одному скрину за раз:
Также вы можете отобразить содержимое более одного файла. Например, чтобы вывести содержимое всех текстовых файлов, введите в терминале следующую команду:
Редирект Контента с Помощью Команды Cat
Вы можете не только отобразить содержимое файла в консоли, но и перенаправить вывод в другой файл, используя параметр >. Вот пример команды:
Если файл назначения не существует, команда создаст его или перезапишет существующий с таким же именем.
Чтобы добавить содержимое в файл назначения, используйте опцию >>:
Конкатенация («Склеивание») Файлов с Помощью Команды Cat
Команда cat также позволяет объединять несколько файлов в один. По сути это работает так же, как и функция перенаправления выше, но с несколькими исходными файлами.
Как и ранее, приведенная выше команда создаст файл назначения, если он не существует, или перезапишет существующий файл с таким же именем.
Обозначение Конца Строки Командой Cat
С помощью команды cat также можно обозначить конец строки. Маркер конца строки — символ $. Чтобы реализовать эту функцию, используйте параметр -E:
Нумерация Строк с Помощью Команды Cat в Linux
Эта команда также позволяет отобразить содержимое файла с пронумерованными строками. Реализует эту функцию опция -n:
Отображение Непечатаемых Символов
Чтобы показать непечатаемые символы, добавьте к команде cat опцию -v, например:
Чтобы показать только символы табуляции, используйте параметр -T:
Табуляции будут отображаться как ^I.
Удаление Пустых Строк
Чтобы удалить пустые повторяющиеся строки и сэкономить место на дисплее, вы можете применить опцию -s. Но имейте в виду, что этот параметр удалит только повторяющиеся пустые строки, оставив одну пустую строку.
Нумерация Непустых Строк с Помощью Команды Cat в Linux
Чтобы вывести номер каждой строки, не учитывая пустых, используйте опцию -b. Но помните, что параметр -b отменяет опцию -n:
Отображение Файла в Обратном Порядке
Чтобы просмотреть содержимое файла в обратном порядке, начиная с последней строки и заканчивая первой, просто используйте команду tac (команду cat, написанную задом наперёд):
Выводы
Вот и всё. Теперь вы знаете, как работает команда cat в Linux и ознакомились с основными примерами её использования. Этого достаточно, чтобы начать применять её на практике. Если же вы хотите изучить эту утилиту более подробно, просто вызовите её справочную страницу с помощью команды man cat!
Мы надеемся, что эта статья помогла вам улучшить навыки работы с командной строкой Linux. Увидимся в следующем руководстве!
Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов’язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.