18

This code does not work:

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

The alias is:

alias nameOfBashAlias='ssh [email protected]'

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.

4 Answers 4

29

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
4
  • 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. Apr 25, 2012 at 22:32
  • doesnot work for me on MacOSX Nov 28, 2014 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. Oct 16, 2015 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, 2016 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.

1
3

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='[email protected]'
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.

1
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="[email protected]"
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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .