Linux echo bin bash

How to echo a bang!

The problem is occurring because bash is searching its history for !/bin/bash. Using single quotes escapes this behaviour.

That’s the point! You can add other arguments to the same echo command using double quotes and get interpolation on those parts.

you can also use C style string in bash with $» . For example echo $’1!\n2!\n3!\n’ prints each number followed by a bang and a newline.

Putting bang in single quotes didn’t help me when entering a multi-line string: !bash—single quotes do not escape bang (for real)

@kbolino You are right. So the full example string would be: echo ‘0123’»$var»‘456’ , note two pairs of single quotes and one pair of double quotes.

As Richm said, bash is trying to do a history match. Another way to avoid it is to just escape the bang with a \ :

Though beware that inside double quotes, the \ is not removed:

This works even when entering a multiline string. Remembering to 1. be outside of a string when entering the bang and 2. use this method (backslash) seems to work with the least surprise in most scenarios.

Would be useful to note that bash doesn’t do history searches when executing a script, so no need to do anything special for it there.

! starts a history substitution (an “event” is a line in the command history); for example !ls expands to the last command line containing ls , and !?foo expands to the last command line containing foo . You can also extract specific words (e.g. . 1 refers to the first word of the previous command) and more; see the manual for details.

This feature was invented to quickly recall previous commands in the days when command line edition was primitive. With modern shells (at least bash and zsh) and copy-and-paste, history expansion is not as useful as it used to be — it’s still helpful, but you can get by without it.

You can change which character triggers history substitution by setting the histchars variable; if you rarely use history substitution, you can set e.g. histchars=’¡^’ so that ¡ triggers history expansion instead of ! . You can even turn off the feature altogether with set +o histexpand .

To be able to disable history expansion on a particular command line, you can use space as the 3rd character of $histchars :

Then, if you enter your command with a leading space, history expansion will not be performed.

bash-4.3$ echo "#!/bin/bash" bash: !/bin/bash: event not found bash-4.3$ echo "#!/bin/bash" #!/bin/bash 

Note however that leading spaces are also used when $HISTCONTROL contains ignorespace as a way to tell bash not to record a command line in the history.

Читайте также:  Все об arago linux

If you want both features indenpendantly, you’ll need to choose another character as the 3rd character of $histchars . You want one that doesn’t affect the way your command is interpreted. A few options:

  • using backslash ( \ ): \echo foo works but that has the side effect of disabling aliases or keywords.
  • TAB: to insert it in first position, you need to press Ctrl+V Tab though.
  • if you don’t mind typing two keys, you can pick any character that normally doesn’t appear in first position ( % , @ , ? , pick your own) and make an empty alias for it:

