The echo command is one of the most commonly and widely used built-in commands for Linux bash and C shells, that typically used in a scripting language and batch files to display a line of text/string on standard output or a file.
The syntax for the echo command is:
echo [option(s)] [string(s)]
1. Input a line of text and display it on standard output
$ echo Tecmint is a community of Linux Nerds
Outputs the following text:
Tecmint is a community of Linux Nerds
2. Declare a variable and echo its value. For example, Declare a variable of x and assign its value=10.
$ x=10
echo its value:
$ echo The value of variable x = $x The value of variable x = 10
Note: The ‘-e‘ option in Linux acts as an interpretation of escaped characters that are backslashed.
3. Using option ‘\b‘ – backspace with backslash interpretor ‘-e‘ which removes all the spaces in between.
$ echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds" TecmintisacommunityofLinuxNerds
4. Using option ‘\n‘ – New line with backspace interpretor ‘-e‘ treats new line from where it is used.
$ echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds" Tecmint is a community of Linux Nerds
5. Using option ‘\t‘ – horizontal tab with backspace interpretor ‘-e‘ to have horizontal tab spaces.
$ echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds" Tecmint is a community of Linux Nerds
6. How about using option new Line ‘\n‘ and horizontal tab ‘\t‘ simultaneously.
$ echo -e "\n\tTecmint \n\tis \n\ta \n\tcommunity \n\tof \n\tLinux \n\tNerds" Tecmint is a community of Linux Nerds
7. Using option ‘\v‘ – vertical tab with backspace interpretor ‘-e‘ to have vertical tab spaces.
$ echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds" Tecmint is a community of Linux Nerds
8. How about using option new Line ‘\n‘ and vertical tab ‘\v‘ simultaneously.
$ echo -e "\n\vTecmint \n\vis \n\va \n\vcommunity \n\vof \n\vLinux \n\vNerds" Tecmint is a community of Linux Nerds
Note: We can double the vertical tab, horizontal tab, and new line spacing using the option two times or as many times as required.
9. Using option ‘\r‘ – carriage return with backspace interpretor ‘-e‘ to have specified carriage return in output.
$ echo -e "Tecmint \ris a community of Linux Nerds" is a community of Linux Nerds
10. Using option ‘\c‘ – suppress trailing new line with backspace interpretor ‘-e‘ to continue without emitting new line.
$ echo -e "Tecmint is a community \cof Linux Nerds" Tecmint is a community avi@tecmint:~$
11. Omit echoing trailing new line using the option ‘-n‘.
$ echo -n "Tecmint is a community of Linux Nerds" Tecmint is a community of Linux Nerdsavi@tecmint:~/Documents$
12. Using option ‘\a‘ – alert return with backspace interpretor ‘-e‘ to have the sound alert.
$ echo -e "Tecmint is a community of \aLinux Nerds" Tecmint is a community of Linux Nerds
Note: Make sure to check the Volume key, before firing.
13. Print all the files/folders using echo command (ls command alternative).
$ echo * 103.odt 103.pdf 104.odt 104.pdf 105.odt 105.pdf 106.odt 106.pdf 107.odt 107.pdf 108a.odt 108.odt 108.pdf 109.odt 109.pdf 110b.odt 110.odt 110.pdf 111.odt 111.pdf 112.odt 112.pdf 113.odt linux-headers-3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg
14. Print files of a specific kind. For example, let’s assume you want to print all ‘.jpeg‘ files, use the following command.
$ echo *.jpeg network.jpeg
15. The echo can be used with a redirect operator to output to a file and not standard output.
$ echo "Test Page" > testpage ## Check Content avi@tecmint:~$ cat testpage Test Page
echo Options
Options | Description |
-n | do not print the trailing newline. |
-e | enable interpretation of backslash escapes. |
\b | backspace |
\\ | backslash |
\n | new line |
\r | carriage return |
\t | horizontal tab |
\v | vertical tab |
That’s all for now and don’t forget to provide us with your valuable feedback in the comments below.
Thanks for the great article on echo command, really helped a lot. :-)
2020 and I am the only one to notice the repeated error over and over again?
Instead of “backSPACE interpreter” you mean “backSLASH interpreter.”
You are welcome.
How to print the value of a variable using echo statement in a shell script?
Can anyone help me?
Provides good understanding over echo command
Hi All,
I am stuck in my task and not able to get through. I would really appreciate your help.
So, here is the thing.. I am trying to pass a file to mapper (where the required output location is mentioned) using the command.
trying to pass TestfilePlm.txt file via inbound queue and the mapper should execute the lines for the PLM0002F app id.
Problem: The output file is not getting generated nor the data or TestfilePlm.txt is in error queue.
I tried echo $? after file2broker command,it is returning 11 code.
Can someone please tell me what 11 here signifies?
I am not sure what I am missing here.
I use alias ?=’echo ‘ in my .bashrc
So, to echo an calculation:
? 2.2*128.56| bc -iq | tail -n 1
And to echo:
? Hello World! Whats up?
how to display hello in block letters ,to display in red color and blinking effect using echo command in shell scripting
Plz explain
@Bhagavan,
I think you should read this following article for such requirement…
https://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/
Great list of echo usage. I was going through a particular example where the need is to reformat linux date into human readable date.
Like: echo $(date +%Y-%m%d\ %H:%M:%S).
My question is what are the all types of formatting one can do using echo. for example : Can i make particular word or letter in bold? or any other commonly used formatting.
@Mohit,
The command ‘echo’ only used to display a line of text, no any formatting its support..
I am trying the ‘for do’ loop below and experimenting with the echo options. When I submit the script as follows:
./forDoLoop.sh peter pan flies
the text ‘peter pan flies’ doesn’t stay on the screen, it briefly displays the text but then disappears. Please can you tell me what I am doing wrong in the loop below.
for do loop
————–
for TOKEN in $*
do
echo -n $TOKEN
done
Hi All ,
I am beginner to Linux Environment. My problem is, i want to append same text to a file multiple times in single command. How to do it.which command i have to use:
For Single append i am using
echo “Hello world” >> testfile.txt (for 1 time)
cat testfile.txt
if i want to append 10 times that same Hello world , need to write
echo “Hello world” >> testfile.txt 10 times? or any other possibilities please.
i want out put like below:
Hello world
Hello world
Hello world
Hello world
Hello world
like 10 times
@Sravanthi,
Instead of using echo, why not use printf command to repeat a string or text multiple times to a file shown in the below example.
Hello , if i want to send something to any place, ( # echo ‘xxxxx’ >> /etc/apt/xxxx ) what should be the difference of use:
echo ‘x’ and echo “x”, ie : echo with single mark and echo with double quotation marks
thanks.
If I want to print something on stderr, how do I do it, without using /dev/stderr
@Haz,
Your question is incomplete, do you mean redirect stderr to stdout? or to a file?
If you want to avoid variable expansion close string in simple stick
echo ‘Hello $x’
print
Hello $x
A very convenient escape is \e. It is used to start a terminal escape sequence.
For example, the following should print Hello in red and World in green:
echo -e ‘\e[31mHello\e[32mWorld\e[0m’
There is also \xHH to echo the character corresponding to an hexadecimal value.
In Bash and probably in other shells, echo is a builtin with some extensions.
The escape \uHHHH or \UHHHHHHHHHH can be use to echo unicode characters.
For example, \u20AC should echo be the Euro sign €
Good, I checked but it works with double quotes, not with single quotes or without
echo -e “\e[31mHello\e[32mWorld\e[0m”
echo -e “\u20AC”
tested with my
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
Ubuntu 12.04.5 LTSLinux 3.2.0-89-generic x86_64
Hey… great job man.
There is one more important feature of echo. You can use ‘echo’ in replacement for ‘cat’ to create text files.
Eg: $echo “This is a test file” > test1
This creates a text file named “test1” with text(This is a test file) in it.
Taken into Account @ranzk158
Great article, thanks! One minor correction, from #4 and on, you refer the -e option as the “backspace interpreter” (as opposed to the “backslash interpreter”). I think it’s possibly because #3 got you a bit mixed up when you discuss both the “backspace” (\b) and the “backslash interpreter” (-e).
Anyway, not really important, just thought I’d point it out in case you ever make revisions to this article.
Sure i will.
Thanks for your feedback @Eric Parent
The o\p of echo and ls is the same .?
Not Always.
Though echo * can be used in place of ls.
i don’t find a way to use ls in place of echo.
ls works with name of the file where as echo with the content of the file, in most general use.
Hope it Helps. Keep connected
echo ” Helpful post, thanks for sharing.” :D
$ printf “Pleased to know it Himanshu \nkeep connected \n”
So helpful bhai keep going.
:) We are going the same way.
$ echo “*.pyc” >> .gitignore
to append something to a file without opening it.
It use it almost everyday while working with git.
More practical than most of the above, at least for me.
Still, very useful. I did know that echo could be somewhat useful, but this is… wow. Many thanks to you, Avishek, you deserve them.
(I read this, came back a couple o’days later read the comments and answer without thinking. Now I sound like a prick, while I just wanted to point out that the ability to append sth. to a file is the case I, personally, used echo the most for)