Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Bash как создать файл


Как создать файл в треминлале

Философия Linux гласит - всё в системе есть файл. Мы ежедневно работаем с файлами, и программы, которые мы выполняем, - тоже файлы. В разных случаях нам может понадобиться создать в системе файлы определённого типа. Если вам интересно, какие типы файлов в Linux можно создать, смотрите отдельную статью.

Конечно, всё очень просто делается с помощью мышки и файлового менеджера. Но если вы дружите с клавиатурой, создать файл через терминал Linux намного быстрее и, как вы увидите, эффективнее. В терминале вы можете не только создавать пустые файлы, но и создавать файл с уже готовым содержимым, файлы определённого размера, и с нужными метаданными.

Как всё это делать, вы узнаете из этой статьи. Мы рассмотрим все доступные средства создания файлов в терминале Linux. Поехали!

Содержание статьи:

1. Редактор nano

Самый распространённый способ создать текстовый файл в Linux - это использовать консольные текстовые редакторы. Например nano. После ввода команды открывается редактор, и вы прописываете нужный текст, например:

nano файл.txt

2. Редактор Vi

Тот же принцип, но программа намного серьёзнее:

vi файл.txt

Если вы в первый раз столкнулись с vim, то предупрежу - это необычный редактор. Здесь есть два режима: режим вставки и командный. Переключаться между ними можно с помощью кнопки Esc. Для выхода из редактора в командном режиме наберите :q, для сохранения файла - :w. Вообще, Vim - очень полезный инструмент. Чтобы узнать побольше о его возможностях и выучить основы, выполните: vimtutor.

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

3. Оператор перенаправления >

Это, наверное, самая короткая команда для создания файла в Linux:

> файл

Оператор оболочки для перенаправления вывода позволяет записать вывод любой команды в новый файл. Например, можно подсчитать md5 сумму и создать текстовый файл в Linux с результатом выполнения.

md5sum файл > ~/sum.md5

Это рождает ещё несколько способов создания файла в Linux, например, выведем строку в файл с помощью команды echo:

echo "Это строка" > файл.txt

Этот способ часто используется для создания конфигурационных файлов в Linux, так сказать, на лету. Но заметьте, что sudo здесь работать не будет. С правами суперпользователя выполниться echo, а запись файла уже будет выполнять оболочка с правами пользователя, и вы всё равно получите ошибку Access Denied.

Ещё тем же способом можно сделать примитивный текстовый редактор для создания файла. Утилита cat без параметров принимает стандартный ввод, используем это:

cat > файл.txt

После выполнения команды можете вводить любые символы, которые нужно записать в файл, для сохранения нажмите Ctrl+D.

А ещё есть утилита printf, и здесь она тоже поддерживает форматирование вывода:

printf "Это %d текстовая строка\n" 1 > файл

Этот способ создать файл в Linux используется довольно часто.

4. Оператор перенаправления вывода >>

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

echo "Это текстовая строка" > файл.txt
$ echo "Это вторая текстовая строка" >> файл.txt

5. Оператор перенаправления 2>

Первые два оператора перенаправления вывода команды в файл использовали стандартный вывод. Но можно создать файл в терминале Ubuntu и перенаправить в него вывод ошибок:

date 2> файл

Если команда не выдает ошибок, файл будет пустым.

6. Оператор перенаправления и head

С помощью команды head можно выбрать определённый объем данных, чтобы создать текстовый файл большого размера. Данные можно брать, например, с /dev/urandom. Для примера создадим файл размером 100 мегабайт:

base64 /dev/urandom | head -c 100M > файл

7. Команда cp

Команда cp используется для копирования файлов в Linux. Но с её помощью можно и создать файл. Например, чтобы создать пустой файл, можно просто скопировать /dev/null:

cp /dev/null файл

8. touch

Вот мы и подобрались к непосредственному созданию файлов через терминал, для этого в Linux есть специальная утилита touch. Она позволяет создать пустой файл в Linux, при этом указывать дату создания, права доступа и другие метаданные.

Чтобы создать пустой файл Linux, просто наберите:

touch файл.txt

Можно создать несколько пустых файлов сразу:

touch файл1 файл2

Опция -t позволяет установить дату создания. Дата указывается опцией -t в формате YYMMDDHHMM.SS. Если не указать, будет установлена текущая дата. Пример:

touch  -t 201601081830.14 файл

Можно использовать дату создания другого файла:

touch -r шаблон файл

Также можно установить дату последней модификации, с помощью опции -m:

touch -m -t 201601081830.14 файл

Или дату последнего доступа:

touch -a -t 201601081830.14 файл

Чтобы посмотреть, действительно ли задаётся информация, которую вы указали, используйте команду stat:

stat файл

9. Утилита dd

Это утилита для копирования данных из одного файла в другой. Иногда необходимо создать файл определённого размера в Linux, тогда можно просто создать его на основе /dev/zero или /dev/random, вот так:

dd if=/dev/zero of=~/файл count=20M

Параметр if указывает, откуда брать данные, а of - куда записывать, count - необходимый размер. Ещё можно указать размер блока для записи с помощью bs, чем больше размер блока, тем быстрее будет выполняться копирование.

Создание специальных файлов в Linux

В Linux, кроме выше рассмотренных обычных текстовых и бинарных файлов, существуют ещё и специальные файлы. Это файлы сокетов и туннелей. Их нельзя создать обычными программами, но для этого существуют специальные утилиты, смотрите подробнее в статье, ссылку на которую я дал вверху.

Выводы

Это были все возможные команды для создания файла в Linux. Если вы знаете другие, которые следовало бы добавить в статью - поделитесь в комментариях.

Оцените статью:

Загрузка...

21 полезная команда / Блог компании RUVDS.com / Хабр

Материал, перевод которого мы публикуем сегодня, предназначен для тех, кто хочет освоить командную строку Linux. Умение эффективно пользоваться этим инструментом позволяет экономить немало времени. В частности, речь здесь пойдёт о командной оболочке Bash и о 21 полезной команде. Также мы поговорим о том, как пользоваться флагами команд и псевдонимами Bash, которые позволяют ускорить ввод длинных инструкций.

→ Также читайте в нашем блоге цикл публикаций про bash-скрипты

Термины


В ходе освоения работы в командной строке Linux вам может встретиться множество понятий, в которых полезно будет ориентироваться. Некоторые из них, вроде «Linux» и «Unix», или «командная оболочка» и «терминал», иногда путают. Поговорим об этих и о других важных терминах.

Unix — это популярная операционная система, которая была разработана Bell Labs в 1970-х. Её код был закрытым.

Linux — это самая популярная Unix-подобная операционная система. Она в наши дни используется на множестве устройств, в том числе — и на компьютерах.

Терминал (terminal), или эмулятор терминала — это программа, дающая доступ к операционной системе. Одновременно можно открывать несколько окон терминала.

