- Выполнение команд через shell-скрипты в Linux
- Требования
- Начало работы
- Создание и запуск базового shell-скрипта
- Использование переменных в скриптах
- Чтение ввода из командной строки
- Определение функций
- Заключение
- How to Create a New File in Linux from Bash?
- Using the «touch» command
- Using the «cat» command
- Using the Redirection Operator
- Using the «echo» command
- Using the «printf» command
- Как быстро создать пустой и непустой текстовый файл в Linux через терминал?
- Создание пустых файлов
- Создание файлов с текстом
- Другие способы создания файлов
- Создание пустого файла с помощью touch
- Создание файла «с текстом» с помощью cat
- Пример
- Создание файла с помощью редактора.
- Создание файла с данными через dd
- Выделение места под файл средствами файловой системы
Выполнение команд через shell-скрипты в Linux
Оболочка — это интерпретатор командной строки, который позволяет пользователю взаимодействовать с системой. Он отвечает за получение входных данных от пользователя и вывод данных.
Сценарии оболочки — это серия команд, записанных в порядке выполнения. Сценарии могут содержать функции, циклы, команды и переменные. Они упрощают сложные серии команд и повторяющиеся задачи.
В этом мануале мы разберем, как создавать и выполнять сценарии оболочки для командной строки в Linux.
Требования
- Умение пользоваться терминалом.
- Знание текстового редактора.
- Знание команд: chmod, mkdir и cd.
Читайте также:
Начало работы
Скрипты оболочки нужно сохранять с расширением .sh.
Файл должен начинаться с шебанга (#!), чтобы система Linux понимала, какой интерпретатор использовать для сценария оболочки.
В этом мануале предполагается, что вы используете среду bash.
В скриптах также могут содержаться комментарии, они нужны для упрощения их читаемости. Удобный сценарий всегда содержит комментарии, которые помогают понять принцип работы скрипта и причины выбора тех или иных команд.
Создание и запуск базового shell-скрипта
Скрипт оболочки можно создать с помощью редактора vi, команды cat или текстового редактора.
Мы будем создавать с помощью vi:
Команда запустит редактор vi и создаст файл basic_script.sh.
Затем нажмите i на клавиатуре для запуска INSERT MODE. Добавьте следующие строки:
Скрипт запускает команды whoami и date. Команда whoami отображает активное имя пользователя, а date — текущую системную метку времени.
Чтобы сохранить и выйти из редактора vi:
Теперь можно запустить сценарий с помощью команды:
root Fri Jun 19 16:59:48 UTC 2020
Первая строка вывода соответствует команде whoami, а вторая команде date.
Можно запустить скрипт без указания bash:
Запуск файла таким образом может потребовать разрешение пользователя. Запуск с помощью bash не требует этого разрешения.
~bash: ./basic_script.sh: Permission denied
Команда bash filename требует только прав на чтение.
Команда ./filename запускает файл как исполняемый и требует разрешения execute.
Для выполнения сценария нужно обновить привилегии.
Эта команда применит chmod и дает права x (исполнение) текущему пользователю.
Использование переменных в скриптах
Скрипты могут включать пользовательские переменные. По мере увеличения размера сценариев важно иметь четко определенные переменные с информативными именами.
Добавьте в скрипт следующие строки:
#!/bin/bash # This is a comment # defining a variable GREETINGS="Hello! How are you" echo $GREETINGS
GREETINGS — это переменная, определенная с помощью символа $ (знак доллара). В строке, в которой переменным присваивается значение, не должно быть пробелов.
На экран выведется присвоенное переменной значение:
Как видите, переменная GREETINGS успешно определена в сценарии и доступна при запуске скрипта.
Чтение ввода из командной строки
Shell-скрипты можно сделать интерактивными с возможностью принимать ввод из командной строки. Сохранить ввод командной строки в переменной можно с помощью команды read.
Добавьте в скрипт следующие строки:
#!/bin/bash # This is a comment # defining a variable echo "What is your name?" # reading input read NAME # defining a variable GREETINGS="Hello! How are you" echo $NAME $GREETINGS
Переменная NAME принимает ввод из командной строки. Этот скрипт ожидает, пока пользователь введет значение NAME. Затем он выводит NAME и GREETINGS.
What is your name? 8host 8host Hello! How are you
В примере пользователь ввел значение 8host.
Определение функций
Пользователи могут определять свои функции в сценариях. Эти функции могут принимать несколько аргументов.
Добавьте в скрипт следующие строки:
#!/bin/bash #This is a comment # defining a variable echo "What is the name of the directory you want to create?" # reading input read NAME echo "Creating $NAME . " mkcd () mkdir "$NAME" cd "$NAME" > mkcd echo "You are now in $NAME"
Этот скрипт запрашивает имя каталога. Затем он c помощью mkdir создает требуемый каталог и переходит в него.
What is the name of the directory you want to create? test_dir Creating test_dir . You are now in test_dir
В данном примере мы ввели test_dir. Далее скрипт создаст новый каталог с этим названием. Наконец, скрипт перейдет из текущего рабочего каталога пользователя в test_dir.
Заключение
В этом мануале мы разобрали, как создавать и запускать скрипты оболочки для командной строки в Linux.
Подумайте о повторяющихся или отнимающих много времени задачах, которые вы часто выполняете – возможно, такие команды полезнее заменить скриптами.
How to Create a New File in Linux from Bash?
Before getting into the ways of creating a file using Bash, let’s first understand how Linux treats its files. Linux organizes all its data into files and files are organized into directories. Further, the directories are organized into tree-like structures called the filesystem. When you have to work in a Linux environment, you would definitely have to spend a lot of your time working on different types of files.
There are various ways in which one can create a file in Linux. You can create a file from the Bash Shell or you can use the Desktop File Manager to do so. In this article, we will focus on different Shell commands that you can use to create a file.
Using the «touch» command
The touch command is by far the most frequently used command for creating a new file in Linux. To create a new file, you need to run the touch command followed by the name of the file. For example,
It will create an empty file called «hello.txt» in the current directory. Use the «ls» command to verify if the file has been created or not.
Using the «cat» command
Normally we use the «cat» command to read the contents of a file; however, we can also use this command to create a new file. Let’s see how.
To create a new file, run the «cat» command and then use the redirection operator «>» followed by the name of the file. Now you will be prompted to insert data into this newly created file. Type a line and then press «Ctrl+D» to save the file.
$ cat > secondFile.txt Welcome to Tutorialspoint!
The above command will create a new file called «secondFile.txt» and save it with the content «Welcome to Tutorialspoint».
Again, use the «ls» command to verify if the new file has been created or not.
$ ls hello.txt newdirectory secondFile.txt
Next, use the «cat» command to see the contents of «secondFile.txt».
$ cat secondFile.txt Welcome to Tutorialspoint!
Using the Redirection Operator
You can simply use the redirection operator «>» to create a new blank file in the current directory. Run the «>» operator followed by the name of the file.
Now use the «ls» command again to verify −
$ ls hello.txt newdirectory secondFile.txt thirdFile.txt
Note that the «>» operator overwrites the contents of a file if it is already present. For example, the following command will overwrite the contents of «secondFile.txt» because the file already exists and we know it contains the line «Welcome to Tutorialspoint!»
Now use the «cat» command to check the contents of «secondFile.txt».
It will display nothing because the file is now empty.
You can use the redirection operator «>>» to append the contents of a file into another. For example,
$ cat hello.txt This is the first file. $ cat secondFile.txt This is the Second File.
Now we can use the following command to append the contents of «secondFile.txt» at the end of «hello.txt».
$ cat secondFile.txt >> hello.txt $ cat hello.txt This is the first file. This is the Second File.
Using the «echo» command
The «echo» command takes a string as argument and displays it as output. For example,
$ echo "This is the Fourth File" This is the Fourth File
We can redirect this output to a new file, such as −
$ echo "This is the Fourth File" > fourthFile.txt
The above command will create a new file (or overwrite the file if it already exists) with the string passed as the argument to «echo». Verify using the «cat» command −
$ cat fourthFile.txt This is the Fourth File
If you simply want to create a blank new file, use the «echo» command without any argument −
Using the «printf» command
The «printf» command works just like the «echo» command with the only exception that the «printf» command provides additional formatting options that you can use to pass a formatted string as the argument.
The following «printf» command redirects the input formatted string into a new file «fifthFile.txt». If the file already exists, then it will overwrite its contents.
$ printf "First Line.
Second Line.
" > fifthFile.txt $ cat fifthFile.txt First Line. Second Line.
Как быстро создать пустой и непустой текстовый файл в Linux через терминал?
Ответ общий, вы можете исправить его, если считаете нужным.
Существует N-ое количество способов создания текстовых файлов, мы приведём два основных, которые, на наш взляд, самые быстрые с точки зрения клавиатурного ввода, и несколько других.
Под фразой «при вводе» подразумевается, что нужно ввести команду в терминал и нажать клавишу Enter .
Создание пустых файлов
При вводе этой команды в текущей директории будет создан пустой файл с именем a .
Можно вводить без пробела:
Более читаемый вариант, помогает не ошибиться и не записать случайно результат предыдущей команды в файл:
Можно создать сразу сколь угодно файлов:
Хотя так удобней (о touch будет далее):
Создание файлов с текстом
При вводе этой команды в текущей директории будет создан файл с именем h , содержащий текст blablabla и один перевод строки.
Можно вводить без пробела вокруг оператора > :
Выводимый контекст можно заключить в кавычки, а можно и не заключать, даже если он содержит пробелы:
echo bla bla bla > j echo 'bla bla bla' > k echo "bla bla bla" > l
Все три вышеперечисленные команды дают одинаковый результат (кроме имён файлов, естественно).
Также можно провернуть такую штуку:
При вводе этой команды в текущей директории будут созданы два пустых файла: m и n ; и файл o , содержащий текст 123 и один перевод строки.
Иными словами, результат всех команд, которые что-нибудь выводят, можно запихнуть в файл .
Ман по man ‘у . При вводе этой команды в текущей директории будет создан файл с именем p , содержащий мануал по команде man .
Другие способы создания файлов
Создание пустого файла с помощью touch
При вводе этой команды в текущей директории будет создан пустой файл с именем q .
Если быть точным, то touch это команда, основное назначение которой изменить время последнего изменения или последнего доступа файла, если же файл не существует, то она создает его. Цитата.
Создание файла «с текстом» с помощью cat
При вводе этой команды в текущей директории будет создан пустой файл с именем r и терминал перейдёт в режим конкатенации вводимых строк к концу содержимого этого файла. То есть мы можем сразу же начать заполнять файл текстом. Сохранение набранного текста будет происходит построчно по нажатию клавиши Enter . Иными словами, по нажатию клавиши Enter будет выполняться конкатенация.
Можно вводить без пробела:
Пример
- Вводим cat>s — в текущей директории создан пустой файл с именем s .
- Набираем 123 — этого текста ещё не будет в файле.
- Нажимаем Enter — текст 123 записался в файл и курсор, как в терминале, так и в файле, перешёл на новую строку.
На строку выше вернуться нельзя.
Выйти из режима конкатенации можно с помощью Ctrl+D (EOF — End Of File) в начале строки. Если вы уже начали набирать строку, Ctrl+D не закончит ввод файла, но запишет набранную часть строки без символа конца строки. Так вы можете записывать строки частями. Для выхода с незавершённой строкой можно нажать Ctrl+D дважды, тогда последняя строка в файле не будет иметь символа конца строки (EOL — End Of Line).
Создание файла с помощью редактора.
Очевидно, что мы можем исользовать редактор типа nano , vi , vim , etc для создания файла.
- Вводим nano t — открывается редактор nano в терминальном режиме.
- Вводим 123 и нажимаем Ctrl + O (не ноль, а буква), а затем Enter — в текущей директории создался файл с именем t , содержащий текст 123 и один перевод строки.
- Чтобы выйти и редактора нажимаем Ctrl + X (внизу редактора подсказки).
Создание файла с данными через dd
Полезно иногда создавать файл определенного размера с нулями
dd if=/dev/zero of=./file bs=10M count=100
dd if=/dev/urandom of=./file bs=10M count=100
Создается файл из 100 блоков по 10 мегабайт — 1 ГБ.
Выделение места под файл средствами файловой системы
Такие команды работают быстерее dd потому как сами данные не записываются, а просто выделяется область диска
fallocate резервирует место под файл на диске, а truncate обрезает файл или добавляет до нужного размера, резервируя место на диске.
При создании файлов таким образом в них могут содержаться куски удаленных рание файлов на некоторых системах.