15

This code does not work:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

The alias is:

alias nameOfBashAlias='ssh myUsername@11.11.11.111'

How do I solve this problem?

Edit

Is something similar to the following code possible, like running many instances of bash?

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

I did not get the above code to work.

migrated from stackoverflow.com Jun 2 '11 at 0:30

This question came from our site for professional and enthusiast programmers.

22

I wouldn't recommend using a Bash alias for what you are trying to accomplish. You can just enter all the information into SSH's config file and be done with it. Read the man page for ssh_config if you are curious where these come from. You can do some neat things with ssh_config

The file is located here ~/.ssh/config

Use your favorite editor and create the file and then adjust these to your situation.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

You are now setup to issue the following command:

$ ssh nameOfBashAlias 

Something I bet you didn't know is how integrated this all is. Now that you have this setup, the following commands also work

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

No more remembering that scp uses "-P" for port and ssh uses "-p". Also this "alias" also works in OS X gui apps like Transmit.

OpenSSH obtains configuration data from the following sources in the following order:

  1. command-line options
  2. user's configuration file ~/.ssh/config
  3. system-wide configuration file /etc/ssh_config
  • Yes, I completely agree with your. I am nowadays using that method too, since it syncs a lot better with other system and other tools. – Léo Léopold Hertz 준영 Apr 25 '12 at 22:32
  • doesnot work for me on MacOSX – Jabran Saeed Nov 28 '14 at 6:40
  • @JabranSaeed Please, open a new question or here a community wiki as an answer about your case with a piece of information about your OS, version, shell etc. Please, provide also link about your challenge here in comment. This thread is relevant for GNU scp. – Léo Léopold Hertz 준영 Oct 16 '15 at 10:39
  • FWIW this does appear to work on OS X (at least it did on mine, El Capitain 10.11.6) – Alex W Aug 16 '16 at 19:29
5

scp doesn't run bash. You would need to run this:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

If all you have is the alias and the above code is not possible for you, consider running it like this:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

In this way, you're actually invoking ssh and directing the file content to a file on disk. This can be written the other way for uploads.

  • The first command should be scp ~/Desktop/favicon.ico username@11.11.11.111:/public_html/mySite/templates/blog/ – Léo Léopold Hertz 준영 Mar 9 '09 at 17:35
2

Aliases are substituted when they are the first word of a bash command. Your alias appears at the start of the third word.

I would use a shell variable for this.

blah='myUsername@11.11.11.111'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Btw, I think your original alias shouldn't have ssh in it. And the last code sample has a > in it that looks wrong too.

0

No, your examples will not work, because that is not how BASH aliases work. I suggest you use a variable. Put this in your ~/.profile or ~/.bashrc [whichever you use]:
site="user@site.com"
then in your terminal, this will work:
scp favicon.ico $site:/dir/


Or you could write a script like I do for my iPod. in my bashrc I have ipod=192.168.2.60, then in my script I source ~/.bashrc so it gets my variables in the script, then in the script: scp $1 $ipod
the downside is I'd have to edit the script to do recursive. and I can only do 1 file. but when I need either of those I usually use scp directly from the terminal!
~Matt

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.