Оболочка (shell) — это программа, которая позволяет отправлять операционной системе команды, написанные на особом языке.

Bash расшифровывается как Bourne Again SHell. Это — самый распространённый язык командной оболочки, используемый для взаимодействия с операционной системой. Кроме того, оболочка Bash по умолчанию используется в macOS.

Интерфейс командной строки (Command Line Interface, CLI) — это способ взаимодействия человека и компьютера, при использовании которого пользователь вводит команды с клавиатуры, а компьютер, выполняя эти команды, выводит, в текстовом виде, сообщения для пользователя. В основном CLI используется для получения свежей информации о неких сущностях, например, о файлах, и для работы с файлами. Интерфейс командной строки следует отличать от графического пользовательского интерфейса (Graphical User Interface, GUI), при работе с которым, в основном, используется мышь. Интерфейс командной строки часто называют просто командной строкой.

Скрипт (script) — это небольшая программа, которая содержит последовательность команд командной оболочки. Скрипты записывают в файлы, использовать их можно многократно. При написании скриптов можно пользоваться переменными, условными конструкциями, циклами, функциями и другими возможностями.

Теперь, когда мы рассмотрели важные термины, хочу отметить, что здесь я буду пользоваться терминами «Bash», «оболочка» и «командная строка» как взаимозаменяемыми, равно как и понятиями «директория» (directory) и «папка» (folder).

Стандартные потоки, которыми мы будем здесь пользоваться — это стандартный ввод (standard input, stdin), стандартный вывод (standard output, stdout) и стандартный вывод ошибок (standard error, stderr).

Если в примерах команд, которые будут приводиться ниже, вы встретите нечто вроде my_whatever — это означает, что данный фрагмент нужно заменить чем-то вашим. Например — именем файла.

Теперь, прежде чем приступать к разбору команд, которым посвящён этот материал, давайте взглянем на их список и на их краткие описания.

21 Bash-команда


▍Получение информации


  • man: выводит руководство пользователя (справку) по команде.
  • pwd: выводит сведения о рабочей директории.
  • ls: выводит содержимое директории.
  • ps: позволяет просматривать сведения о работающих процессах.

▍Манипуляции с файловой системой


  • cd: изменение рабочей директории.
  • touch: создание файла.
  • mkdir: создание директории.
  • cp: копирование файла.
  • mv: перемещение или удаление файла.
  • ln: создание ссылки.

▍Перенаправление ввода-вывода и конвейеры


  • <: перенаправление stdin.
  • >: перенаправление stdout.
  • |: перенаправление с помощью конвейера вывода одной команды на вход другой команды.

▍Чтение файлов


  • head: чтение начала файла.
  • tail: чтение конца файла.
  • cat: чтение файла и вывод его содержимого на экран или конкатенация файлов.

▍Удаление файлов, остановка процессов


  • rm: удаление файла.
  • kill: остановка процесса.

▍Поиск


  • grep: поиск информации.
  • ag: продвинутая команда для поиска.

▍Архивация


  • tar: создание архивов и работа с ними.

Поговорим об этих командах подробнее.

Подробности о командах


Для начала давайте разберёмся с командами, результаты работы которых выдаются в форме stdout. Обычно эти результаты появляются в окне терминала.

▍Получение информации


man command_name: вывод руководства по команде, то есть — справочной информации.

pwd: вывод на экран пути к текущей рабочей директории. В ходе работы с командной строкой пользователю часто нужно узнавать то, где именно в системе он находится.

ls: вывод содержимого директории. Эта команда тоже используется весьма часто.

ls -a: вывод скрытых файлов. Здесь применён флаг -a команды ls. Использование флагов помогает настраивать поведение команд.

ls -l: вывод подробной информации о файлах.

Обратите внимание на то, что флаги можно комбинировать. Например — так: ls -al.

ps: просмотр выполняющихся процессов.

ps -e: вывод сведений обо всех выполняющихся процессах, а не только о тех, которые связаны с текущей оболочкой пользователя. Данную команду часто используют именно в таком виде.

▍Манипуляции с файловой системой


cd my_directory: изменение рабочей директории на my_directory. Для того чтобы перейти на один уровень выше в дереве каталогов используйте в качестве my_directory относительный путь ../.
Команда cd

touch my_file: создание файла my_file по заданному пути.

mkdir my_directory: создание папки my_directory по заданному пути.

mv my_file target_directory: перемещение файла my_file в папку target_directory. При указании целевой директории нужно использовать абсолютный путь к ней (а не конструкцию вроде ../).

Команду mv, кроме того, можно использовать для переименования файлов или папок. Например, выглядеть это может так:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: создание копии файла my_source_file и помещение её в папку target_directory.

ln -s my_source_file my_target_file: создание символической ссылки my_target_file на файл my_source_file. Если изменить ссылку, то изменится и исходный файл.

Если файл my_source_file будет удалён, то my_target_file останется. Флаг -s команды ln позволяет создавать ссылки и для директорий.

Теперь поговорим о перенаправлении ввода-вывода и конвейерах.

▍Перенаправление ввода-вывода и конвейеры


my_command < my_file: заменяет дескриптор файла стандартного ввода (stdin) на файл my_file. Это может оказаться полезным в том случае, если команда ожидает ввода неких данных с клавиатуры, а эти данные заранее сохранены в файле.

my_command > my_file: перенаправляет результаты работы команды, то есть то, что обычно попадает в stdout и выводится на экран, в файл my_file. Если файл my_file не существует — он создаётся. Если файл существует — он перезаписывается.

Например, после выполнения команды ls > my_folder_contents.txt будет создан текстовый файл, содержащий список того, что находится в текущей рабочей директории.

Если вместо символа > воспользоваться конструкцией >>, то, при условии существования файла, в который перенаправляется вывод команды, этот файл перезаписан не будет. Данные будут добавлены в конец этого файла.

Теперь взглянем на конвейерную обработку данных.


То, что выводит одна команда, подаётся на вход другой команды. Это похоже на подключение одной трубы к другой

first_command | second_command: символ конвейера, |, используется для того чтобы отправить результаты работы одной команды другой команде. То, что команда, находящаяся в левой части описываемой конструкции, отправляет в stdout, попадает в stdin команды, которая находится справа от символа конвейера.

В Linux конвейерную обработку данных можно организовать с использованием практически любой правильно составленной команды. Часто говорят, что всё в Linux — это конвейер.

С помощью символа конвейера можно объединять в цепочку несколько команд. Выглядит это так:

first_command | second_command | third_command


Конвейер из нескольких команд можно сравнить с трубопроводом

Обратите внимание на то, что когда команда, находящаяся слева от символа |, выводит что-то в stdout, то, что она вывела, немедленно становится доступным в виде stdin второй команде. То есть оказывается, что, используя конвейер, мы имеем дело с параллельным выполнением команд. Иногда это может привести к неожиданным результатам. Подробности об этом можно почитать здесь.

