Запуск скриптов формата SH в Linux
Сначала мы предлагаем создать проверочный скрипт, который в будущем будем запускать. Конечно, вы можете пропустить данный этап, если сценарий командной строки уже имеется. Отметим, что сейчас мы не будем разбирать синтаксис языков программирования, а лишь расскажем, что каждому под силу создать собственный скрипт или вставить содержимое в файл для дальнейшего его вызова по обстоятельствам.
- Запустите «Терминал» удобным для вас образом, например, через меню приложений или горячую клавишу Ctrl + Alt + T.
- Здесь используйте команду sudo nano script.sh , где nano — используемый текстовый редактор, а script.sh — название создаваемого файла. Можно создавать файл, например, через тот же vi или gedit, сути это не изменит, а название элемента тоже меняется по личным предпочтениям пользователя.
- Подтвердите это действие, введя пароль от учетной записи суперпользователя, поскольку оно выполняется с аргументом sudo.
Как видим, ничего сложного в создании собственных скриптов для Bash нет, однако вся особенность заключается в знании кода. Придется либо писать его с нуля самому, либо скопировать готовые решения из свободных источников. После того, как скрипт успешно реализован в файле, можно смело переходить к следующему этапу.
Шаг 2: Настройка скрипта для утилиты env
Этот шаг тоже является не обязательным, однако без него не обойтись пользователям, которые задействуют утилиту env для запуска скрипта. Без предварительной настройки он просто не откроется, поскольку изначально не были получены соответствующие разрешения. Добавляются они через команду sudo chmod ugo+x script.sh , где script.sh — название необходимого файла.
Не забывайте, что все действия, выполняемые через аргумент sudo, требуют подтверждения подлинности учетной записи через ввод пароля суперпользователя. После этого отобразится новая строка для запуска команд, что означает успешное применение настройки.
Шаг 3: Запуск имеющегося скрипта
Перейдем к основному шагу, который и заключается в непосредственном запуске имеющегося скрипта. Для начала рассмотрим простую команду, которая имеет вид ./script.sh и отвечает за запуск файла из текущего места расположения. Результат вывода вы видите на приведенном ниже скриншоте. За пример мы взяли созданный ранее сценарий. По тому же принципу можно указать и полный путь к объекту, чтобы строка изменилась, например, на /home/user/script.sh .
В Linux имеется системная переменная PATH. В нее входит ряд папок, отвечающих за выполнение самых разнообразных действий. Одна из них называется /usr/local/bin и используется для ручной инсталляции программ. Если вы не желаете постоянно указывать полный путь к скрипту для его активации, просто добавьте его в одну из папок PATH. Для этого используется строка cp script.sh /usr/local/bin/script.sh .
После этого запуск будет доступен путем простого ввод названия файла с учетом расширения.
Второй метод открытия заключается в одновременном вызове оболочки. Вам следует переместиться в директорию со скриптом и написать bash script.sh . Этот метод хорош тем, что позволяет не вписывать полный путь к объекту или предварительно добавлять его в соответствующие директории PATH.
Это все, что мы хотели рассказать о взаимодействии со скриптами в Linux. Вам остается только создать соответствующий файл или открыть уже имеющийся, используя приведенные выше рекомендации.
Bash Scripting Tutorial for Beginners: What It Is, How to Write One, and Script Examples
If you’ve ever used a Linux operating system like most virtual private servers, you may have heard of bash. It’s a Unix shell that reads and executes various commands.
When you need to run several bash commands, you don’t have to execute them manually one at a time. Instead, it’s possible to create a script file that contains bash functions to run those commands.
It may sound complicated, but by learning its basics, you will understand the bash scripting language and find out how it can help your workflow.
This article will cover the process of bash scripting. We’ll go over everything from bash commands to running a bash program on a Linux terminal.
What Is Bash?
Bash, short for Bourne-Again Shell, is a Unix shell and a command language interpreter. It reads shell commands and interacts with the operating system to execute them.
To fully understand bash shell scripting, you need to know two concepts – shell and scripting.
Shell is a macro processor that uses commands to interact with the operating system. This means that it can retrieve, process, and store information on a computer.
Meanwhile, scripting is the process of compiling shell commands into a new file using a text editor.
When you write bash in a text editor, you’re compiling bash commands or bash functions – a set of commands that can be called numerous times by only using the function name. The text is then saved as an executable bash script file with the .sh extension.
Why Use Bash Scripting?
Bash scripts can help with your workflow as they compile many lengthy commands into a single executable script file.
For example, if you have multiple commands that you have to run at a specific time interval, you can compile a bash script instead of typing and executing the commands manually one by one. You only need to execute the script file when it’s necessary.
Here are some other advantages of using bash scripts:
- Well-structured commands – structure the commands in a sequence so that every time you execute the script, it will run in the right order.
- Task automation – automate the script execution at any defined time using cron’s time-based scheduler.
- Transparency – people can check the content of a script since it’s in a readable text file. However, if you run the commands using another program written in a different programming language, such as C++, you’ll need to access the source code.
- Transferable – if you transfer a script to other Linux distributions, it’ll still work, providing that shell commands are available on that particular operating system.
Pro Tip
Linux has a bash shell command manual. It contains descriptions of all technical terms and standard shell variables. Type and execute the man bash command to display the manual on the terminal.
Get Familiar With Bash Commands
Bash is available on almost all types of Unix-based operating systems and doesn’t require a separate installation. You will need a Linux command line, also known as the Linux terminal. It’s a program that contains the shell and lets you execute bash scripts.
Use this command to check the list of available shells on your Unix operating system:
The output should show a list like this:
Each bash shell script needs to start with #! followed by the absolute path to the bash interpreter. To view the path, enter this command:
It should produce the following output:
This is the standard path to the bash interpreter on most Unix operating systems. To let the shell know that it should run commands using the bash interpreter, start the script with this line:
Important! If you want to run bash scripts on a virtual private server, connect to it via an SSH client.
The next step is to write and compile the commands in a .sh file using a text editor. You will need a Unix text editor such as VIM or GNU Nano. In this tutorial, we’ll use the Nano text editor to create the file by inputting this command:
This will open a new .sh file for you to edit. Begin by writing #!/bin/bash followed by bash commands.
Important! Once you’re done using the Nano text editor, press Ctrl+X to close it, then press Y and Enter to save the changes.
Basic Bash Commands for Your First Bash Script
In order to successfully create your first bash script, you need to understand the essential bash commands. They are the main elements of a script, and you must know what they do and how to write them properly.
There are a lot of bash commands on Linux. To start things off, we’ll cover seven basic ones.
1. Comments
Comments feature a description on certain lines in the script. The terminal doesn’t parse comments during execution, so they won’t affect the output.
There are two ways to add comments to a script. The first method is by typing # at the beginning of a single-line comment.
The second method is by using : followed by ‘. This method works for multiple-line comments.
2. Variables
Variables are symbols that represent a character, strings of characters, or numbers. You only need to type the variable name in a command line to use the defined strings or numbers.
To assign a variable, type the variable name and the string value like here:
In this case, testvar will is the variable name, and This is a test variable is the string value. When assigning a variable, we recommend using a variable name that’s easy to remember and represents its value.
To read the variable value in the command line, use the $ symbol before the variable name. Take a look at the example below:
The second command line uses echo to print out the value of testvar. The output of that script will be:
Let’s take a look at how you can enter a string value by using the read command and make the script compare two string values from different variables:
The output of that script should be as follows:
Note that line 3 is the value that becomes variable a.
The script compares the variable a with the value 20 and the variable b with the value 50. Since the values are different, the script prints out Different number.
However, if the user inputs 50, this will be the output:
This example also uses conditional statements, which we will discuss later.
3. echo Command
echo is a well-known command used in many programming languages. There are various options you can use with echo to print the output on the terminal.
The first and most common use of echo is to output standard text:
The output of that command is Hello, World! By default, when using the echo command like this, the terminal will input a new line underneath that. If you want to echo an output without a new line, you can do so by using -n.
Use the option \n to introduce a line break into the output. To enable the backslash (\), you need to include -e.
The output of that command will look like this:
The option \t adds a horizontal tab space:
This command’s output will indent the text to the right:
You can also combine several options. For example, combine \n and \t to break the text into lines and indent it to the right:
The output of that command will look like this:
4. Functions
A function compiles a set of commands into a group. If you need to execute the command again, simply write the function instead of the whole set of commands.
There are several ways of writing functions.
The first way is by starting with the function name and following it with parentheses and brackets:
Or, if you want to write it in a single line:
The second method to write a function is using the reserved word function followed by the function name. This eliminates the need for parentheses:
This method also has a single-line version:
For example, we can write two functions with multiple echo commands:
Note that writing the functions as in the example above only defines them and doesn’t execute the contained commands. To execute a function, enter its name into the command line.
Now, let’s use the two examples above in a complete bash function, including its execution:
This is the output of the script above:
5. Loops
Loop bash commands are useful if you want to execute commands multiple times. There are three types of them you can run in bash – for, while, and until.
The for loop runs the command for a list of items:
The following example uses a for loop to print all the days of the week:
On line 2, “days” automatically becomes a variable, with the values being the day names that follow. Then, in the echo command, we use the $ symbol to call the variable values.
The output of that script will be as follows:
Notice that even with just one command line in the loop script, it prints out seven echo outputs.
The next type of loop is while. The script will evaluate a condition. If the condition is true, it will keep executing the commands until the output no longer meets the defined condition.
Let’s take a look at a simple example that involves a variable and increment operator, denoted as ((++)):
The variable starts with a 0 value, and the increment operator will increase it by one. The condition set is less than or equal to five, so the command will keep iterating until the output reaches five. The output of that script will be as follows:
The last type of loop, until, is the opposite of while. It will iterate the command until the condition becomes true.
If we want the same output as the while example above using the until loop, we can write the script like this:
Now, this command will iterate until the output value reaches five. The output will be the same as our example with the while loop:
6. Conditional Statements
Many programming languages, including bash, use conditional statements like if, then, and else for decision-making. They execute commands and print out outputs depending on the conditions.
The if statement is followed by a conditional expression. After that, it’s followed by then and the command to define the output of the condition. The script will execute the command if the condition expressed in the if statement is true.
However, if you want to execute a different command if the condition is false, add an else statement to the script and follow it with the command.
Let’s take a look at simple if, then, and else statements. Before the statement, we will include a variable so the user can input a value:
7. Reading and Writing Files
There are several methods to read a file, with the cat command being the most popular one. Note that this command reads the whole file content.
To read the content line by line, use the read command and a loop. Before writing a script to read a file, make sure that the file exists first.
In the following example, we have a to-do.txt file that contains a to-do list:
We’ll use the cat and read commands in our bash function to read and print the content of the to-do.txt file. The first part of the script will use the cat command, while the second part will use the read command in a loop.
The output of the script will be as follows:
To write a command output into a file, use the redirection operators, represented with the > and >> symbols, and follow them with the file name:
Be careful when choosing the operator. If the file exists, the > operator will overwrite its content with a zero-length string. It means you’ll lose the existing file content. If the inputted file name doesn’t exist, it will create it.
The >> operator, on the other hand, will add the output to the given file.
Here’s a simple redirection to write the output into a text file:
Redirection also works with the read command to write any user input. This script example will add the input value into the name.txt file:
Because the script redirects the variable output into the file, you won’t see any output printed. To see the output by printing the file content, add the following command line to read the file:
Make sure that you have the permission to read and write in the file to prevent the permission denied error. If you want to add the output to existing files, make sure to type in the correct file names.
4 Easy Functions to Try On Your First Bash Script
Now that we know some bash commands, we’ll look at more basic bash function examples for your first script.
As mentioned earlier, when you want to write a bash script file, use the nano filename.sh command to create and open a .sh file and start writing your bash functions. Don’t forget to exit and save the file when you’re done.
Start with a Simple echo Function
Let’s start with a simple echo function. Start by defining the function name followed by the echo command on the next line, just like in the example below:
Save this script in testFunction.sh. When you execute the script on the command line, you should see the following output:
Keep in mind that if you swap the position of the function definition with the function call, it will result in an error. Let’s see the example below:
This snippet won’t work. It calls the function in the second command line and defines the function later. In this case, the interpreter can’t find the function when it executes the script, resulting in a command not found error.
Use a Few Parameters
Bash functions accept any number of parameters. The example below accepts two parameters:
$1 represents the first argument while $2 represents the second argument in the function execution line. As we used “Hello” and “World” for the arguments, the output will look like this:
You can also use the command line arguments and perform bash functions. One such example is shown below:
The addition is assigned in a variable sum, and this is returned from the function. Bash functions always return one single value. User input is taken by using read for both numbers. Finally, the result is printed using $? which stores the return value $sum from the function.
Create Directories and Change Paths
Now, let’s look at another function example where we first create a directory and then change the path to point to a new location. This function will contain mkdir and cd Linux commands to create a new directory and change the current directory:
Function will read the first argument and create a directory with that name. After you execute the script, check the present working path using the pwd command on the terminal. You’ll see that you are currently within the newly created myDir.
Combine Loops and Conditionals
Loops and conditional statements are also popular in bash scripting. We’ll look at a few instances of using both in the same script:
The example above uses while and if statements. This executes the while loop five times after checking the conditional statement.
The output of this script will be:
The for loop can increment and decrement the counters. An example of a for loop is shown below:
The output of this for loop should be:
With if statements, we can also define else if by using elif statement:
We can also write that script using the case statement. In the case statements, ;; represents a case break, so if the variable value meets any of the conditions, it jumps to the end of the script:
How to Run Bash Script
Now that we have written a bash script, let’s learn how to run it from the terminal. There are three methods to do it – using the bash command, using the ./ command, and running the script from a different directory.
Using the Bash Command
The first method is by using the bash command from the appropriate directory. For example, you may have a function.sh bash script containing simple echo functions in the Test/Bash directory. You have to open the directory first by using this command:
Then, execute the following bash command to run the bash script:
You should see the output like this:
If you try to run the script without the bash command, you’ll receive a command not found error message.
Using the ./ Command
You can run a bash script without the bash command. However, you have to set the file to have the execute permission using the following command from the appropriate directory:
This command modifies the file permissions so that everyone can execute the file. Once you’ve done that, execute the bash script by using this command:
If you don’t set the permission correctly, the terminal will print a Permission denied error message:
Like the bash command, you’ll also get a command not found error if you don’t use ./ in your command.
Run the Script From a Different Directory
Another alternative is to run the script from a different directory. After you create the bash script, use the pwd command to find your current directory. Once you know the path, you can run the script from any directory. For example, use the following command to run function.sh from the home directory:
Pro Tip
Use the cd command to go to the home directory straight away regardless of the directory you are in.
Conclusion
Bash reads shell commands and interacts with the operating system to execute them. The great aspect of bash is that you can compile many bash commands and functions into a single executable script, helping you streamline your workflow.
To create a bash script file, you need to understand the various shell commands and their proper syntax. In this tutorial, we’ve covered seven basic commands:
- Comments
- Variables
- Echo
- Functions
- Loops
- Conditional statements
- Reading and writing files
However, there is much more to learn if you want to be able to utilize the full potential of bash. Practice with the examples we have provided and continue exploring bash so you can write better and more efficient scripts.
We’ve covered the three ways to execute a bash script. If you have any questions or comments, leave them in the section below.
Looking for more bash guides?
Bash Tutorial FAQ
Is Bash Easy to Learn?
Bash is quite easy to learn, with many learners mastering both basic and advanced commands in about half a year.
Is Bash Easier Than Python?
No, Python remains easier and simpler than Bash. Since Bash was originally a software replacement for Bourne shell, Bash remains tough to write compared to Python. Python is also more powerful than Bash.
What Is Bash Used For?
Bash is most commonly used to automate development tasks like code compilation, debugging, change management and testing. Bash is also used by network engineers to test, optimize and configure organizational networks.
Leo is a WordPress fanatic and contributor. He likes keeping up with the latest WordPress news and updates, and sharing his knowledge to help people build successful websites. When he’s not working, he contributes to WordPress documentation team and pampers his dogs.
Bash скрипты
В Linux автоматизация процессов в значительной степени решается исполняемыми скриптами в shell оболочке. Это подразумевает под собой создание файла, содержащего ряд команд, которые исполняются последовательно.
В этой статье мы обсудим основы написания сценариев bash, включая переменные, команды, ввод/вывод и отладку. Каждый пункт сопроводим примерами.
Оглавление
Обзор оболочки Bash и интерфейса командной строки
Как запускать команды Bash из командной строки
Комментарии в сценариях bash
Переменные и типы данных в Bash
Минимальные требования
Чтобы следовать этому руководству, необходимо иметь следующее:
Работающая версия Linux с доступом к командной строке.
Если у вас не установлен Linux или вы только начинаете его изучать, вы можете легко получить доступ к командной строке Linux через Replit. Replit — это браузерная IDE, в которой вы можете получить доступ к оболочке bash за несколько минут.
Вы также можете установить Linux поверх вашей системы Windows, используя WSL (подсистема Windows для Linux). Инструкция по ссылке.
Введение
Определение Bash-скрипта
Bash-скрипт — это файл, содержащий последовательность команд, которые выполняются программой bash построчно. Он позволяет выполнять ряд действий, таких как переход к определенному каталогу, создание папки и запуск процесса с помощью командной строки.
Сохранив эти команды в сценарии(скрипты), вы можете повторять одну и ту же последовательность шагов несколько раз и выполнять их, запустив сценарий.
Преимущества Bash-скриптов
Сценарии Bash — это мощный и универсальный инструмент для автоматизации задач системного администрирования, управления системными ресурсами и выполнения других рутинных задач в системах Unix/Linux. Некоторые преимущества сценариев оболочки:
Автоматизация: сценарии оболочки позволяют автоматизировать повторяющиеся задачи и процессы, экономя время и снижая риск ошибок, которые могут возникнуть при ручном выполнении.
Портативность: сценарии оболочки можно запускать на различных платформах и операционных системах, включая Unix, Linux, macOS и даже Windows, с помощью эмуляторов или виртуальных машин.
Гибкость: сценарии оболочки легко настраиваются и могут быть легко изменены в соответствии с конкретными требованиями. Их также можно комбинировать с другими языками программирования или утилитами для создания более мощных сценариев.
Доступность. Сценарии оболочки легко писать и не требуют специальных инструментов или программного обеспечения. Их можно редактировать с помощью любого текстового редактора, а в большинстве операционных систем есть встроенный интерпретатор оболочки.
Интеграция: сценарии оболочки можно интегрировать с другими инструментами и приложениями, такими как базы данных, веб-серверы и облачные службы, что позволяет решать более сложные задачи автоматизации и управления системой.
Отладка: сценарии оболочки легко отлаживать, и большинство оболочек имеют встроенные инструменты отладки и сообщения об ошибках, которые помогают быстро выявлять и устранять проблемы.
Обзор оболочки Bash и интерфейса командной строки
Термины «оболочка» и «bash» взаимозаменяемы. Но между ними есть тонкая разница.
Термин «оболочка» относится к программе, которая предоставляет интерфейс командной строки для взаимодействия с операционной системой. Bash (Bourne Again SHell) является одной из наиболее часто используемых оболочек Unix/Linux и является оболочкой по умолчанию во многих дистрибутивах Linux.
Интерфейс оболочки zsh или командной строки выглядит следующим образом:
В приведенном выше выводе clockber::
>> — это приглашение оболочки zsh. Когда оболочка используется в интерактивном режиме, в Linux она отображает $, когда ожидает команды от пользователя.
Если оболочка запущена от имени пользователя root (пользователь с правами администратора), приглашение меняется на #. Приглашение оболочки суперпользователя выглядит следующим образом:
Хотя Bash — это тип оболочки, существуют и другие доступные оболочки, такие как оболочка Korn (ksh), оболочка C (csh) и оболочка Z (zsh). Каждая оболочка имеет свой собственный синтаксис и набор функций, но все они имеют общую цель — предоставить интерфейс командной строки для взаимодействия с операционной системой.
Вы можете определить свой тип оболочки с помощью команды ps:
Пример вывода моего терминала:
Таким образом, в то время как «оболочка» — это широкий термин, относящийся к любой программе, предоставляющей интерфейс командной строки, «Bash» — это особый тип оболочки, который широко используется в системах Unix/Linux.
Примечание: в этом руководстве мы будем использовать оболочку «bash».
Как начать работать с Bash-скриптами
Как запускать команды Bash из командной строки
Как упоминалось ранее, приглашение оболочки выглядит примерно так:
Вы можете ввести любую команду после знака $ и увидеть результат на терминале.
Как правило, команды имеют следующий синтаксис:
Давайте рассмотрим несколько основных команд bash и посмотрим их результаты. Обязательно попробуйте выполнить их в своем терминале.
date : отображает текущую дату
pwd : Отображает текущий рабочий каталог.
ls : Выводит содержимое текущего каталога.
echo : Выводит на терминал строку текста или значение переменной.
Вы всегда можете обратиться к руководству по командам с помощью команды man.
Например, руководство по echo выглядит примерно так:
Как создавать и выполнять сценарии Bash
Соглашения об именах сценариев
По соглашению об именах сценарии bash заканчиваются на .sh. Однако сценарии bash могут прекрасно работать без расширения sh.
Добавляем Шебанг(Shebang)
Скрипты Bash начинаются с шебанга. Шебанг(Shebang) — это комбинация bash # и bang ! за которым следует путь оболочки bash. Это первая строка скрипта. Шебанг говорит оболочке выполнить его через оболочку bash. Shebang — это просто абсолютный путь к интерпретатору bash.
Ниже приведен пример оператора шебанг.
Вы можете найти путь к оболочке bash (который может отличаться от указанного выше) с помощью команды:
Наш первый bash-скрипт
Наш первый скрипт предлагает пользователю ввести путь. В свою очередь он вернет все содержимое указанного каталога.
Создайте файл с именем show_all.sh с помощью команды vi . Вы можете использовать любой редактор по вашему выбору.
Добавьте следующие команды в свой файл и сохраните его:
Скрипт отобразит текущую дату и содержимое предоставленного пользователем каталога.
Давайте более подробно рассмотрим сценарий построчно. Я снова привожу тот же сценарий, но на этот раз с номерами строк.
Строка #1: Шебанг (#!/bin/bash) указывает на путь к оболочке bash.
Строка #2: команда echo отображает текущую дату и время на терминале. Обратите внимание, что дата указана в обратных кавычках.
Строка #4: мы хотим, чтобы пользователь ввел правильный путь.Строка #5: Команда чтения считывает ввод и сохраняет его в переменной path_to.
строка #8: Команда lh берет переменную с сохраненным путем и отображает текущие файлы и папки.
Выполнение bash-скрипта
Чтобы сделать скрипт исполняемым, назначьте права на выполнение своему пользователю с помощью команды:
chmod изменяет владельца файла для текущего пользователя u: .
+x добавляет права на выполнение текущему пользователю. Это означает, что пользователь, являющийся владельцем, теперь может запустить сценарий.
show_all.sh — это файл, который мы хотим запустить.
Вы можете запустить скрипт любым из указанных способов:
Давайте посмотрим, как он работает
Основы Bash скриптов
Комментарии в сценариях bash
Комментарии начинаются с # в сценариях bash. Это означает, что любая строка, начинающаяся с #, является комментарием и будет игнорироваться интерпретатором.
Комментарии очень полезны при документировании кода, и рекомендуется добавлять их, чтобы помочь другим понять код.
Вот примеры комментариев:
Переменные и типы данных в Bash
Переменные позволяют хранить данные. Вы можете использовать переменные для чтения, доступа и управления данными во всем сценарии.
В Bash нет типов данных. В Bash переменная может хранить числовые значения, отдельные символы или строки символов.
В Bash вы можете использовать и устанавливать значения переменных следующими способами:
Назначьте значение напрямую:
2. Присвоение значение на основе вывода, полученного от программы или команды, используя подстановку команд. Обратите внимание, что $ требуется для доступа к значению существующей переменной.
Чтобы получить доступ к значению переменной, добавьте $ к имени переменной.
Соглашения об именах переменных
В сценариях Bash следующие соглашения об именах переменных:
Имена переменных должны начинаться с буквы или символа подчеркивания ().
Имена переменных могут содержать буквы, цифры и символы подчеркивания ().
Имена переменных чувствительны к регистру.
Имена переменных не должны содержать пробелов или специальных символов.
Используйте описательные имена, отражающие назначение переменной.
Избегайте использования зарезервированных ключевых слов, таких как if, then, else, fi и т. д., в качестве имен переменных.
Вот несколько примеров допустимых имен переменных в Bash:
А вот несколько примеров недопустимых имен переменных:
Соблюдение этих соглашений об именах помогает делать сценарии Bash более читабельными и простыми в использовании.
Ввод и вывод в Bash-скриптах
Обработка входных данных
В этом разделе мы обсудим некоторые методы ввода данных в наши сценарии.
Чтение пользовательского ввода и сохранение его в переменной
Мы можем прочитать пользовательский ввод с помощью команды чтения.
2. Чтение из файла
Этот код считывает каждую строку из файла с именем input.txt и выводит ее на терминал. Мы изучим циклы while позже в этой статье.
3. Аргументы командной строки
В скрипте или функции bash $1 обозначает переданный начальный аргумент, $2 обозначает переданный второй аргумент и так далее.
Этот сценарий принимает имя в качестве аргумента командной строки и печатает персонализированное приветствие.
Мы передаем скрипту clockber как аргумент.
Отображение вывода
Здесь мы обсудим некоторые методы получения вывода из скриптов.
Печать в терминал:
Этой командой напечатаем текст “Hello, World!” в терминале.
2. Запись в файл:
Эта команда запишет текст “let’s write text.” в файл с именем output.txt. Обратите внимание, что оператор > перезапишет файл, если в нем уже есть содержимое.
3. Добавление в файл:
Добавляем текст “More text.” в конец файла output.txt.
4. Перенаправление вывода:
Перечисляем файлы в текущем каталоге и записываем вывод в файл с именем files.txt. Таким образом вы можете перенаправить вывод любой команды в файл.
Основные команды Bash (echo, read и т. д.)
Вот список некоторых наиболее часто используемых команд bash:
cd : Изменение директории на другую.
ls : Отображение содержимого в текущей директории.
mkdir : Создание новой директории.
touch : Создать новый файл.
rm : Удаление файла или директории.
cp : Копирование файла или директории.
mv : Перемещение или переименование файла или директории.
echo : Печать текста в терминал.
cat : Читает данные из файла и выводит их на экран.
grep : Поиск в файлах.
chmod : Изменение прав доступа к файлу или директории.
sudo : Запуск команд с правами администратора.
df : Отображение дискового пространства.
history : Отображение истории предыдущих комманд.
ps : Отображение информации о запущенных процессах.
Условные операторы (if/else)
Выражения, дающие логический результат, истинный или ложный, называются условиями. Существует несколько способов оценки условий, включая if , if-else , if-elif-else и вложенные условные операторы.
Можно использовать логические операторы, такие как AND -a и OR -o , чтобы делать сравнения, которые имеют большее значение.
Давайте рассмотрим пример сценария Bash, который использует операторы if , if-else , if-elif-else , чтобы определить, является ли введенное пользователем число положительным, отрицательным или нулевым:
Сначала скрипт предлагает пользователю ввести число. Затем он использует оператор if , чтобы проверить, больше ли число, чем 0. Если это так, сценарий выводит, что число положительное. Если число не больше 0, скрипт переходит к следующему оператору, который является оператором if-elif . Здесь скрипт проверяет, меньше ли число 0. Если да, то скрипт выводит отрицательное число. Наконец, если число не больше 0 и не меньше 0, скрипт использует оператор else для вывода того, что число равно нулю.
Циклы и ветвление в Bash
Цикл While
Циклы while проверяют условие в цикле, пока это условие остается true . Для управления циклом принято использовать счетчики.
В приведенном ниже примере (( i += 1 )) — это оператор счетчика, который увеличивает значение i. Цикл будет выполняться ровно 10 раз.
Цикл For
Цикл for, как и цикл while, позволяет выполнять операторы определенное количество раз. Каждый цикл отличается своим синтаксисом и использованием.
В приведенном ниже примере цикл повторяется 5 раз.
Оператор Case
В Bash операторы case используются для сравнения заданного значения со списком шаблонов и выполнения блока кода на основе первого совпавщего шаблона. Синтаксис оператора case в Bash следующий:
Здесь expression — это значение, которое мы хотим сравнить, а pattern1 , pattern2 , pattern3 и т. д. — это шаблоны, с которыми мы хотим его сравнить.
Двойная точка с запятой “;;” отделяет каждый блок кода для выполнения для каждого шаблона. Звездочка “*” представляет случай по умолчанию, который выполняется, если ни один из указанных шаблонов не соответствует выражению.
Давайте посмотрим пример.
В данном примере, поскольку значение “fruit” является “apple”, чему соответствует первый шаблон и блок кода, следовательно в терминале мы увидем “This is a red fruit.”. Если бы значением “fruit” было “banana”, второй шаблон соответствовал бы и блоку кода, который повторяет “This is a yellow fruit.”. будет выполняться и так далее. Если значение “fruit”не соответствует ни одному из указанных шаблонов, выполняется случай по умолчанию, который повторяет “Unknown fruit.”.
Планирование сценариев с помощью Сron
Cron — мощная утилита для планирования заданий, доступная в Unix-подобных операционных системах. Настроив cron, вы можете настроить автоматические задания для запуска ежедневно, еженедельно, ежемесячно или в определенное время. Возможности автоматизации, предоставляемые cron, играют решающую роль в системном администрировании Linux.
Ниже приведен синтаксис для планирования crons:
Здесь * представляют собой минуты (минуты), часы (часы), день (дни), месяцы и дни недели соответственно.
Ниже приведены несколько примеров планирования заданий cron.
Использование crontab
Утилита crontab используется для добавления и редактирования заданий cron.
crontab -l перечисляет уже запланированные сценарии для конкретного пользователя.
Вы можете добавлять и редактировать cron через crontab -e .
Вы можете прочитать больше о работе с Cron здесь.
Как отлаживать и устранять неполадки Bash-скриптов
Отладка и устранение неполадок являются важными навыками для любого Bash-скриптора. Хотя сценарии Bash могут быть невероятно мощными, они также могут быть подвержены ошибкам и неожиданному поведению. В этом разделе мы обсудим некоторые советы и методы по отладке и устранению неполадок сценариев Bash.
Установите параметр set -x
Один из наиболее полезных способов отладки сценариев Bash — установка параметра set -x в начале сценария. Эта опция включает режим отладки, в котором Bash печатает каждую команду, которую он выполняет, на терминал, перед которой ставится знак +. Это может быть невероятно полезно для определения того, где в сценарии возникают ошибки.
Проверьте код выхода
Когда Bash обнаруживает ошибку, он устанавливает код выхода, который указывает характер ошибки. Вы можете проверить код выхода самой последней команды, используя $? переменная. Значение 0 указывает на успех, а любое другое значение указывает на ошибку.
Используйте операторы echo
Другой полезный метод отладки скриптов Bash — вставка echo-оператора в ваш код. Это может помочь вам определить, где возникают ошибки и какие значения передаются в переменные.
Используйте опцию set -e
Если вы хотите, чтобы ваш сценарий завершался немедленно, когда какая-либо команда в сценарии не удалась, вы можете использовать опцию set -e. Этот параметр заставит Bash завершить работу с ошибкой, если какая-либо команда в сценарии завершится неудачно, что упростит выявление и исправление ошибок в вашем сценарии.
Устранение неполадок Cron путем проверки log журналов
Мы можем устранять неполадки crons с помощью файлов журнала. Журналы ведутся для всех запланированных заданий. Вы можете проверить и проверить в журналах, выполнялось ли конкретное задание должным образом или нет.
Для Ubuntu/Debian вы можете найти cronlogs по адресу:
Расположение отличается для других дистрибутивов.
Файл журнала заданий cron может выглядеть следующим образом:
Заключение
В этой статье мы начали с того, как получить доступ к терминалу, а затем выполнили некоторые основные команды bash. Также изучили, что такое оболочка bash. Кратко рассмотрели ветвление кода с использованием циклов и условий. Наконец, мы обсудили автоматизацию сценариев с помощью cron, а затем некоторые методы устранения неполадок.
Запуск скрипта sh в Linux
Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.
Но у новичков может возникнуть вопрос — как запустить скрипт в Linux, что для этого нужно сделать, что будет происходить и какие команды нужно выполнить. Но сначала нужно рассмотреть как работают скрипты и что такое исполняемость.
Как работают скрипты
В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
Запуск скрипта sh в Linux
Сначала рассмотрим пример небольшого sh скрипта:
#!/bin/bash
echo «Hello world»
Вторая строка — это действие, которое выполняет скрипт, но нас больше всего интересует первая — это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:
chmod ugo+x script.sh
Мы разрешаем выполнять запуск sh linux всем категориям пользователей — владельцу, группе файла и остальным. Следующий важный момент — это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:
Или полный путь от корня:
Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ — /usr/local/bin.
cp script.sh /usr/local/bin/script.sh
Теперь вы можете выполнить:
Это был первый способ вызвать скрипт, но есть еще один — мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:
А если нам нужно запустить скрипт на php, то выполните:
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
Даже запустить процесс linux не так сложно.
Выводы
Как видите, запуск скрипта sh в linux — это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.