Конспект курса Learn the Command Line часть 2

Продолжаем изучать основы работы с командной строкой Linux.
С первой частью курса можно ознакомится тут.
Курс называется Learn the Command Line, и пройти его можно тут



Перенаправление вывода

Под таким термином подразумевается не просто вывод результата выполнения команды на экран, а передача его в другие команды или запись в файл.

Вывод на экран

Для отображения текста на экране(в консоли) можно использовать команду echo, она выведет на экран строку (прям как в PHP).
Например:

echo "Hello golos"

Сохранение в файл и чтение из него

Для записи в файл после основной команды следует поставить кавычку > и после неё указать имя файла.
Например:

echo "Hello Golos" > hello.txt

Такая команда запишет строку Hello в файл hello.txt. Если этого файла не существует - он будет создан.
Командой cat можно прочитать содержимое файла

cat hello.txt

Содержимое одного файла можно прочитать и сразу же положить в другой файл.
Давайте создадим пустой файл и запишем в него содержимое другого файла.

touch 1.txt
cat 1.txt
cat oceans.txt > 1.txt
cat 1.txt


Как видите - файл 1.txt был пустым, а потом в него было записано содержимое файла oceans.txt

Важно. Есть разница между операторами > и >>.

    • перезапишет файл
    • допишет в конец файла

Передача данных в команду

Что если нам нужно не просто записать строку в файл, а скажем узнать её размер?
Для передачи вывода в команду используется оператор | (вертикальная черта).
Например

cat volcanoes.txt | wc

Такой командой мы прочитаем содержимое файла volcanoes.txt и передадим его в команду wc, которая выведет на экран число переводов строк, слов и байт в файле volcanoes.txt.

Оператор | можно использовать несколько раз.
К примеру

cat volcanoes.txt | wc | cat > islands.txt

Такая команда прочитает файл volcanoes.txt, передаст его в функцию wc, затем результат будет передан в функцию cat, которая потом запишет его в файл islands.txt

Работа с содержимым файла

Сортировка строк файла

Если строки в файле необходимо отсортировать - сделать это можно командой sort
Попробуем прочитать файл обычным cat и sort:

cat lakes.txt
sort lakes.txt

Разница видна.

Ну и опираясь на пройденный материал вы легко сможете записать отсортированную выдачу в новый файл:

cat lakes.txt | sort > sorted-lakes.txt


Конечно можно сделать это и короче

sort lakes.txt > sorted-lakes.txt

Результат будет одинаковым.

Уникализация строк файла

По аналогии с функцией sort можно пользоваться функцией uniq:

uniq deserts.txt

Для наглядности сравним её с выдачей cat

Как вы можете заметить - строка Sahara Desert пропала из выдачи.
Комбинировать команды достаточно просто. К примеру:

sort deserts.txt | uniq > uniq-deserts.txt

Такой командой мы отсортируем содержимое файла deserts.txt, затем уникализируем вдачу и запишем в файл uniq-deserts.txt.

Поиск строки в файле

Для поиска строки в файле используется команда grep
После команды через пробел указываем строку для поиска и потом опять через пробел имя файла в котором искать.
Пример:

grep Mount mountains.txt

Так в файле mountains.txt будет искаться строка Mount.

На экран выведены все строки, в которых встречается Mount.
Если добавить аргумент i - то поиск будет регистронезависимым

grep -i Mount mountains.txt

Если вам необходимо найти строку во всех файлах в папке - нужно искать в этой папке рекурсивно(как удаление файлов)

grep -R Arctic /home/ccuser/workspace/geography

Такая команда будет искать строку Arctic во всех файлах в папке /home/ccuser/workspace/geography.

На выходе мы видим имя файла и найденную строку.

Замена строк в файле

Для поиска с заменой следует использовать оператор sed.
Первым аргументом ему передаётся строка для поиска и строка замены, а вторым файл, в котором нужно провести замену.
Например:

sed 's/snow/rain/' forests.txt

Такая команда найдёт в каждой строке файла forests.txt слово snow и заменит его на rain. Важно - заменено будет только первое вхождение.

Если вам нужно заменить все вхождения - добавьте вконце g(global)

sed 's/snow/rain/g' forests.txt

Возможности работы с командами

Настройки окружения

Редактор nano

Для того, чтобы отредактировать файл в редакторе nano следует просто написать nano и имя файла

nano hello.txt

Далее в редакторе пишите что вам нужно и для записи строки жмёте Ctrl+O

Выйти из редактора можно сочетанием клавиш Ctrl+X

Давайте создадим файл .bash_profile в домашней директории:

nano ~/.bash_profile

Затем пропишем в нём:

echo "Welcome, Jane Doe"

Затем запускаем:

source ~/.bash_profile

Создание алиасов

Добавим в начало файла:

alias pd="pwd"

Теперь запустим файл. Потом попробуем выполнить команду pd

pd


Как видите - алиас команды pwd сработал.
Давайте попробуем сделать другие алиасы:

alias ll="ls -la"
alias hy="history"


Работать это будет так:

Создание переменных окружения

Добавим в начале файла:

export USER="Jane Doe"


После сохранения файла запустите его. Затем пишите:

echo $USER

Так мы выведем на экран переменную, описанную в файле

Так же в консоли доступны уже существующие переменные. Например $PATH(хранит список каталогов) или $HOME(путь к домашнему каталогу). Так же доступна команда env - вернёт список переменных, которые можно использовать.
Окружение схематично можно представить так

Заглавное лого с сайта icon-icons.com

Отзыв о курсе

В данном материале рассмотрена работа с переменными окружения, создание алиасов команд. Если дополнить это оперированием входных и выходных потоков команд - можно писать полноценные скрипты. Создание скриптов таких подробно описано. Данный курс помог мне отточить навыки работы с командной строкой, несмотря на то, что я уже не один год ей активно пользуюсь.

Конспект подготовлен для Академии Голоса @academy

академияобразованиепрограммированиеlinux
155
96.933 GOLOS
0
В избранное
tristamoff
На Golos с 2017 M01
155
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (3)
Сортировать по:
Сначала старые