aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2022-07-31-bash-it.md
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-04-27 17:01:13 -0500
committerChristian Cleberg <hello@cleberg.net>2024-04-27 17:01:13 -0500
commit74992aaa27eb384128924c4a3b93052961a3eaab (patch)
treed5193997d72a52f7a6d6338ea5da8a6c80b4eddc /content/blog/2022-07-31-bash-it.md
parent3def68d80edf87e28473609c31970507d9f03467 (diff)
downloadcleberg.net-74992aaa27eb384128924c4a3b93052961a3eaab.tar.gz
cleberg.net-74992aaa27eb384128924c4a3b93052961a3eaab.tar.bz2
cleberg.net-74992aaa27eb384128924c4a3b93052961a3eaab.zip
test conversion back to markdown
Diffstat (limited to 'content/blog/2022-07-31-bash-it.md')
-rw-r--r--content/blog/2022-07-31-bash-it.md243
1 files changed, 243 insertions, 0 deletions
diff --git a/content/blog/2022-07-31-bash-it.md b/content/blog/2022-07-31-bash-it.md
new file mode 100644
index 0000000..a12054b
--- /dev/null
+++ b/content/blog/2022-07-31-bash-it.md
@@ -0,0 +1,243 @@
++++
+date = 2022-07-31
+title = "Upgrade Bash with Bash-It and Ble.sh"
+description = ""
+draft = false
++++
+
+# Bash
+
+For those who are not familiar,
+[Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) is a Unix shell
+that is used as the default login shell for most Linux distributions.
+This shell and command processor should be familiar if you\'ve used
+Linux (or older version of macOS) before.
+
+However, bash is not the only option. There are numerous other shells
+that exist. Here are some popular examples:
+
+- [zsh](https://en.wikipedia.org/wiki/Z_shell)
+- [fish](https://en.wikipedia.org/wiki/Fish_(Unix_shell))
+- [oksh](https://github.com/ibara/oksh)
+- [mksh](https://wiki.gentoo.org/wiki/Mksh)
+- [dash](https://en.wikipedia.org/wiki/Debian_Almquist_shell)
+
+While each shell has its differences, bash is POSIX compliant and the
+default for many Linux users. Because of this, I am going to explore a
+program called `bash-it` below that helps bash users increase
+the utility of their shell without installing a completely new shell.
+
+## Installation
+
+First, if bash is not already installed on your system, you can
+[download bash from GNU](https://www.gnu.org/software/bash/) or use your
+package manager to install it.
+
+For example, this is how you can install bash on Fedora Linux:
+
+```sh
+sudo dnf install bash
+```
+
+If you are not using bash as your default shell, use the
+`chsh` command to change your shell:
+
+```sh
+chsh
+```
+
+You should see a prompt like the one below. If the brackets
+(`[]`) contain `bash` already, you\'re done, and
+you can simply continue by hitting the Enter key.
+
+If the brackets contain another shell path (e.g.
+`/usr/bin/zsh`), enter the path to the bash program on your
+system (it\'s most likely located at `/usr/bin/bash`).
+
+```sh
+Changing shell for <user>.
+New shell [/usr/bin/bash]:
+```
+
+You must log out or restart the machine in order for the login shell to
+be refreshed. You can do it now or wait until you\'re finished
+customizing the shell.
+
+```sh
+sudo reboot now
+```
+
+# Bash-it
+
+As noted on the [Bash-it](https://github.com/Bash-it/bash-it)
+repository:
+
+> Bash-it is a collection of community Bash commands and scripts for
+> Bash 3.2+. (And a shameless ripoff of oh-my-zsh 😃)
+
+Bash-it makes it easy to install plugins, set up aliases for common
+commands, and easily change the visual theme of your shell.
+
+## Installation
+
+To install the framework, simply copy the repository files and use the
+`install.sh` script provided. If you want, you can (and
+should!) inspect the contents of the installation script before you run
+it.
+
+```sh
+git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
+~/.bash_it/install.sh
+```
+
+If you didn\'t restart your session after making bash the default, and
+are currently working within another shell, be sure to enter a bash
+session before using `bash-it`:
+
+```sh
+bash
+```
+
+## Aliases
+
+Bash-it contains a number of aliases for common commands to help improve
+efficiency in the terminal. To list all available options, use the
+following command:
+
+```sh
+bash-it show aliases
+```
+
+This will provide you a list that looks like the following text block.
+Within this screen, you will be able to see all available options and
+which ones are currently enabled.
+
+``` txt
+Alias Enabled? Description
+ag [ ] the silver searcher (ag) aliases
+ansible [ ] ansible abbreviations
+apt [ ] Apt and dpkg aliases for Ubuntu and Debian distros.
+atom [ ] Atom.io editor abbreviations
+bash-it [ ] Aliases for the bash-it command (these aliases are automatically included with the "general" aliases)
+bolt [ ] puppet bolt aliases
+bundler [ ] ruby bundler
+clipboard [ ] xclip shortcuts
+composer [ ] common composer abbreviations
+curl [x] Curl aliases for convenience.
+...
+```
+
+To enable an alias, do:
+
+```sh
+bash-it enable alias <alias name> [alias name]... -or- $ bash-it enable alias all
+```
+
+To disable an alias, do:
+
+```sh
+bash-it disable alias <alias name> [alias name]... -or- $ bash-it disable alias all
+```
+
+## Plugins
+
+Similar to aliases, plugins are available with bash-it. You can find a
+complete list of plugins in the same way as aliases. Simply execute the
+following:
+
+```sh
+bash-it show plugins
+```
+
+You will see the following output showing enabled and disabled plugins:
+
+``` txt
+Plugin Enabled? Description
+alias-completion [ ]
+autojump [ ] Autojump configuration, see https://github.com/wting/autojump for more details
+aws [ ] AWS helper functions
+base [x] miscellaneous tools
+basher [ ] initializes basher, the shell package manager
+battery [x] display info about your battery charge level
+blesh [ ] load ble.sh, the Bash line editor!
+boot2docker [ ] Helpers to get Docker setup correctly for boot2docker
+browser [ ] render commandline output in your browser
+```
+
+To enable a plugin, do:
+
+```sh
+bash-it enable plugin <plugin name> [plugin name]... -or- $ bash-it enable plugin all
+```
+
+To disable a plugin, do:
+
+```sh
+bash-it disable plugin <plugin name> [plugin name]... -or- $ bash-it disable plugin all
+```
+
+## Themes
+
+There are quite a few pre-defined
+[themes](https://bash-it.readthedocs.io/en/latest/themes-list/#list-of-themes)
+available with bash-it.
+
+To list all themes:
+
+```sh
+ls ~/.bash_it/themes/
+```
+
+To use a new theme, you\'ll need to edit `.bashrc` and alter
+the `BASH_IT_THEME` variable to your desired theme. For
+example, I am using the `zork` theme.
+
+```sh
+nano ~/.bashrc
+```
+
+```sh
+export BASH_IT_THEME='zork'
+```
+
+Once you save your changes, you just need to exit your terminal and
+create a new one in order to see your changes to the
+`.bashrc` file. You can also `source` the file to
+see changes, but I recommend starting a completely new shell instead.
+
+### ble.sh
+
+One big feature I was missing in Bash that both `zsh` and
+`fish` have is an autosuggestion feature. To explain: as you
+type, an autosuggestion feature in the shell will offer suggestions in a
+lighter font color beyond the characters already typed. Once you see the
+command you want, you can click the right arrow and have the shell
+auto-complete that line for you.
+
+Luckily, the [Bash Line Editor](https://github.com/akinomyoga/ble.sh)
+(ble.sh) exists! This program provides a wonderful autosuggestions
+feature perfectly, among other features that I haven\'t tested yet.
+
+In order to install ble.sh, execute the following:
+
+```sh
+git clone --recursive https://github.com/akinomyoga/ble.sh.git
+make -C ble.sh install PREFIX=~/.local
+echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc
+```
+
+Again, exit the terminal and open a new one in order to see the
+newly-configured shell.
+
+# Restart the Session
+
+Finally, as mentioned above, you\'ll need to restart the session to
+ensure that your user is using bash by default.
+
+You will also need to exit and re-open a shell (e.g., terminal or
+terminal tab) any time you make changes to the `.bashrc`
+file.
+
+```sh
+sudo reboot now
+```