- Bash Scripting: Symbols
- Symbol: In this case, the file.txt is taken as the input, and the cat command then cats it out. Symbol: > This symbol, known as the file redirection operator, is typically used to redirect the contents of a command/file to another by overwriting it. echo “hello world’ > file.txt Here, the > symbol is similar to 1>. This is so because the 1 is a file descriptor for the standard output. Please note that the file descriptors are as follows: 1 — Standard output, stdout In the previous scenario, the single forward arrow was equivalent to 1>. However, we can also write 2> to forward it to the standard error. Here, the 2> means that the error will be dumped into file2.txt. Symbol: >> The symbol >> is used to append and not to replace! The file redirection operator replaces or overwrites everything while the >> is used to append. echo “this is the second line” >> file.txt echo “this is the third line” >> file.txt The latter will append the two lines to the file called file.txt. The result of file.txt will then be as follows: Symbol: # The hashtag is used to add one-line comments into scripts. These comments are not executed/run. # this will dump the line into the file echo “this is a file ” > file.txt Unlike the #, which is a one-liner, the multi-line comments look more like this; This is the comments section Symbol: $# The symbol $# is used to retrieve the length or the number of arguments passed via the command line. When the symbol $@ or simply $1, $2, etc., is used, we ask for command-line input and store their values in a variable. The symbol $# is used to retrieve the total number of arguments passed. The latter should chuck out a value of 2 because there are 3 elements (hello, world, and again). Symbol: &> This symbol redirects both the standard output and the standard error. In this case, the &> symbol redirects both the standard output and the standard error to the file called file.txt. Thus, both the output generated and the error generated is placed in the same file. Symbol: \ You need to compare the string length or character lengths; this can be done via the symbols \< and \>. These two symbols are used to compare character lengths. In this case, the word stored in a – or cat – has a character length of 3, while the word stored in b – or lynx -has a character length of 4. Thus the answer should be that “a is shorter than b.” Symbol: ^^, ^ and ,, Some symbols function to change the case of the characters. ^^ — to turn all characters to uppercase ^ — to turn the first letter to uppercase ,, — to turn all characters to all lowercase Symbol: $@ or $* The symbol $@ is equivalent to $* which is equivalent to $1 $2 $3 $4… # the latter is equivalent to echo $@ In this example, the $1, $2, $3, $4, and $5 are inputs from the command line. Alternatively, we could have written the following: Symbol: $? This particular symbol – $? – is used to get the exit status of the command previously passed. echo “hello world” > file.txt An exit status of 0 indicates that the process was completed successfully. Symbol: $$ The symbol $$ stores the PID of the current shell. In my case, it printed out the value 2443. This is the PID of the shell. Symbol: 2>&1 The symbol 2>&1 redirects both the standard output and the standard error to the standard output. In this case, all the standard output and if any error is generated, the standard error is both directed into the file called file.txt. Bash scripting is a key scripting language that can be used to automate tasks. During bash scripting, we encounter much code, but we also encounter special characters or symbols that are unique to bash. These symbols each have a particular role in bash scripting, and they aren’t always obvious. In this tutorial, we reviewed a few key symbols used while writing bash scripts. Obviously, there are many symbols out there; however, some are encountered so frequently that it might be necessary to know them while bash scripting. So go forth, fearless of the symbol from here onwards! About the author Omar Farooq Hello Readers, I am Omar and I have been writing technical articles from last decade. You can check out my writing pieces. Источник Метасимволы Linux: всё, что нужно знать Одна из самых мощных функций оболочки Linux Bash — её способность работать с файлами и эффективно перенаправлять их ввод и вывод. Для этого можно использовать специальные символы — метасимволы. Они придают командам оболочки особое значение, открывая вам выигрышные комбинации Linux. * Bash — улучшенная версия оболочки Bourne shell. В Linux её часто используют как предустановленную командную оболочку. Для чего нужны специальные символы Если вы пользуетесь Linux, то знаете о служебных символах по типу “#” — комментария. Метасимволы — не настолько известные, но не менее полезные символы. Они помогают при выводе списка, удалении и копировании файлов в Linux. При этом функция каждого специального символа меняется в зависимости от команды, с которой вы его используете. Сейчас мы покажем, как с их помощью соединять и расширять команды. Чтобы разобраться, как всё работает, советуем сразу пробовать применять метасимволы. Для этого создайте пустую папку внутри каталога /tmp: Перейдите в каталог /tmp/meta с помощью команды cd и создайте новые пустые файлы, используя touch: touch apple.txt cider.sh vinegar.php cat.txt lemon.txt juice.sh catfish.sh Всё нужное готово, так что переходим к практике. Метасимволы соответствия файлов Помогают обратиться к группе файлов или каталогу для их перечисления, перемещения или других действий. Метасимвол * Знак подстановки, который соответствует нулю или большим символам. Как его можно использовать: ls c* Output: catfish.sh cat.txt cider.sh Такой формат записи найдёт все файлы на букву с, независимо от количества символов в имени файла. ls c*h Output: catfish.sh cider.sh Так получаем файлы, которые начинаются на букву с и заканчиваются h. ls *r* Output: cider.sh vinegar.php Находим все файлы, содержащие букву r в названии. Эта команда удалит все файлы, в имени которых есть буква р. Проверить это можно с помощью команды ls: ls Output: catfish.sh cat.txt cider.sh juice.sh lemon.txt Специальный знак ? Это тоже знак подстановки, который означает совпадение нуля или одного предыдущего символа: ls c?t* Output: catfish.sh cat.txt Вторая команда найдёт файлы, начинающиеся на букву с и с буквой t на третьем месте. Метасимвол [ ] Означает любой указанный символ из перечисленных. Записывается в виде чисел, символов или букв в квадратных скобках и чаще всего разделенных дефисом. Для примера используем параметр [av]* с командой ls, чтобы получить список всех файлов, начинающихся с a или v: ls [av]* Output: apple.txt vinegar.sh Теперь изменим команду, чтобы получить файлы, которые заканчиваются на букву t: ls [ac]*[t] Output: apple.txt catfish.txt cat.txt Ещё можно использовать дефис, чтобы указать диапазон: ls [a-j]* Output: apple.txt catfish.sh cat.txt cider.sh juice.sh Метасимволы перенаправления файлов Чтобы разобраться с перенаправлениями в Bash, важно уточнить, что у каждого процесса Linux есть свои дескрипторы: стандартные ввод (stdin/0), вывод (stdout/1) и ошибка (stderr/2). Они определяют источник команды и решают, куда отправлять вывод и сообщения об ошибках. Обычно оболочка Linux считывает ввод команды с клавиатуры и записывает вывод на экран. А метасимволы перенаправления могут менять поток ввода-вывода контента. Перенаправление ввода позволяет команде считывать контент из файла, а не с клавиатуры. А перенаправление вывода сохраняет вывод команды в файл. То есть такие специальные символы могут перенаправлять контент в файл или из него. Три основных метасимвола перенаправления: 2. > направляет вывод команды в файл. Команда ниже сохранит вывод в файл lists.txt: 3. >> добавляет вывод команды к содержимому файла: wc означает количество слов, его можно использовать, чтобы увидеть разницу между файлом до и после добавления вывода команды. Метасимвол расширения Метасимвол <> позволяет расширить каталоги, имена файлов или другие аргументы командной строки. Например, вы можете сделать новую папку brace внутри папки /tmp и создать набор файлов с помощью команды touch следующим образом: sudo mkdir /tmp/brace; cd /tmp/brace touch test Теперь проверим, создались ли файлы: ls Output: test1 test2 test3 test4 test5 Можно указать несколько списков, чтобы сгенерировать имена на основе комбинаций элементов списка. Например: Так мы создадим в текущей папке файлы: Два набора фигурных скобок в первой команде связывает имена файлов в каждом наборе с другим. Ещё можно написать последнюю команду как touch . , чтобы указать диапазоны а-с и 1-3. Это пригодится, когда нужно указать много значений. Помимо создания файлов, фигурные скобки можно использовать, чтобы удалить или скопировать файлы в другие места. Другие метасимволы Linux Вот таблица некоторых метасимволов для подключения и расширения команд с описанием и примерами: Символ Описание Пример | Делает вывод одной команды вводом для другой cat /etc/passwd | grep root ; Позволяет выполнять последовательные команды, одну за другой cd /etc ; ls -la ; chmod +x /tmp/script.php & Запускает процессы или команды в фоновом режиме find / -perm -u=s -type f & $ Разворачивает арифметическое выражение и передает его оболочке shell echo «total files in this directory are: $(ls | wc -l)» 2> Направляет стандартные сообщения об ошибке в файл /dev/null your_command 2>/dev/null ^ Соответствует любому шаблону, который начинается с выражения, написанного после ^ cd /etc/ssh ; ls | grep ^s \ Позволяет экранировать метасимвол, то есть отменять его особое значение ls | grep f \. refox . Есть несколько значений: может указывать текущую позицию при запуске таких команд, как cd, find или sh; может быть подстановочным знаком, обозначает один любой символ. . -тип f -name ‘* .mp3’ ps -ef | grep f..efox Резюмируем Специальные символы придают командам особое значение и помогают оптимизировать работу пользователей в продуктивной среде. Умение ими пользоваться — обязательное условие, если вы хотите прокачаться в Linux. Применяя их в своей работе, вы заметите, что они не только дают вам дополнительные функции, но и сильно экономят ваше время. Источник
- Symbol: >
- Symbol: >>
- Symbol: #
- Symbol: $#
- Symbol: &>
- Symbol: ^^, ^ and ,,
- Symbol: $@ or $*
- Symbol: $?
- Symbol: $$
- Symbol: 2>&1
- About the author
- Omar Farooq
- Метасимволы Linux: всё, что нужно знать
- Для чего нужны специальные символы
- Метасимволы соответствия файлов
- Метасимвол *
- Специальный знак ?
- Метасимвол [ ]
- Метасимволы перенаправления файлов
- Три основных метасимвола перенаправления:
- Другие метасимволы Linux
- Резюмируем
Bash Scripting: Symbols
On Linux, the terminal is everything, it’s where we pass commands, and it’s where we pass scripts. Therefore, one of the most important scripting languages is bash. Bash scripting is used to automate the boring tasks in Linux. In order to automate tasks, commands are written within the script and given an extension of .sh. As part of the commands, certain symbols are used as well. These symbols are unique to bash, and each has its own specific meaning. In this tutorial, we will review the various symbols encountered during bash scripting and their specific meaning.
Symbol:
In this case, the file.txt is taken as the input, and the cat command then cats it out.
Symbol: >
This symbol, known as the file redirection operator, is typically used to redirect the contents of a command/file to another by overwriting it.
echo “hello world’ > file.txt
Here, the > symbol is similar to 1>. This is so because the 1 is a file descriptor for the standard output. Please note that the file descriptors are as follows:
1 — Standard output, stdout
In the previous scenario, the single forward arrow was equivalent to 1>. However, we can also write 2> to forward it to the standard error.
Here, the 2> means that the error will be dumped into file2.txt.
Symbol: >>
The symbol >> is used to append and not to replace! The file redirection operator replaces or overwrites everything while the >> is used to append.
echo “this is the second line” >> file.txt
echo “this is the third line” >> file.txt
The latter will append the two lines to the file called file.txt. The result of file.txt will then be as follows:
Symbol: #
The hashtag is used to add one-line comments into scripts. These comments are not executed/run.
# this will dump the line into the file
echo “this is a file ” > file.txt
Unlike the #, which is a one-liner, the multi-line comments look more like this;
This is the comments section
Symbol: $#
The symbol $# is used to retrieve the length or the number of arguments passed via the command line. When the symbol $@ or simply $1, $2, etc., is used, we ask for command-line input and store their values in a variable. The symbol $# is used to retrieve the total number of arguments passed.
The latter should chuck out a value of 2 because there are 3 elements (hello, world, and again).
Symbol: &>
This symbol redirects both the standard output and the standard error.
In this case, the &> symbol redirects both the standard output and the standard error to the file called file.txt. Thus, both the output generated and the error generated is placed in the same file.
Symbol: \
You need to compare the string length or character lengths; this can be done via the symbols \< and \>. These two symbols are used to compare character lengths.
In this case, the word stored in a – or cat – has a character length of 3, while the word stored in b – or lynx -has a character length of 4. Thus the answer should be that “a is shorter than b.”
Symbol: ^^, ^ and ,,
Some symbols function to change the case of the characters.
^^ — to turn all characters to uppercase
^ — to turn the first letter to uppercase
,, — to turn all characters to all lowercase
Symbol: $@ or $*
The symbol $@ is equivalent to $* which is equivalent to $1 $2 $3 $4…
# the latter is equivalent to echo $@
In this example, the $1, $2, $3, $4, and $5 are inputs from the command line. Alternatively, we could have written the following:
Symbol: $?
This particular symbol – $? – is used to get the exit status of the command previously passed.
echo “hello world” > file.txt
An exit status of 0 indicates that the process was completed successfully.
Symbol: $$
The symbol $$ stores the PID of the current shell.
In my case, it printed out the value 2443. This is the PID of the shell.
Symbol: 2>&1
The symbol 2>&1 redirects both the standard output and the standard error to the standard output.
In this case, all the standard output and if any error is generated, the standard error is both directed into the file called file.txt.
Bash scripting is a key scripting language that can be used to automate tasks. During bash scripting, we encounter much code, but we also encounter special characters or symbols that are unique to bash. These symbols each have a particular role in bash scripting, and they aren’t always obvious. In this tutorial, we reviewed a few key symbols used while writing bash scripts. Obviously, there are many symbols out there; however, some are encountered so frequently that it might be necessary to know them while bash scripting. So go forth, fearless of the symbol from here onwards!
About the author
Omar Farooq
Hello Readers, I am Omar and I have been writing technical articles from last decade. You can check out my writing pieces.
Метасимволы Linux: всё, что нужно знать
Одна из самых мощных функций оболочки Linux Bash — её способность работать с файлами и эффективно перенаправлять их ввод и вывод. Для этого можно использовать специальные символы — метасимволы. Они придают командам оболочки особое значение, открывая вам выигрышные комбинации Linux.
* Bash — улучшенная версия оболочки Bourne shell. В Linux её часто используют как предустановленную командную оболочку.
Для чего нужны специальные символы
Если вы пользуетесь Linux, то знаете о служебных символах по типу “#” — комментария. Метасимволы — не настолько известные, но не менее полезные символы.
Они помогают при выводе списка, удалении и копировании файлов в Linux. При этом функция каждого специального символа меняется в зависимости от команды, с которой вы его используете. Сейчас мы покажем, как с их помощью соединять и расширять команды.
Чтобы разобраться, как всё работает, советуем сразу пробовать применять метасимволы. Для этого создайте пустую папку внутри каталога /tmp:
Перейдите в каталог /tmp/meta с помощью команды cd и создайте новые пустые файлы, используя touch:
touch apple.txt cider.sh vinegar.php cat.txt lemon.txt juice.sh catfish.sh
Всё нужное готово, так что переходим к практике.
Метасимволы соответствия файлов
Помогают обратиться к группе файлов или каталогу для их перечисления, перемещения или других действий.
Метасимвол *
Знак подстановки, который соответствует нулю или большим символам. Как его можно использовать:
ls c* Output: catfish.sh cat.txt cider.sh
Такой формат записи найдёт все файлы на букву с, независимо от количества символов в имени файла.
ls c*h Output: catfish.sh cider.sh
Так получаем файлы, которые начинаются на букву с и заканчиваются h.
ls *r* Output: cider.sh vinegar.php
Находим все файлы, содержащие букву r в названии.
Эта команда удалит все файлы, в имени которых есть буква р. Проверить это можно с помощью команды ls:
ls Output: catfish.sh cat.txt cider.sh juice.sh lemon.txt
Специальный знак ?
Это тоже знак подстановки, который означает совпадение нуля или одного предыдущего символа:
ls c?t* Output: catfish.sh cat.txt
Вторая команда найдёт файлы, начинающиеся на букву с и с буквой t на третьем месте.
Метасимвол [ ]
Означает любой указанный символ из перечисленных. Записывается в виде чисел, символов или букв в квадратных скобках и чаще всего разделенных дефисом.
Для примера используем параметр [av]* с командой ls, чтобы получить список всех файлов, начинающихся с a или v:
ls [av]* Output: apple.txt vinegar.sh
Теперь изменим команду, чтобы получить файлы, которые заканчиваются на букву t:
ls [ac]*[t] Output: apple.txt catfish.txt cat.txt
Ещё можно использовать дефис, чтобы указать диапазон:
ls [a-j]* Output: apple.txt catfish.sh cat.txt cider.sh juice.sh
Метасимволы перенаправления файлов
Чтобы разобраться с перенаправлениями в Bash, важно уточнить, что у каждого процесса Linux есть свои дескрипторы: стандартные ввод (stdin/0), вывод (stdout/1) и ошибка (stderr/2). Они определяют источник команды и решают, куда отправлять вывод и сообщения об ошибках.
Обычно оболочка Linux считывает ввод команды с клавиатуры и записывает вывод на экран. А метасимволы перенаправления могут менять поток ввода-вывода контента. Перенаправление ввода позволяет команде считывать контент из файла, а не с клавиатуры. А перенаправление вывода сохраняет вывод команды в файл. То есть такие специальные символы могут перенаправлять контент в файл или из него.
Три основных метасимвола перенаправления:
2. > направляет вывод команды в файл. Команда ниже сохранит вывод в файл lists.txt:
3. >> добавляет вывод команды к содержимому файла:
wc означает количество слов, его можно использовать, чтобы увидеть разницу между файлом до и после добавления вывода команды.
Метасимвол расширения
Метасимвол <> позволяет расширить каталоги, имена файлов или другие аргументы командной строки. Например, вы можете сделать новую папку brace внутри папки /tmp и создать набор файлов с помощью команды touch следующим образом:
sudo mkdir /tmp/brace; cd /tmp/brace touch test
Теперь проверим, создались ли файлы:
ls Output: test1 test2 test3 test4 test5
Можно указать несколько списков, чтобы сгенерировать имена на основе комбинаций элементов списка. Например:
Так мы создадим в текущей папке файлы:
Два набора фигурных скобок в первой команде связывает имена файлов в каждом наборе с другим. Ещё можно написать последнюю команду как touch . , чтобы указать диапазоны а-с и 1-3. Это пригодится, когда нужно указать много значений.
Помимо создания файлов, фигурные скобки можно использовать, чтобы удалить или скопировать файлы в другие места.
Другие метасимволы Linux
Вот таблица некоторых метасимволов для подключения и расширения команд с описанием и примерами:
Символ | Описание | Пример |
| | Делает вывод одной команды вводом для другой | cat /etc/passwd | grep root |
; | Позволяет выполнять последовательные команды, одну за другой | cd /etc ; ls -la ; chmod +x /tmp/script.php |
& | Запускает процессы или команды в фоновом режиме | find / -perm -u=s -type f & |
$ | Разворачивает арифметическое выражение и передает его оболочке | shell echo «total files in this directory are: $(ls | wc -l)» |
2> | Направляет стандартные сообщения об ошибке в файл /dev/null | your_command 2>/dev/null |
^ | Соответствует любому шаблону, который начинается с выражения, написанного после ^ | cd /etc/ssh ; ls | grep ^s |
\ | Позволяет экранировать метасимвол, то есть отменять его особое значение | ls | grep f \. refox |
. | Есть несколько значений: может указывать текущую позицию при запуске таких команд, как cd, find или sh; может быть подстановочным знаком, обозначает один любой символ. | . -тип f -name ‘* .mp3’ ps -ef | grep f..efox |
Резюмируем
Специальные символы придают командам особое значение и помогают оптимизировать работу пользователей в продуктивной среде. Умение ими пользоваться — обязательное условие, если вы хотите прокачаться в Linux. Применяя их в своей работе, вы заметите, что они не только дают вам дополнительные функции, но и сильно экономят ваше время.