- Просмотр, перенаправление и сложение файлов с помощью cat
- Использование перенаправления
- Добавление в устройство стандартного вывода
- Перенаправление устройства стандартного ввода
- unixforum.org
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- Re: Решено: не работает команда cat
- cat: pid.txt: нет такого файла или каталога
- 3 ответа
Просмотр, перенаправление и сложение файлов с помощью cat
В Red Hat Linux есть утилита, помогающая вам сохранять короткие списки, собирать их вместе и, тем самым показывающая часть мощи вашей системы.
Эта утилита называется cat , что является сокращением от «concatenate» (конкатенация), и используется для склеивания файлов.
Команда cat также может вывести содержимое всего файла на экран (например, введите cat filename.txt ). Удобно использовать cat , если файл сравнительно небольшой. Но если файл велик, он будет быстро прокручиваться на экране, так как cat выводит файл целиком.
Тем не менее cat поможет продемонстрировать два важных понятия: устройства стандартного ввода и стандартного вывода.
Устройства стандартного ввода и вывода направляет ввод и вывод (часто также называемые I/O) к пользователю. Если программа читает с устройства стандартного ввода, по умолчанию она будет получать информацию, вводимую с клавиатуры. Если программа выводит в устройство стандартного вывода, по умолчанию, эта информация будет выведена на экран.
Запустите cat чтобы понять что это значит. В приглашении командной строки, введите:
Курсор перемещается в пустую строку Теперь введите в этой строке:
и нажмите клавишу [Enter] . Ваш экран будет выглядеть так:
[newuser@localhost newuser]$ cat stop by sneaker store stop by sneaker store
Рисунок 10-7. cat демонстрирует устройства стандартного ввода и вывода
Чтобы выйти из программы cat переместите курсор на пустую строку, нажав [Enter] . Затем нажмите [Ctrl] — [D] .
Команда cat только что показала определение стандартного ввода и стандартного вывода; вы вводили слова (стандартный ввод) и они появлялись на экране (стандартный вывод).
Использование перенаправления
Под перенаправлением понимается указание оболочке изменить то, что является стандартным вводом или стандартным выводом.
Вы до этого использовали команду cat чтобы понять идею стандартного ввода и вывода. Теперь примените команду cat чтобы узнать как перенаправляется стандартный вывод.
Чтобы перенаправить стандартный вывод используйте символ >. Поместив > после команды cat (или после имени любой утилиты или приложения, пишущего в стандартный вывод), вы перенаправите вывод в файл, указанный после этого символа.
Попробуйте его. Введите в приглашении оболочки:
[newuser@localhost newuser]$ cat > sneakers.txt buy some sneakers then go to the coffee shop then buy some coffee
Рисунок 10-8. Перенаправления вывода в файл
Теперь нажмите [Enter] чтобы перейти на пустую строку и нажмите [Ctrl] — [D] чтобы выйти из cat .
Заметили разницу (смотрите Рисунок 10-8 )? Заметно одно отличие — строки не повторяются. Так получилось потому что стандартный вывод команды cat был перенаправлен. Было выполнено перенаправление в новый файл, названный sneakers.txt .
Вы можете найти этот файл в каталоге, в котором вы запускали cat (введите ls , если вы хотите увидеть его на экране).
Вы можете использовать cat также и для просмотра этого файла, выполнив:
Будьте осторожны, когда вы перенаправляете вывод в файл, так как может быть легко переписан существующий файл! Убедитесь в том, что в текущем каталоге нет файла с таким именем, конечно, если только вы не решили заменить его.
Попробуйте перенаправить в другой файл и назовите его home.txt . Введите следующую команду:
[newuser@localhost newuser]$ cat > home.txt bring the coffee home take off shoes put on sneakers make some coffee relax!
Теперь, в пустой строке снова нажмите [Ctrl] — [D] чтобы выйти из cat .
Вы также можете проверить содержимое файла, выполнив:
Снова воспользуйтесь командой cat чтобы объединить файлы home.txt и sneakers.txt , и направить вывод из этих файлов в новый файл, названный saturday (вы найдете пример этого на Рисунке 10-9 ). Введите следующую команду:
[newuser@localhost newuser]$ cat sneakers.txt home.txt > saturday
Рисунок 10-9. Объединение файлов и перенаправление вывода
Теперь пора проверить что же было сделано. Введите:
[newuser@localhost newuser]$ cat saturday
и вы должны увидеть что-то подобное:
[newuser @localhost newuser]$ cat saturday buy some sneakers then go to the coffee shop then buy some coffee bring the coffee home take off shoes put on sneakers make some coffee relax! [newuser @localhost newuser]$
Вы видите, что команда cat добавила файл home.txt в конец файла sneakers.txt .
Создание и объединение небольших файлов при помощи cat может быть удобной альтернативой использованию текстового редактора, например Pico .
Добавление в устройство стандартного вывода
Вы можете использовать перенаправление вывода чтобы дописать новую информацию в конец существующего файла. Также как и с символом > , вы указываете оболочке отправить информацию не на устройство стандартного вывода.
Однако, указав >>, вы будете добавлять информацию к существующей, а не заменять её.
Лучшее объяснение это демонстрация, поэтому возьмите два уже созданных файла — sneakers.txt и home.txt — и объедините их воспользовавшись символом добавления в устройство вывода. Если вы хотите добавить информацию из файла home.txt к информации в файле sneakers.txt , введите:
Затем просмотрите файл выполнив:
Вот и требуемый результат, содержимое файла home.txt оказалось в конце.
Введенная вами команда, указала системе «добавить выведенный файл home.txt в файл sneakers.txt .»
Добавляя в устройство вывода, вы сократите одно или два своих действия (и сохраните порядок на диске), используя существующие файлы, а не создавая новые.
Теперь сравните получившиеся файлы sneakers.txt и saturday , и вы увидите, что они идентичны. Чтобы выполнить сравнение введите:
cat sneakers.txt; cat saturday
На экране отображается содержимое этих файлов — сначала sneakers.txt , затем saturday (как показано на Рисунке 10-10 ).
Помните, для добавления информации в устройство вывода, вы должны указать два знака «больше» (>>). Иначе, будет выполняться замена файла, в который вы хотите добавить добавить информацию!
Рисунок 10-10. Соединение команд и сравнение файлов
Перенаправление устройства стандартного ввода
Вы можете не только перенаправить стандартный вывод, но также выполнить перенаправление стандартного ввода.
Используйте только что созданный файл для демонстрации этой идеи. Просто введите:
unixforum.org
Может быть я что-то не так делаю, читаю Пецке «Linux от понимания к применению» урок по командам echo и cat.
Пишу хоть так:
cat пример (или)
cat > пример «смотрим» — в обоих случаях текст сразу же выводится на экран. Хотя текст заключен в кавычки.
А вот с командой echo все в порядке. В чем косяк?
Bizdelnick Модератор Сообщения: 20387 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Решено: не работает команда cat
Сообщение Bizdelnick » 17.06.2013 21:31
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
drBatty Сообщения: 8735 Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит. ОС: Slackware-current Контактная информация:
Re: Решено: не работает команда cat
Сообщение drBatty » 17.06.2013 21:52
а в bash обычный текст воспринимается одинаково, что так, что «так», и ‘так’. Кавычки только на спецсиволы действуют.
Re: Решено: не работает команда cat
Сообщение Bish » 17.06.2013 21:56
Bizdelnick Модератор Сообщения: 20387 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Решено: не работает команда cat
Сообщение Bizdelnick » 17.06.2013 22:01
Исправил предыдущий ответ.
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
drBatty Сообщения: 8735 Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит. ОС: Slackware-current Контактная информация:
Re: Решено: не работает команда cat
Сообщение drBatty » 17.06.2013 22:05
Bizdelnick
вам не кажется, что вы тут три сущности в одой команде замешали?
ТС спрашивал про cat? Или про перенаправление? Или про встроенные документы?
Давайте определимся, какую главу и какой книжки мы изучаем?
Re: Решено: не работает команда cat
Сообщение Bish » 17.06.2013 22:05
Bizdelnick так проходит, странно, почему в книге об этом не сказано? там то по другому.
drBatty книга называется Пецке «Linux от понимания к применению» стр 95 Перенаправление вывода.
Вот пример с командой echo
aniro@debian:~$ echo >тыц «проверка записи в файл» aniro@debian:~$ cat тыц проверка записи в файл aniro@debian:~$
Такой же пример дан и с командой cat но тут косяк выходит, перенаправление вывода не работает а текст сразу же появляется в окне терминала.
drBatty Сообщения: 8735 Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит. ОС: Slackware-current Контактная информация:
Re: Решено: не работает команда cat
Сообщение drBatty » 17.06.2013 22:10
результат от удара головой в закрытую дверь, совершенно не зависит от того, есть у вас ключи в кармане, или их нет.
Re: Решено: не работает команда cat
Сообщение Bish » 17.06.2013 22:15
результат от удара головой в закрытую дверь, совершенно не зависит от того, есть у вас ключи в кармане, или их нет. очень хорошо сказано, я всегда замечал что продвинутые Гуру выражаются простым языком.
drBatty ничего я не понял в Вашем ответе. SU я понимаю, от рута или бакса вводить команды, да не в этом дело то. скажите в двух словах — в чем косяк? почему не проходит команда, которую я читаю по книге?
Bizdelnick Модератор Сообщения: 20387 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Решено: не работает команда cat
Сообщение Bizdelnick » 17.06.2013 22:20
Вероятно, потому что книге слишком много лет. Команда с echo хоть и рабочая, но тоже нетривиальная. Обычно пишут echo «some text» > file .
А может быть, Вы неправильно поняли, что должно происходить. Ваша команда должна скопировать содержимое файла «смотрим» в файл «пример». Хотя, опять-таки, более общепринятая и легкочитаемая форма записи — cat смотрим > пример .
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Решено: не работает команда cat
Сообщение Bish » 17.06.2013 22:25
Да, наверное Вы правы, книга старенькая. Ладно пойду читать дальше
Может скинуть книгу в PDF сами посмотрите? стр.97
http://zalil.ru/34588467
Да нет, вроде все ok, попробовал с переносом:
aniro@debian:~$ cat > тыц «проверка слов на ошибки» aniro@debian:~$ cat тыц «проверка слов на ошибки» aniro@debian:~$
cat: pid.txt: нет такого файла или каталога
У меня проблема с котом. Я хочу написать сценарий, выполняющий то же самое, что и ps -e. В pid.txt у меня есть PID запущенных процессов.
ls /proc/ | grep -o "3" | sort -h > pid.txt
Затем я хочу использовать $ line как часть пути к cmdline для каждого PID.
cat pid.txt | while read line; do cat /proc/$line/cmdline; done
for id in 'ls /proc/ | grep -o "9\+" | sort -h'; do cat /proc/$id/cmdline; done
Не знаю, что делаю не так. Заранее спасибо.
3 ответа
Я думаю, что вам нужно это — во всех ваших подходах было несколько недостатков (или вы действительно просто хотели посмотреть на процесс с однозначным PID?):
for pid in $(ls /proc/ | grep -E '^4+$'|sort -h); do cat /proc/$/cmdline; tr '\x00' '\n'; done
Это действительно помогло моей проблеме, пока я добавлял свое местоположение пользователя, я обновлял $PATH. перед экспортом я добавил дополнительную строку как PATH =, которая испортила всю мою переменную PATH, и ни одна из команд unix не работает в Терминале.
Кажется, вы находитесь в другом текущем каталоге при запуске cat pid.txt. по сравнению с тем, когда вы запускали ls. команда. Запустите обе свои команды в одном окне терминала или используйте абсолютный путь, например /path/to/pid.txt
Помимо вашей ошибки, вы можете удалить -o из вашей команды grep, поскольку она дает вам 1 цифру для соответствующего pid. Например, вы получите 2, когда pid равен 423. @Roadowl уже указал на это.
Adblockdetector