(you won’t be able not to record a command where history substitution has been disabled though. Also note that the default 3rd character of $histchars is # so that history expansion is not done in comments. If you change it, and you enter comments at the prompt, you should be aware of the fact that ! sequences may be expanded there).

Источник

Bash Echo Examples

Multiple built-in functions exist in bash to print the output into the terminal. ‘echo’ is one of the most used commands to print text or string data into the terminal or another command as input or a file. This command has some options that can be used with this command for special purposes. The uses of ‘echo’ command are described in this tutorial by using different examples.

Syntax:

Options:

Option Description
-n Omit newline from the output.
-e Enable the function of backslash(/) character.
-E Disable the function of backslash(/) character.
–version Display the version information
–help Display help messages related to the uses of this command

Example-1: Using the `echo` command without any option

`echo` command can be used without any option. `echo` command of the following script is used to print a simple text, ‘Learn bash programming from LinuxHint.com’.

The following output will appear after running the script.

Example-2: Using `echo` command with -n option

‘echo’ command is used with ‘-n’ option in the following script. The new line is omitted from the output for this option.

The following output will appear after running the script.

Example-3: Using `echo` command with -e option

‘echo’ command is used with ‘-e’ option in the following script. For this, the function of backslash(\) is enabled and the output is generated by adding ‘tab’ space where ‘\t’ is used in the string.

The following output will appear after running the script.

Example-4: Using `echo` command with -E option

‘echo’ command is used with ‘-E’ option in the following script. This option disables the function of backslash(/). The new line(\n) used in the text will not work for the following command.

The following output will appear after running the script.

Example-5: Using variable in `echo` command

The value of the variable can be printed with other string in the `echo` command by placing the variable in the text. $price variable is used in the following `echo` command. But one thing you should remember when using the variable in the echo command, that is you must enclose the variable within double quotation(“) to read the value of the variable by `echo` command. If single quotation(‘) is used in the echo command then the value of the variable will not be parsed and the variable name will be printed as output.

$ price = » \$ 100″
$ echo ‘The price of this book is $price’
$ echo «The price of this book is $price «

The following output will appear after running the script.

Example-6: Using ‘\v’ in `echo` command

‘\v’ is used to print the output vertically. The following `echo` command will print each word of the text, “Linuxhint is a Linux based blog site” vertically.

The following output will appear after running the script.

Example-7: Using ‘\c’ in `echo` command

‘\c’ is used to omit any part of the text. The following echo command will print, “Enrich your Linux knowledge from Linuxhint” by omitting the part tutorials and newline.

The following output will appear after running the script.

Example-8: Print the names of all files and folders using `echo` command

`echo` command can be used to read the files and folders of the current directory. When this command executes with ‘*’ then it will print the list of files and folders of the current working directory.

The following output will appear after running the script.

Example-9: Print the names of specific files using `echo` command

The specific file list of the current directory can be printed by using `echo` command. The following command will print the list of all text files from the current directory. In this way, you can search any file or folder by using `echo` command.

The following output will appear after running the script.

Example-10: Using `echo` command in the bash script

This example shows the use of `echo` command in a bash script. Create a file named ‘echoexpl.sh’ and add the following script. The function of ‘\r’ is to add a carriage return in the string. In this example, ‘\r’ is used at the starting and ending of the string. Here, the ‘-e’ option is used with the `echo` command that enables the function of ‘\r’.

#!/bin/bash
string = » \r Perl is a cross-platform, open-source programming language \r »
echo -e » $string «

The text value of $string variable will be printed with a newline after running the script.

Conclusion:

The result of any script can be found by printing the appropriate output. So, print options are very important for any programming language. The use of one print option in bash is discussed in this tutorial. But the same task can be performed by another option in bash and the command is ‘printf’. Hope, the reader will get knowledge about the multiple uses of `echo` command after practicing the examples of this tutorial and they will be able to apply this command properly.

For more information watch the video!

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.

Источник

Команда echo в Linux

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

В этой статье мы рассмотрим что представляет из себя команда echo linux, как ее можно использовать и в каких ситуациях. Но сначала рассмотрим синтаксис самой команды.

Команда echo linux

Команда echo — это не системная утилита, у нее нет исполняемого файла. Она существует только внутри интерпретатора Bash. Синтаксис команды echo linux очень прост:

$ echo опции строка

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

  • -n — не выводить перевод строки;
  • -e — включить поддержку вывода Escape последовательностей;
  • -E — отключить интерпретацию Escape последовательностей.

Это все опции, если включена опция -e, то вы можете использовать такие Escape последовательности для вставки специальных символов:

  • /c — удалить перевод строки;
  • /t — горизонтальная табуляция;
  • /v — вертикальная табуляция;
  • /b — удалить предыдущий символ;
  • /n — перевод строки;
  • /r — символ возврата каретки в начало строки.

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

Примеры работы echo

Давайте рассмотрим как пользоваться echo. Сначала просто выведем строку на экран:

echo Linux Open Source Software Technologies

Также можно вывести значение переменной. Сначала объявим переменную:

Затем выведем ее значение:

Как уже говорилось, с помощью опции -e можно включить интерпретацию специальных последовательностей. Последовательность \b позволяет удалить предыдущий символ. Например, удалим все пробелы из строки:

echo -e «Linux \bopen \bsource \bsoftware \btechnologies»

Последовательность \n переводит курсор на новую строку:

echo -e «Linux \nopen \nsource \nsoftware \ntechnologies»

С помощью \t вы можете добавить горизонтальные табуляции:

echo -e «Linux \topen \tsource \tsoftware \ttechnologies»

Можно совместить переводы строки и табуляции:

echo -e «Linux \tnopen \tnsource \tnsoftware \tntechnologies»

Точно так же можно применить вертикальную табуляцию:

echo -e «Linux \vopen \vsource \vsoftware \vtechnologies»

С помощью последовательности \r можно удалить все символы до начала строки:

echo -e «Linux \ropen source software technologies»

Последовательность -c позволяет убрать перевод на новую строку в конце сообщения:

echo -e «Linux open source software technologies\c»

Дальше — больше. Вы можете разукрасить вывод echo с помощью последовательностей управления цветом Bash. Для доступны такие цвета текста:

Например. раскрасим нашу надпись в разные цвета:

echo -e «\033[35mLinux \033[34mopen \033[32msource \033[33msoftware \033[31mtechnologies\033[0m»

С основными параметрами команды echo разобрались, теперь рассмотрим еще некоторые специальные символы bash. Вы можете вывести содержимое текущей папки просто подставив символ *:

Также можно вывести файлы определенного расширения:

Я уже говорил, что echo можно использовать для редактирования конфигурационных файлов. Вы можете использовать запись echo в файл linux, если он пуст:

echo 1 > /proc/sys/net/ipv4/ip_forward

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

echo «UUID=09ec0871-2f55-4dd5-aeb2-cacc4a67907c /var/tmp btrfs subvol=@/var/tmp 0 0» >> /etc/fstab

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Оцените статью
Adblock
detector