From the ack installation page (http://betterthangrep.com/install/) there is a one-liner installation with curl:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
I understand that it’s getting the file from the website and saving it to ~/bin/ack, then setting permissions, but what does that last part ( !#:3 ) do ? (I do not recognize the syntax and Googling didn’t yield any helpful results)
See the section called HISTORY EXPANSION in man bash, particularly the Word Designators subsection.
!#:3refers to the third word of the pipe, which is (in your example)~/bin/ack. In order, the words of the command arecurl, 0;http://betterthangrep.com/ack-standalone, 1;>, 2;~/bin/ack, 3;&&, 4;chmod, 5;0755, 6;!#:3, 7.That is,
!#:3is a way to repeat the filename without using a separate variable or literal text.Regarding the question about
>and whitespace, note that>is a metacharacter, which man bash defines as a “character that, when unquoted, separates words. One of the following: | & ; ( ) < > space tab”. So whitespace does not affect whether>counts as a token. But note that in the following example, the first3is quoted so that bash doesn’t interpret it as part of a3>redirection. When the line was entered, bash echoed the expanded line and then executed it.