Теперь поговорим о чтении данных из файлов и о выводе их на экран.

▍Чтение файлов


head my_file: считывает строки из начала файла и выводит их на экран. Читать можно не только содержимое файлов, но и то, что команды выводят в stdin, используя эту команду в качестве элемента конвейера.

tail my_file: считывает строки из конца файла. Эту команду тоже можно использовать в конвейере.


Head (голова) находится спереди, а tail (хвост) — сзади

Если вы работаете с данными, используя библиотеку pandas, тогда команды head и tail должны быть вам знакомы. Если это не так — взгляните на вышеприведённый рисунок, и вы без труда их запомните.

Рассмотрим другие способы чтения файлов, поговорим о команде cat.

Команда cat либо выводит содержимое файла на экран, либо конкатенирует несколько файлов. Это зависит от того, сколько файлов передано этой команде при вызове.


Команда cat

cat my_one_file.txt: когда этой команде передают один файл — она выводит его в stdout.

Если же передать ей два файла или большее количество файлов, то она ведёт себя по-другому.

cat my_file1.txt my_file2.txt: получив на вход несколько файлов эта команда конкатенирует их содержимое и выведет то, что получилось в stdout.

Если результат конкатенации файлов нужно сохранить в виде нового файла, можно воспользоваться оператором >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Теперь поговорим о том, как удалять файлы и останавливать процессы.

▍Удаление файлов, остановка процессов


rm my_file: удаляет файл my_file.

rm -r my_folder: удаляет папку my_folder и все содержащиеся в ней файлы и папки. Флаг -r указывает на то, что команда будет работать в рекурсивном режиме.

Для того чтобы система не запрашивала подтверждение при выполнении каждой операции удаления файла или папки, воспользуйтесь флагом -f.

kill 012345: останавливает указанный выполняющийся процесс, давая ему время на корректное завершение работы.

kill -9 012345: принудительно завершает указанный запущенный процесс. Флаг вида -s SIGKILL означает то же самое, что и флаг -9.

▍Поиск


Для поиска данных можно использовать разные команды. В частности — grep, ag и ack. Начнём наше знакомство с этими командами с grep. Это — проверенная временем, надёжная команда, которая, правда, медленнее других и не так, как они, удобна в использовании.
Команда grep

grep my_regex my_file: выполняет поиск my_regex в my_file. При обнаружении совпадений возвращается, для каждого из них, вся строка. По умолчанию my_regex воспринимается как регулярное выражение.

grep -i my_regex my_file: поиск выполняется без учёта регистра символов.

grep -v my_regex my_file: возвращает все строки, в которых не содержится my_regex. Флаг -v означает инверсию, он напоминает оператор NOT, имеющийся во многих языках программирования.

grep -c my_regex my_file: возвращает сведения о количестве совпадений с искомым шаблоном, найденных в файле.

grep -R my_regex my_folder: выполняет рекурсивный поиск во всех файлах, находящихся в заданной папке и в папках, вложенных в неё.

Теперь поговорим о команде ag. Она появилась позже grep, она быстрее, работать с ней удобнее.


Команда ag

ag my_regex my_file: возвращает сведения о номерах строк, и сами строки, в которых найдены совпадения с my_regex.

ag -i my_regex my_file: поиск выполняется без учёта регистра символов.

Команда ag автоматически обрабатывает файл .gitignore и исключает из вывода то, что найдено в папках или файлах, перечисленных в этом файле. Это очень удобно.

ag my_regex my_file -- skip-vcs-ignores: содержимое файлов систем автоматического контроля версий (наподобие .gitignore) при поиске не учитывается.

Кроме того, для того чтобы указать команде ag на то, какие пути к файлам нужно исключить из поиска, можно создать файл .agignore.

В начале этого раздела мы упомянули о команде ack. Команды ack и ag очень похожи, можно сказать, что они взаимозаменяемы на 99%. Однако команда ag работает быстрее, поэтому я описал именно её.

Теперь поговорим о работе с архивами.

▍Архивация


tar my_source_directory: объединяет файлы из папки my_source_directory в один файл tarball. Такие файлы удобно использовать для того, чтобы передавать кому-нибудь большие наборы файлов.
Команда tar

Tarball-файлы, создаваемые этой командой, представляют собой файлы с расширением .tar (Tape ARchive). То, что в названии команды и в расширении имён файлов, создаваемых ей, скрыто слово «tape» (лента), говорит о том, как давно существует эта команда.

tar -cf my_file.tar my_source_directory: создаёт tarball-файл с именем my_file.tar с содержимым папки my_source_directory. Флаг -c расшифровывается как «create» (создание), а флаг -f как «file» (файл).

Для извлечения файлов, находящихся в .tar-файле, используется команда tar c флагами -x («extract», извлечение) и -f («file», файл).

tar -xf my_file.tar: извлекает файлы из my_file.tar в текущую рабочую директорию.

Теперь поговорим о том, как сжимать и распаковывать .tar-файлы.

tar -cfz my_file.tar.gz my_source_directory: здесь, с использованием флага -z («zip», алгоритм сжатия) указано, что для сжатия файлов должен использоваться алгоритм gzip (GNU zip). Сжатие файлов позволяет экономить дисковое пространство при хранении таких файлов. Если же файлы планируется, например, передавать другим пользователям, это способствует более быстрой загрузке таких файлов.

Распаковать файл .tar.gz можно, добавив флаг -z к команде извлечения содержимого .tar-файлов, которую мы рассматривали выше. Выглядит это так:

tar -xfz my_file.tar.gz
Надо отметить, что у команды tar есть ещё множество полезных флагов.

Bash-псевдонимы


Bash-псевдонимы (их ещё называют алиасами или сокращениями) предназначены для создания сокращённых наименований команд или их последовательностей, использование которых вместо обычных команд ускоряет работу. Если у вас, предположим, имеется псевдоним bu, за которым скрывается команда python setup.py sdist bdist_wheel, то для вызова данной команды достаточно воспользоваться этим псевдонимом.

Для создания подобного псевдонима достаточно добавить следующую команду в файл ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Если в вашей системе нет файла ~/.bash_profile, то вы можете создать его самостоятельно, воспользовавшись командой touch. После создания псевдонима перезапустите терминал, после чего вы сможете этим псевдонимом пользоваться. В данном случае ввод двух символов заменяет ввод более чем трёх десятков символов команды, которая предназначена для сборки Python-пакетов.

В ~/.bash_profile можно добавлять псевдонимы для любых часто используемых команд.

▍Итоги


В этом материале мы рассмотрели 21 популярную команду Bash и поговорили о создании псевдонимов для команд. Если вам эта тема интересна — вот цикл публикаций, посвящённый Bash. Здесь можно найти pdf-версию этих публикаций. Кроме того, если вы хотите освоить Bash, помните о том, что тут, как и при изучении любой другой программной системы, важна практика.

