Можно ли использовать команду linux cat для записи текста в файл?

149

Это примерно так:

cat "Some text here." > myfile.txt

Возможный? Таким образом, содержимое myfile.txtтеперь будет перезаписано на:

Some text here.

У меня это не работает, но и ошибок не вызывает.

Особо интересует catрешение на основе (не vim / vi / emacs и т. Д.). Все примеры онлайн-шоу catиспользуются вместе с вводом файлов, а не с исходным текстом ...

IAmYourFaja
источник

Ответы:

194

Вот что echoделает:

echo "Some text here." > myfile.txt
Карл Норум
источник
15
Бонус: echo "Some text here." >> myfile.txtдобавить в конец файла
Джим Ахо
6
Если вам нужно использовать в тексте двойные кавычки, заключите все в одинарные кавычки. Это полезно для .json и подобных, напримерecho '{"info1": "123456"}' > info.json
bkd
173

Похоже, вы ищете здесь документ

cat > outfile.txt <<EOF
>some text
>to save
>EOF
Гбренер
источник
В Linux Kernel 2.6.32 centos 6 мне пришлось опустить >символы, чтобы получить ожидаемый результат.
ecoe
4
Эти >символы представляют значение по умолчанию $PS2; они появляются автоматически и не предназначены для ввода. Если у вас другое значение $PS2, оно будет отображаться вместо этого.
gbrener 05
52

Вот еще способ -

cat > outfile.txt
>Enter text
>to save press ctrl-d
Stolen_leaves
источник
10

Я использую следующий код для записи необработанного текста в файлы, чтобы обновить настройки процессора. Надеюсь, это поможет! Сценарий:

#!/bin/sh

cat > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <<EOF
performance
EOF

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
performance
EOF

Это записывает текст "performance" в два файла, упомянутых в сценарии выше. В этом примере старые данные перезаписываются в файлах.

Этот код сохраняется как файл (cpu_update.sh) и запускает его исполняемый файл:

chmod +x cpu_update.sh

После этого вы можете запустить скрипт с помощью:

./cpu_update.sh

ЕСЛИ вы не хотите перезаписывать старые данные в файле, отключите

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

с участием

cat >> /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

Это добавит ваш текст в конец файла без удаления других данных, уже имеющихся в файле.

Арахкун
источник
9
cat > filename.txt

введите текст до EOF, чтобы сохранить текст: ctrl + d

если вы хотите прочитать этот файл .txt, используйте

cat filename.txt

и одна вещь .txt не является обязательным, это для вашей справки.

пользователь5260939
источник
8

Для текстового файла:

cat > output.txt <<EOF
some text
some lines
EOF

Для файла PHP:

cat > test.php <<PHP
<?php
echo "Test";
echo \$var;
?>
PHP
Ле Кхим
источник
5

Вы тоже можете сделать это так:

user@host: $ cat<<EOF > file.txt
$ > 1 line
$ > other line
$ > n line
$ > EOF
user@host: $ _

Я считаю, что есть много способов его использовать.

ХуанТороМарти
источник
4

Напишите многострочный текст с переменными среды, используя echo:

echo -e "
Home Directory: $HOME \n
hello world 1 \n
hello world 2 \n
line n... \n
" > file.txt 
нсантана
источник
4

Другой способ записать текст в файл с помощью cat будет примерно так

cat >file.txt <<< Write something here
mpountou
источник
Эта команда действительно полезна, когда вы пытаетесь записать вывод команды в файл. Например, cat > docker-inspect.txt <<< docker inspect image ''
Ганесан
3

просто конвейерное эхо с кошкой

Например

echo write something to file.txt | cat > file.txt
mpountou
источник
2

catтакже может использоваться после a |для записи в файл, то есть конвейер передает cat поток данных

Leahcim
источник
1

Решение вашей проблемы:

echo "Some Text Goes Here"> filename.txt

Но вы можете использовать команду cat, если хотите перенаправить вывод файла в другой файл или если хотите добавить вывод файла в другой файл:

cat filename> newfile - Перенаправить вывод имени файла в новый файл

cat filename >> newfile - добавить вывод имени файла в новый файл

Випул Шарма
источник