Say I wanted to copy the .ssh/authorized_keys file in each user's /home directory to /tmp (for whatever reason). I figured I could use globbing and brace expansion to do this quickly, but I ran into trouble. I tried using something like key_for_{*} to get a different file name for each user. My thought was that I could copy everything like this,

sudo cp */.ssh/authorized_keys /tmp/key_for_{*}

I expected /tmp to have files like /tmp/key_for_alice, /tmp/key_for_james, &c... but that's not what happened.

Googling about I found plenty of examples of brace expansion but none that addressed this question. Is there something I should know?



That's not brace expansion. That's just... an asterisk inside braces. You'll need to use a for loop for this.

for user in *
  cp "$user"/.ssh/authorized_keys /tmp/key_for_"$user"

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.