Уважаемые читатели! Какие команды, которые полезно знать начинающим, вы добавили бы к тем, которые были рассмотрены в этой статье?

→ Также читайте в нашем блоге цикл публикаций про bash-скрипты

4 способа создать файл в терминале Linux

В этой серии статей для начинающих с Linux вы изучите различные способы создания файла в терминале Linux.

Если вы использовали настольную ориентированную операционную систему, такую ​​как Windows, создание файла – это просто. Вы щелкаете правой кнопкой мыши в проводнике, и вы найдете возможность создания нового файла.

Вещи не будут выглядеть одинаково, когда вы находитесь в среде командной строки. Здесь нет возможности щелчка правой кнопкой мыши. Так как же тогда создать файл в Linux? Позвольте мне показать вам это.

 

Создать файл в командной строке Linux

Существуют различные способы создания нового файла в терминале Linux. Мы покажем вам команды одну за другой.

 

1. Создайте пустой файл с помощью команды touch

Одним из самых распространенных применений сенсорной команды в Linux является создание нового пустого файла. Синтаксис очень прост.

touch filename

 

Если файл еще не существует, он создаст новый пустой файл. Если файл с таким именем уже существует, он обновит временные метки файла .

Если вы хотите убедиться, что touch только создает новый файл и не изменяет временные метки существующего файла, используйте команду touch с параметром -c.

 

2. Создайте файлы с помощью команды cat

Другой популярный способ создания нового файла – использование команды cat в Linux. Команда cat в основном используется для просмотра содержимого файла, но вы также можете использовать ее для создания нового файла.

cat > filename.txt

 

Вы можете написать новый текст в это время, если хотите, но это не обязательно. Для того, чтобы сохранить и выйти, используйте в терминале Ctrl + D.

Если файл с таким именем уже существует, и вы пишете в нем новый текст с помощью команды cat, новые строки будут добавлены в конец файла.

 

3. Создайте новый файл с помощью команды echo

Основное использование команды echo – просто повторить (echo) то, что вы печатаете на экране. Но если вы используете перенаправление с echo, вы можете создать новый файл.

Чтобы создать новый пустой файл с помощью echo, вы можете использовать что-то вроде этого:

echo "Это образец текста" > filename.txt

 

Вновь созданный файл filename.txt будет иметь следующий текст: Это пример текста. Вы можете просмотреть файл в Linux, используя cat или другие команды просмотра.

Вы не обязаны помещать образец текста с эхом. Вы можете создать (почти) пустой файл, используя команду echo:

echo> file.txt

 

Это создаст новый файл с одной пустой строкой. Вы можете проверить количество строк с помощью команды wc.

 

4. Создайте новый файл с помощью текстового редактора, такого как Vim

Последний метод в этой серии – использование текстового редактора. Текстовый редактор на основе терминала, такой как Emacs , Vim или Nano, несомненно, может быть использован для создания нового файла.

Прежде чем использовать эти текстовые редакторы, вы должны убедиться, что вы знаете основы, такие как сохранение существующего из редактора. В отличие от инструментов с графическим интерфейсом, использование Ctrl + S в терминале не сохранит файл. Фактически, он может перевести ваш терминал в, казалось бы, замороженное состояние, из которого вы восстанавливаетесь с помощью Ctrl + Q.

Допустим, вы собираетесь использовать редактор Vim. Убедитесь, что вы знакомы с основными командами vim , а затем откройте новый файл, например:

vim filename

 

Какая ваша любимая команда?

Итак, мы только что поделились 4 различными способами создания файла в Linux. Лично мы предпочитаем использовать touch для создания пустого файла и Vim, если нам нужно отредактировать файл.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как создать файл в Linux через терминал

В Linux для хранения настроек операционной системы и установленных программ используются обычные текстовые файлы. Поэтому при настройке системы очень часто приходится работать именно с такими файлами.

Одна из частых задач – создание новых файлов через терминал.

В этой инструкции мы рассмотрим именно этот вопрос. Здесь вы узнаете несколько наиболее простых и удобных способов создания текстовых файлов в Linux через терминал.

Содержание

Команда touch

Если вам нужно создать пустой файл в Linux через терминал, то для этого проще всего использовать команду «touch». Команда «touch» является стандартной командой, которая используется в операционной системе Linux для создания и изменения временных меток файла.

Также с ее помощью можно создавать новые файлы. Для этого достаточно просто ввести команду «touch» и через пробел указать название файла, который необходимо создать. Если такого файла не существует, то команда создаст новый, если же файл уже есть, то команда «touch» обновит его временные метки.

При необходимости с помощью «touch» можно создать сразу несколько документов. В этом случае через пробел нужно ввести несколько имен. В терминале Linux это выглядит это примерно так:

touch file.txt touch file1.txt file2.txt

В дальнейшем, созданный документможно отредактировать в любом текстовом редакторе. Например, можно использовать редактор Nano или Vim.

Нужно отметить, что у команды «touch» есть много дополнительных параметров для управления временными метками. Например, параметр «-c» позволяет отменить обновление временных меток, если файл уже существует. Чтобы узнать больше введите в терминал команду «man touch».

Перенаправления вывода (>)

Также для создания пустого файла можно использовать оператор перенаправления вывода (>). Для этого нужно ввести знак «больше» и указать имя. В терминале Linux это выглядит вот так:

> new123.txt

Но, в данном случае нужно быть осторожным. Поскольку если файл уже существует, то он будет перезаписан.

Команда cat

Для создания небольшого текстового файла через терминал Linux можно использовать команду «cat» и уже упомянутый оператор перенаправления вывода.

Для этого нужно ввести команду «cat», знак «больше» (>) и название файла. После этого прямо в терминале можно ввести текст, который нужно сохранить в указанный документ. Для завершения ввода текста и сохранения нажимаем комбинацию клавиш Ctrl-D.

В терминале Linux данная команда выглядит примерно так:

cat > new_file.txt

Команда echo

Также с оператором перенаправления можно использовать и другие команды. Например, это может быть команда «echo», которая выводит текст. Если перенаправить ее вывод в файл, то система создаст указанный файл и сохранит в него текст.

При создании файлов с помощью оператора перенаправления нужно помнить, что вы можете перезаписать существующий документ. Также нужно отметить, что воспользоваться sudo не получится, поскольку в этом случае с правами суперпользователя будет выполняться команда «echo», а не запись.

Текстовые редакторы

Если вам нужно не просто создать файл, но также ввести в него много текста, то в этом случае удобнее всего будет использовать текстовые редакторы. Существует большое количество текстовых редакторов, которые запускаются прямо в терминале Linux и позволяют редактировать большие и сложные текстовые документы. Например, это такие редакторы как Nano, Vim и другие.

