Работа с файловой системой с помощью команды echo в Bash

В предыдущих статьях были рассмотрены темы о том, что может команда echo в плане вывода на экран результатов её выполнения. В этой статье я наконец-то добрался до того, что нужно лично мне, — до вопроса о том, как организовать запись в файл с помощью команды echo. Да, да! Это возможно! И я надеюсь, что в эту статью поместится информация не только об этом, а я вкратце затрону то, как с помощью всё той же команды посмотреть названия файлов в папке... и даже вывести их содержимое на экран. Но обо всём по порядку...



Как посмотреть содержимое папки с помощью команды echo

Сперва разберёмся с работой с файловой системой с помощью команды echo. В Linux есть конечно более удобные функции для работы со списком файлов и директорий. Команду tree мы рассмотрели ранее в → этой статье. Есть совсем заточенная только для этого команда ls. Но если хочется в Bash да ещё и командой echo вывести список файлов, то делается это просто:

root@server:~# echo *

выведет список файлов в текущей директории. Можно применить фильтр и вывести только файлы с определённым разрешением, например

root@server:~# echo *.sh

Как-то так, но я предпочитаю для этих целей всё-таки пользоваться стандартной утилитой ls.

Запись данных в файл с помощью команды echo

Для того, чтобы записать какие-то данные в файл с помощью команды  перенаправления вывода > *nix. Делается это так:

root@setver:~# echo "Запишем что-нибудь в файл" > test.txt

Теперь у нас появился файл test.txt с одной строкой:

root@server:~# cat test.txt
Запишем что-нибудь в файл

Как записать данные в конец файл с помощью команды echo

Часто бывает так, что файл уже есть и в нём есть данные. И нужно что-то дописать в конец файла. Это также можно сделать с помощью команды echo и команды перенаправления вывода >> *nix. То есть используя две угловые скобки. Это не уничтожит данные в файле, а допишет данные в конец файла:

root@server:~# echo "\nЕщё одна строка в конец файла" >> test.txt

Посмотрим на результат:

root@server:~# cat test.txt
Запишем что-нибудь в файл
\nЕщё одна строка в конец файла

Как видно, не нужно дополнительно прописывать символы переноса строки: дозапись осуществляется автоматически с новой строки.

Как вывести содержимое файла командой echo

Ну и последние несколько примеров того, как с помощью команды echo вывести на экран содержимое файла:

root@server:~# echo $(<test.txt)
Запишем что-нибудь в файл \nЕщё одна строка в конец файла \n\nПлюс строка Плюс строка Плюс строка Плюс строка

или

root@server:~# echo `<test.txt`
Запишем что-нибудь в файл \nЕщё одна строка в конец файла \n\nПлюс строка Плюс строка Плюс строка Плюс строка

Как видно на примерах выше, способ неудобен тем, что переводы строк не выводятся на экран и всё сливается в одну строчку.

Но, в общем, всё это извращения и для вывода листинга вполне подходит команда cat и не нужно изобретать лишних велосипедов:

root@server:~# cat test.txt
Запишем что-нибудь в файл
\nЕщё одна строка в конец файла

\n\nПлюс строка
Плюс строка
Плюс строка
Плюс строка

Резюме

На этом обзор команды echo пожалуй можно завершить до возникновения действительно нетривиальных задач.

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню