# msgid "" msgstr "" msgid "title: Useful Bash variables" msgstr "" msgid "date: 2020-11-12" msgstr "" msgid "layout: post" msgstr "" msgid "lang: en" msgstr "" msgid "ref: useful-bash-variables" msgstr "" msgid "" "[GNU Bash](https://www.gnu.org/software/bash/) has a few two letter " "variables that may be useful when typing on the terminal." msgstr "" msgid "`!!`: the text of the last command" msgstr "" msgid "" "The [`!!` " "variable](https://www.gnu.org/software/bash/manual/bash.html#Event-" "Designators) refers to the previous command, and I find useful when " "following chains for symlinks:" msgstr "" msgid "" "$ which git\n" "/run/current-system/sw/bin/git\n" "$ readlink $(!!)\n" "readlink $(which git)\n" "/nix/store/5bgr1xpm4m0r72h9049jbbhagxdyrnyb-git-2.28.0/bin/git\n" msgstr "" msgid "" "It is also useful when you forget to prefix `sudo` to a command that " "requires it:" msgstr "" msgid "" "$ requires-sudo.sh\n" "requires-sudo.sh: Permission denied\n" "$ sudo !!\n" "sudo ./requires-sudo.sh\n" "# all good\n" msgstr "" msgid "" "Bash prints the command expansion before executing it, so it is better for " "you to follow along what it is doing." msgstr "" msgid "`$_`: most recent parameter" msgstr "" msgid "" "The [`$_` " "variable](https://www.gnu.org/software/bash/manual/bash.html#Special-" "Parameters) will give you the most recent parameter you provided to a " "previous argument, which can save you typing sometimes:" msgstr "" msgid "" "# instead of...\n" "$ mkdir -p a/b/c/d/\n" "$ cd a/b/c/d/\n" "\n" "# ...you can:\n" "$ mkdir -p a/b/c/d/\n" "$ cd $_\n" msgstr "" msgid "Conclusion" msgstr "" msgid "" "I wouldn't use those in a script, as it would make the script terser to " "read, I find those useful shortcut that are handy when writing at the " "interactive terminal." msgstr ""