Can someone spell out what this wget command to install Heroku toolbelt does?
I'm getting familiar with the terminal commands, and I came across this command to install the Heroku toolbelt:
wget -qO- https://toolbelt.heroku.com/install.sh | sh
Now from here I gather that wget is used to download files from the internet through various supported protocols, and they'll download even if I logoff.
Is that right?
And I wanted to know two more things about that command :
I see
-q0-
in the code. What does it mean? From manpages I see that-q
is used to turn the output ofWget
off. But what does that mean too? And how is using-q
different from-q0-
What is the
|sh
at the end of the command for? What does that do?
Thank you very much for the time!
Like most isolated programs started from a terminal, wget normally will NOT continue running after its parent (terminal) has been closed (via logout, etc. )
-
-qO-
is an abbreviation of the two command line options-q -O-
- q tells wget not to output status/progress info
- O- tells it to output the downloaded data to standard output
| sh
pipes the data from standard output to thesh
command, executing the script
That command actually is wget -qO
not wget -q0
.
It will download the file https://toolbelt.heroku.com/install.sh silently (-q option) and anything downloaded will be will be concatenated together and written to a single file buffer file (-O option), that downloaded buffer will then be pipped to and executed with sh
.
sh
is a shell interpreter that will run the information that wget just downloaded.
So, in simple words you are telling with this command: download this sh file and don't create a progress output and whatever you download execute it with sh
.
That is not a 0 (number) it's an O (letter), it redirects the output to a file, in this case (-) the standard output, so the downloaded file's content will be redirected (by the |) to the sh
standard input. sh
is a shell, a command interpreter that will execute the commands it receives.
You can learn more searching for Redirections in sh manpage (man sh
).