Текстовый редактор Nano установлен по умолчанию во многих дистрибутивах, а частности он есть в Ubuntu Linux. С Nano вы можете создать новый файл, сразу его отредактировать и сохранить. Для создания нового файла и перехода в редактор введите вот такую команду:

nano new_file.txt

После ввода такой команды появится интерфейс редактора Nano. В верхней части экрана будет информация о версии программы и название файла, а в нижней панель со списком горячих клавиш.

Для сохранения нажмите Ctrl-X и потом введите букву «Y» для подтверждения.

Если в системе нет Nano, то возможно там будет предустановлен Vim. Чтобы создать файл с помощью Vim просто вводим команду «vim» и через пробел название файла. В терминале Linux это выглядит вот так:

vim new1.txt

Vim намного функциональней Nano, но при этом и намного сложнее. Одной из первых проблем, с которой сталкиваются новички, это выход из Vim. Для этого нужно нажать клавишу Esc, ввести вот такую команду и нажать Enter.

:wq

Если что-то не получается, то возможно проблема в раскладке клавиатуры. Переключитесь на английскую и попробуйте еще раз.

Linux команда mkdir и команды создания файлов.

начало / Блог компании RUVDS.com / Хабр

Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.



Сценарии командной строки — это наборы тех же самых команд, которые можно вводить с клавиатуры, собранные в файлы и объединённые некоей общей целью. При этом результаты работы команд могут представлять либо самостоятельную ценность, либо служить входными данными для других команд. Сценарии — это мощный способ автоматизации часто выполняемых действий.

Итак, если говорить о командной строке, она позволяет выполнить несколько команд за один раз, введя их через точку с запятой:

pwd ; whoami

На самом деле, если вы опробовали это в своём терминале, ваш первый bash-скрипт, в котором задействованы две команды, уже написан. Работает он так. Сначала команда pwd выводит на экран сведения о текущей рабочей директории, потом команда whoamiпоказывает данные о пользователе, под которым вы вошли в систему.

Используя подобный подход, вы можете совмещать сколько угодно команд в одной строке, ограничение — лишь в максимальном количестве аргументов, которое можно передать программе. Определить это ограничение можно с помощью такой команды:

getconf ARG_MAX

Командная строка — отличный инструмент, но команды в неё приходится вводить каждый раз, когда в них возникает необходимость. Что если записать набор команд в файл и просто вызывать этот файл для их выполнения? Собственно говоря, тот файл, о котором мы говорим, и называется сценарием командной строки.

Как устроены bash-скрипты


Создайте пустой файл с использованием команды touch. В его первой строке нужно указать, какую именно оболочку мы собираемся использовать. Нас интересует bash, поэтому первая строка файла будет такой:
#!/bin/bash

В других строках этого файла символ решётки используется для обозначения комментариев, которые оболочка не обрабатывает. Однако, первая строка — это особый случай, здесь решётка, за которой следует восклицательный знак (эту последовательность называют шебанг) и путь к bash, указывают системе на то, что сценарий создан именно для bash.

Команды оболочки отделяются знаком перевода строки, комментарии выделяют знаком решётки. Вот как это выглядит:

#!/bin/bash # This is a comment pwd whoami

Тут, так же, как и в командной строке, можно записывать команды в одной строке, разделяя точкой с запятой. Однако, если писать команды на разных строках, файл легче читать. В любом случае оболочка их обработает.

Установка разрешений для файла сценария


Сохраните файл, дав ему имя myscript, и работа по созданию bash-скрипта почти закончена. Сейчас осталось лишь сделать этот файл исполняемым, иначе, попытавшись его запустить, вы столкнётесь с ошибкой Permission denied.
Попытка запуска файла сценария с неправильно настроенными разрешениями

Сделаем файл исполняемым:

chmod +x ./myscript

Теперь попытаемся его выполнить:
./myscript

После настройки разрешений всё работает как надо.
Успешный запуск bash-скрипта

Вывод сообщений


Для вывода текста в консоль Linux применяется команда echo. Воспользуемся знанием этого факта и отредактируем наш скрипт, добавив пояснения к данным, которые выводят уже имеющиеся в нём команды:
#!/bin/bash # our comment is here echo "The current directory is:" pwd echo "The user logged in is:" whoami

Вот что получится после запуска обновлённого скрипта.
Вывод сообщений из скрипта

Теперь мы можем выводить поясняющие надписи, используя команду echo. Если вы не знаете, как отредактировать файл, пользуясь средствами Linux, или раньше не встречались с командой echo, взгляните на этот материал.

Использование переменных


Переменные позволяют хранить в файле сценария информацию, например — результаты работы команд для использования их другими командами.

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

Существуют два типа переменных, которые можно использовать в bash-скриптах:

  • Переменные среды
  • Пользовательские переменные

Переменные среды


Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя:
#!/bin/bash # display user home echo "Home for the current user is: $HOME"

Обратите внимание на то, что мы можем использовать системную переменную $HOME в двойных кавычках, это не помешает системе её распознать. Вот что получится, если выполнить вышеприведённый сценарий.
Использование переменной среды в сценарии

А что если надо вывести на экран значок доллара? Попробуем так:

echo "I have $1 in my pocket"

Система обнаружит знак доллара в строке, ограниченной кавычками, и решит, что мы сослались на переменную. Скрипт попытается вывести на экран значение неопределённой переменной $1. Это не то, что нам нужно. Что делать?

В подобной ситуации поможет использование управляющего символа, обратной косой черты, перед знаком доллара:

echo "I have \$1 in my pocket"

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

Пользовательские переменные


В дополнение к переменным среды, bash-скрипты позволяют задавать и использовать в сценарии собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.

Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:
TNW-CUS-FMP — промо-код на 10% скидку на наши услуги, доступен для активации в течение 7 дней

#!/bin/bash # testing variables grade=5 person="Adam" echo "$person is a good boy, he is in grade $grade"

Вот что получится после запуска такого сценария.
Пользовательские переменные в сценарии

Подстановка команд


Одна из самых полезных возможностей bash-скриптов — это возможность извлекать информацию из вывода команд и назначать её переменным, что позволяет использовать эту информацию где угодно в файле сценария.

Сделать это можно двумя способами.

  • С помощью значка обратного апострофа «`»
  • С помощью конструкции $()

Используя первый подход, проследите за тем, чтобы вместо обратного апострофа не ввести одиночную кавычку. Команду нужно заключить в два таких значка:
mydir=`pwd`

При втором подходе то же самое записывают так:
mydir=$(pwd)

А скрипт, в итоге, может выглядеть так:
#!/bin/bash mydir=$(pwd) echo $mydir

В ходе его работы вывод команды pwdбудет сохранён в переменной mydir, содержимое которой, с помощью команды echo, попадёт в консоль.
Скрипт, сохраняющий результаты работы команды в переменной

Математические операции


Для выполнения математических операций в файле скрипта можно использовать конструкцию вида $((a+b)):
#!/bin/bash var1=$(( 5 + 5 )) echo $var1 var2=$(( $var1 * 2 )) echo $var2


Математические операции в сценарии

Управляющая конструкция if-then


В некоторых сценариях требуется управлять потоком исполнения команд. Например, если некое значение больше пяти, нужно выполнить одно действие, в противном случае — другое. Подобное применимо в очень многих ситуациях, и здесь нам поможет управляющая конструкция if-then. В наиболее простом виде она выглядит так:
if команда then команды fi

А вот рабочий пример:
#!/bin/bash if pwd then echo "It works" fi

В данном случае, если выполнение команды pwdзавершится успешно, в консоль будет выведен текст «it works».

Воспользуемся имеющимися у нас знаниями и напишем более сложный сценарий. Скажем, надо найти некоего пользователя в /etc/passwd, и если найти его удалось, сообщить о том, что он существует.

#!/bin/bash user=likegeeks if grep $user /etc/passwd then echo "The user $user Exists" fi

Вот что получается после запуска этого скрипта.
Поиск пользователя

Здесь мы воспользовались командой grepдля поиска пользователя в файле /etc/passwd. Если команда grepвам незнакома, её описание можно найти здесь.

В этом примере, если пользователь найден, скрипт выведет соответствующее сообщение. А если найти пользователя не удалось? В данном случае скрипт просто завершит выполнение, ничего нам не сообщив. Хотелось бы, чтобы он сказал нам и об этом, поэтому усовершенствуем код.

Управляющая конструкция if-then-else


Для того, чтобы программа смогла сообщить и о результатах успешного поиска, и о неудаче, воспользуемся конструкцией if-then-else. Вот как она устроена:
if команда then команды else команды fi

Если первая команда возвратит ноль, что означает её успешное выполнение, условие окажется истинным и выполнение не пойдёт по ветке else. В противном случае, если будет возвращено что-то, отличающееся от нуля, что будет означать неудачу, или ложный результат, будут выполнены команды, расположенные после else.

Напишем такой скрипт:

#!/bin/bash user=anotherUser if grep $user /etc/passwd then echo "The user $user Exists" else echo "The user $user doesn’t exist" fi

Его исполнение пошло по ветке else.
Запуск скрипта с конструкцией if-then-else

Ну что же, продолжаем двигаться дальше и зададимся вопросом о более сложных условиях. Что если надо проверить не одно условие, а несколько? Например, если нужный пользователь найден, надо вывести одно сообщение, если выполняется ещё какое-то условие — ещё одно сообщение, и так далее. В подобной ситуации нам помогут вложенные условия. Выглядит это так:

if команда1 then команды elif команда2 then команды fi

Если первая команда вернёт ноль, что говорит о её успешном выполнении, выполнятся команды в первом блоке then, иначе, если первое условие окажется ложным, и если вторая команда вернёт ноль, выполнится второй блок кода.
#!/bin/bash user=anotherUser if grep $user /etc/passwd then echo "The user $user Exists" elif ls /home then echo "The user doesn’t exist but anyway there is a directory under /home" fi

В подобном скрипте можно, например, создавать нового пользователя с помощью команды useradd, если поиск не дал результатов, или делать ещё что-нибудь полезное.

Сравнение чисел


В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.
n1 -eq n2Возвращает истинное значение, если n1 равно n2.
n1 -ge n2 Возвращает истинное значение, если n1больше или равно n2.
n1 -gt n2Возвращает истинное значение, если n1 больше n2.
n1 -le n2Возвращает истинное значение, если n1меньше или равно n2.
n1 -lt n2Возвращает истинное значение, если n1 меньше n2.
n1 -ne n2Возвращает истинное значение, если n1не равно n2.

В качестве примера опробуем один из операторов сравнения. Обратите внимание на то, что выражение заключено в квадратные скобки.
#!/bin/bash val1=6 if [ $val1 -gt 5 ] then echo "The test value $val1 is greater than 5" else echo "The test value $val1 is not greater than 5" fi

Вот что выведет эта команда.
Сравнение чисел в скриптах

Значение переменной val1больше чем 5, в итоге выполняется ветвь thenоператора сравнения и в консоль выводится соответствующее сообщение.

Сравнение строк


В сценариях можно сравнивать и строковые значения. Операторы сравнения выглядят довольно просто, однако у операций сравнения строк есть определённые особенности, которых мы коснёмся ниже. Вот список операторов.
str1 = str2 Проверяет строки на равенство, возвращает истину, если строки идентичны.
str1 != str2Возвращает истину, если строки не идентичны.
str1 < str2Возвращает истину, если str1меньше, чем str2.
str1 > str2 Возвращает истину, если str1больше, чем str2.
-n str1 Возвращает истину, если длина str1больше нуля.
-z str1Возвращает истину, если длина str1равна нулю.

Вот пример сравнения строк в сценарии:
#!/bin/bash user ="likegeeks" if [$user = $USER] then echo "The user $user  is the current logged in user" fi

В результате выполнения скрипта получим следующее.
Сравнение строк в скриптах

Вот одна особенность сравнения строк, о которой стоит упомянуть. А именно, операторы «>» и «<» необходимо экранировать с помощью обратной косой черты, иначе скрипт будет работать неправильно, хотя сообщений об ошибках и не появится. Скрипт интерпретирует знак «>» как команду перенаправления вывода.

Вот как работа с этими операторами выглядит в коде:

#!/bin/bash val1=text val2="another text" if [ $val1 \> $val2 ] then echo "$val1 is greater than $val2" else echo "$val1 is less than $val2" fi

Вот результаты работы скрипта.
Сравнение строк, выведенное предупреждение

Обратите внимание на то, что скрипт, хотя и выполняется, выдаёт предупреждение:

./myscript: line 5: [: too many arguments

Для того, чтобы избавиться от этого предупреждения, заключим $val2 в двойные кавычки:
#!/bin/bash val1=text val2="another text" if [ $val1 \> "$val2" ] then echo "$val1 is greater than $val2" else echo "$val1 is less than $val2" fi

Теперь всё работает как надо.
Сравнение строк

Ещё одна особенность операторов «>» и «<» заключается в том, как они работают с символами в верхнем и нижнем регистрах. Для того, чтобы понять эту особенность, подготовим текстовый файл с таким содержимым:

Likegeeks likegeeks

Сохраним его, дав имя myfile, после чего выполним в терминале такую команду:
sort myfile

Она отсортирует строки из файла так:
likegeeks Likegeeks

Команда sort, по умолчанию, сортирует строки по возрастанию, то есть строчная буква в нашем примере меньше прописной. Теперь подготовим скрипт, который будет сравнивать те же строки:
#!/bin/bash val1=Likegeeks val2=likegeeks if [ $val1 \> $val2 ] then echo "$val1 is greater than $val2" else echo "$val1 is less than $val2" fi

Если его запустить, окажется, что всё наоборот — строчная буква теперь больше прописной.
Команда sort и сравнение строк в файле сценария

В командах сравнения прописные буквы меньше строчных. Сравнение строк здесь выполняется путём сравнения ASCII-кодов символов, порядок сортировки, таким образом, зависит от кодов символов.

Команда sort, в свою очередь, использует порядок сортировки, заданный в настройках системного языка.

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


Пожалуй, нижеприведённые команды используются в bash-скриптах чаще всего. Они позволяют проверять различные условия, касающиеся файлов. Вот список этих команд.
-d fileПроверяет, существует ли файл, и является ли он директорией.
-e fileПроверяет, существует ли файл.
-f file Проверяет, существует ли файл, и является ли он файлом.
-r fileПроверяет, существует ли файл, и доступен ли он для чтения.
-s file Проверяет, существует ли файл, и не является ли он пустым.
-w fileПроверяет, существует ли файл, и доступен ли он для записи.
-x fileПроверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 Проверяет, новее ли file1, чем file2.
file1 -ot file2Проверяет, старше ли file1, чем file2.
-O file Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G fileПроверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

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

Опробуем одну из команд на практике:

#!/bin/bash mydir=/home/likegeeks if [ -d $mydir ] then echo "The $mydir directory exists" cd $ mydir ls else echo "The $mydir directory does not exist" fi

Этот скрипт, для существующей директории, выведет её содержимое.
Вывод содержимого директории

Полагаем, с остальными командами вы сможете поэкспериментировать самостоятельно, все они применяются по тому же принципу.

Итоги


Сегодня мы рассказали о том, как приступить к написанию bash-скриптов и рассмотрели некоторые базовые вещи. На самом деле, тема bash-программирования огромна. Эта статья является переводом первой части большой серии из 11 материалов. Если вы хотите продолжения прямо сейчас — вот список оригиналов этих материалов. Для удобства сюда включён и тот, перевод которого вы только что прочли.
  1. Bash Script Step By Step — здесь речь идёт о том, как начать создание bash-скриптов, рассмотрено использование переменных, описаны условные конструкции, вычисления, сравнения чисел, строк, выяснение сведений о файлах.
  2. Bash Scripting Part 2, Bash the awesome — тут раскрываются особенности работы с циклами for и while.
  3. Bash Scripting Part 3, Parameters & options — этот материал посвящён параметрам командной строки и ключам, которые можно передавать скриптам, работе с данными, которые вводит пользователь, и которые можно читать из файлов.
  4. Bash Scripting Part 4, Input & Output — здесь речь идёт о дескрипторах файлов и о работе с ними, о потоках ввода, вывода, ошибок, о перенаправлении вывода.
  5. Bash Scripting Part 5, Sighals & Jobs — этот материал посвящён сигналам Linux, их обработке в скриптах, запуску сценариев по расписанию.
  6. Bash Scripting Part 6, Functions — тут можно узнать о создании и использовании функций в скриптах, о разработке библиотек.
  7. Bash Scripting Part 7, Using sed — эта статья посвящена работе с потоковым текстовым редактором sed.
  8. Bash Scripting Part 8, Using awk — данный материал посвящён программированию на языке обработки данных awk.
  9. Bash Scripting Part 9, Regular Expressions — тут можно почитать об использовании регулярных выражений в bash-скриптах.
  10. Bash Scripting Part 10, Practical Examples — здесь приведены приёмы работы с сообщениями, которые можно отправлять пользователям, а так же методика мониторинга диска.
  11. Bash Scripting Part 11, Expect Command — этот материал посвящён средству Expect, с помощью которого можно автоматизировать взаимодействие с интерактивными утилитами. В частности, здесь идёт речь об expect-скриптах и об их взаимодействии с bash-скриптами и другими программами.

Полагаем, одно из ценных свойств этой серии статей заключается в том, что она, начинаясь с самого простого, подходящего для пользователей любого уровня, постепенно ведёт к довольно серьёзным темам, давая шанс всем желающим продвинуться в деле создания сценариев командной строки Linux.

Уважаемые читатели! Просим гуру bash-программирования рассказать о том, как они добрались до вершин мастерства, поделиться секретами, а от тех, кто только что написал свой первый скрипт, ждём впечатлений.

Как создать пустой файл в linux из терминала

Работая в терминале linux нередко возникает вопрос как создать пустой файл. В этой статье приведено 6 разных способов создать файл.

Способ 1. Создать файл используя утилиту touch.

Вообще команда touch используется чтобы измененять временную метку файла (время доступа к файлу и время его последнего изменения). Однако если файла с заданным именем не существует, то комианда touch создаст новый пустой файл.

Синтаксис команы для набора из терминала.

[root@linux ~]# touch name_file
 

Способ 2. Создать файл используя функцию перенаправления командного процессора.

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

Синтаксис команы для набора из терминала.

[root@linux ~]# > name_file
 

Способ 3. Создать файл используя функцию перенаправления командного процессора и команду echo.

Похож на предыдующий способ, только используется echo.

Синтаксис команы для набора из терминала.

[root@linux ~]# echo > name_file 
 

Способ 4. Создать файл используя утилиту cp.

Команда cp создана для копирования файлов, если в качестве файла указать /dev/null то будет создан новый файл.

Синтаксис команы для набора из терминала.

[root@linux ~]# cp /dev/null name_file 
 

Способ 5. Создать файл используя функцию перенаправления командного процессора и команду cat.

Вообще говоря утилита cat позволяет позволяет связыввать файлы и просматривать их содержимое, однако используя ее вместе с функцией перенаправления можно и файл создать.

Синтаксис команы для набора из терминала.

[root@linux ~]# cat > name_file

Создание тестового файла с включенным в него текстом.

[root@linux ~]# cat > name_file << EOF 
 TEXT_1
 TEST_2
 TEXT_N
 EOF
 

Способ 6. Создать файл используя текстовый редактор vim.

Текстовый редактор Vim в большинстве систем установлен поумалчанию, является мощным консолным редактором в Linux.

Синтаксис команы для набора из терминала.

[root@linux ~]# vim -c wq name_file 
 

Вот и все, я привел основные способы создания файлов в linux из консоли, наверняка существует еще множество разных способов. Если знаете пишите.

Как создавать и использовать сценарии Bash

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

Bash - это оболочка Unix, которая представляет собой интерфейс командной строки (CLI) для взаимодействия с операционной системой (ОС). Любую команду, которую можно запустить из командной строки, можно использовать в сценарии bash. Сценарии используются для выполнения ряда команд.

Bash по умолчанию доступен в операционных системах Linux и macOS.

Это не исчерпывающее руководство по написанию сценариев bash, а всего лишь простое руководство по началу работы с созданием первого сценария и изучению базового синтаксиса bash.

Примечание : более новые установки macOS (от Catalina) поставляются с zsh (оболочка Z) по умолчанию, но все, что описано в этой статье, будет по-прежнему применимо.

Предварительные требования
  • Требуются базовые знания командной строки.Все, что вам нужно знать, чтобы начать работу, можно найти в моей статье «Как использовать командную строку».

Это руководство было создано для macOS и будет использовать / Users / you в качестве пользовательского каталога по умолчанию для всех примеров. Однако представленные здесь концепции будут применяться к любой Unix-подобной операционной системе, включая macOS и различные дистрибутивы Linux.

Голы

В этом уроке мы собираемся:

  • Создайте сценарий bash
  • Узнать о:

Создайте свой первый сценарий

Создать сценарий bash намного проще, чем вы думаете.

Создайте файл с именем hello-world , используя команду touch .

Отредактируйте файл с помощью программы по вашему выбору. Внутри файла выведите строку с надписью «Hello, world!» с использованием echo .

привет-мир

Теперь из командной строки запустите сценарий с помощью интерпретатора bash :

Вы увидите, что сценарий успешно запущен.

Вот и все, вы создали свой первый скрипт!

Исполняемые скрипты

Итак, вы узнали, как запустить сценарий из командной строки с префиксом интерпретатора bash .Однако, если вы хотите запустить сценарий только по имени, он не сработает. Попробуйте запустить файл, просто набрав имя файла и нажав клавишу ВВОД. Обратите внимание, что мы добавляем к файлу префикс ./ , что означает файл в текущем каталоге.

  bash: ./hello-world: В доступе отказано  

Чтобы запустить файл напрямую, нам нужно изменить разрешения, чтобы скрипт мог быть исполняемым для пользователя. chmod - это команда, которая изменяет права доступа к файлу, а + x добавит права на выполнение скрипту.

Чтобы интерпретировать файл как исполняемый, вам также необходимо добавить shebang ( #! ) вверху скрипта. В Unix-подобных системах текстовый файл с шебангом интерпретируется как исполняемый файл. Вы можете подтвердить, где находится интерпретатор bash с каким bash.

Мы добавим #! / Bin / bash в начало скрипта.

  #! / Bin / bash echo "Привет, мир!"  

Примечание. Вместо этого вы также можете увидеть #! / Usr / bin / env bash , что можно использовать, если вы не знаете точный путь для bash.

Теперь вы можете запустить hello-world напрямую.

Примечание : Чтобы запустить сценарий bash без указания каталога (например, с использованием ./ ), вам необходимо добавить каталог сценария в PATH, запустив export PATH = $ PATH: / path / в / скрипт / каталог . Однако для личных сценариев в этом обычно нет необходимости.

Струны

Простая строка в Bash не требует двойных кавычек - вы можете написать ее напрямую.

  эхо Обычная струна  

Одиночная или двойная кавычка ожидает закрывающего совпадения, поэтому, чтобы использовать ее в такой строке, вам нужно будет экранировать кавычку.

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

  echo 'Строка в одинарных кавычках' echo "Строка в двойных кавычках"  
  Строка в одинарных кавычках Строка в двойных кавычках  

С флагом -e bash будет интерпретировать строки с символами, экранированными обратной косой чертой, например \ n для новой строки.Это также требует строки в кавычках.

  echo -e "В этой строке \ nновая строка"  
  Эта строка имеет новая линия  

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

Переменные

Переменная объявляется без знака доллара ( $ ), но имеет его при вызове. Давайте отредактируем наш пример hello-world , чтобы использовать переменную для приветствуемого объекта, которым является World .

привет-мир

  #! / Bin / bash who = "Мир" echo "Привет, $ who!"  

Обратите внимание, что who = "World" с пробелом между назначениями недопустимы - между переменной и значением должен быть пробел , а не .

Для интерполяции переменных необходимы строки в двойных кавычках. Внутри строки в одинарных кавычках знак доллара будет интерпретироваться буквально

.

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

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

Снаряд

Если вы хотите использовать результат выполнения оболочки внутри строки, вы можете сделать это со знаком доллара, за которым следует круглые скобки. ( $ () ). Например, команда whoami распечатает вашего текущего пользователя. Чтобы использовать его в строке, оберните whoami в синтаксис выполнения оболочки.

Пользовательский ввод

Мы объявили переменную в последнем примере, но мы также можем заставить пользователя устанавливать значение переменной динамически.Например, вместо того, чтобы просто сказать сценарию Hello, World! , мы можем заставить его запрашивать имя человека, вызывающего сценарий, а затем вывести это имя. Мы сделаем это с помощью команды read .

привет-мир

  #! / Bin / bash echo "Кто ты?" читать кто echo "Привет, $ who!"  
  Кто ты? > Таня Привет, Таня!  

Сравнение

Операторы в bash немного отличаются от тех, к которым вы, возможно, привыкли.

Чтобы сравнить номера , вы будете использовать операторы в столбце сравнения номеров, например -lt для меньше чем.

Чтобы сравнить строки , вы будете использовать операторы в столбце сравнения строк, например < для меньше чем.

Это противоположно тому, что вы могли ожидать, но именно так это работает в bash.

Сравнение номеров Сравнение строк Описание
-экв == равно
-ne ! = не равно
-GT > Больше
-ge > = Больше или равно
-lt < Менее
-ле <= Меньше или равно

Вы также можете использовать -z для проверки пустоты в строке.

Условия

, если операторы используют ключевые слова if , then , else и fi . Условие заключено в квадратные скобки.

check-id

  #! / Bin / bash echo "Сколько тебе лет?" читать возраст если [$ age -gt 20] тогда echo «Можно пить». еще echo «Ты слишком молод, чтобы пить». fi  
  Сколько тебе лет? > 30 Можно пить.  

Петли

Bash использует для , , а и до циклов .В этом примере я буду использовать цикл for ... in , чтобы получить все файлы в каталоге и перечислить их.

списков

  #! / Bin / bash files = / Users / you / dev / * для файла в $ files делать echo $ (базовое имя $ файл) сделано  
  hello-world check-id файлы списков  

Массивы

Массив в bash определен в круглых скобках. Между элементами массива нет запятых.

  beatles = ('Джон' Пол 'Джордж' Ринго)  

Чтобы получить доступ к элементу из массива, вы будете использовать квадратные скобки ( [] ).В bash массивы индексируются 0. Также необходимо использовать синтаксис раскрытия параметров.

Заключение

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

.

Создать новый файл из шаблонов с помощью сценария bash

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Стек О
.

двоичных файлов - как создать двоичный файл с помощью Bash?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

bash - Создание нескольких файлов с содержимым из оболочки

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Стеклянная печь
.

bash - Как мне создавать файлы со специальными символами в Linux?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

bash - Создание tar-файла и присвоение имени по текущей дате

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также