layout | title | description | date | tags | republished | |||||
---|---|---|---|---|---|---|---|---|---|---|
post |
Using better CLIs |
Don't stick to the default CLIs, there are better alternatives! |
2017-10-09 |
bash python |
|
For people who spend half of their lives in a terminal user experience and functionality is highly important. Making you a happier person.
Here are some very good alternatives to some default command line applications.
My full setup includes all the stuff discussed in this article and even more. Check it out: https://github.com/sobolevn/dotfiles
When working with open-source (and Github) projects frequently sometimes git
is not enough. So, Github created a tool called hub
.
It allows to fetch from remote forks, browse issues, and create pull requests with ease!
# Open the current project's issues page
$ git browse -- issues
→ open https://github.com/github/hub/issues
# Fetch from multiple forks, even if they don't yet exist as remotes:
$ git fetch user1,fork2
# Browse issues:
$ git browse -- issues
→ open https://github.com/github/hub/issues
# Create a pull request:
$ git pull-request -F message-template.md
Let's face it. git log
sucks. It allows browsing commits history, but when you want to look inside a specific commit for its changesets or tree structure, well ... You will have to memorize all these commands or use a lot of external plugins.
tig
solves it all. Firstly, it allows to browse commits history. Then you can dive inside! Browse changesets, file trees, blames, and even blobs!
When working with postgres
we have to use psql
. And it is quite good. It has history, some basic autocomplete and commands that are easy to remember. But, there is a better tool called pgcli
.
Features:
- smart autocomplete
- syntax highlighting
- pretty prints of tabular data
It also has a version for mysql
called mycli
.
By the way, yesterday a new 10th version of postgres
was released.
System monitoring is a common task for every developer. Standard tools like top
and htop
are fine and trusted software. But look at this beauty, glances
:
glances
has a lot of plugins to monitor almost everything: https://github.com/nicolargo/glances#requirements
It also has a web interface and a pre-build docker
-container to integrate it easily. My top list of plugins:
docker
gpu
(very useful for miners and coins-folks!)bottle
(web-interface)netifaces
(IPs)
Create your own if you want to!
curl
and wget
are well-known and widely used. But are they user-friendly? I don't think so. httpie
is user-friendly and can do everything these tools can:
And even more. I don't regret a single minute using it instead of curl
.
jq
is like sed
for json
. It is useful in automation, configuration reading, and making requests.
You can try it online.
Sometimes you have to do something live: a screencast, a gif, a talk. But everything can go wrong. You can make a typo, or misspell a word. That's where doitlive
comes to the rescue.
Just create a file called session.sh
with command that needs to be executed and then run:
doitlive play session.sh
Now you are a command line magician.
I do a lot of python
development. So, here are my tools to make it better.
pipsi
= pip
Script Installer. It creates a virtualenv
for every script and symlinks it into your /usr/local/bin
. So it won't pollute your global environment.
pipenv
is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world.
The problems that Pipenv seeks to solve are multi-faceted:
- You no longer need to use pip and virtualenv separately. They work together.
- Managing a requirements.txt file can be problematic, so Pipenv uses the upcoming Pipfile and Pipfile.lock instead, which is superior for basic use cases.
- Hashes are used everywhere, always. Security. Automatically expose security vulnerabilities.
- Give you insight into your dependency graph (e.g.
$ pipenv graph
). - Streamline development workflow by loading
.env
files.
ipython
= Interactive python
.
ipython
brings autocomplete, nice history, and multiline editing to the python
shell. It integrates into django
and flask
nicely without any configuration.
It is a must for all of my projects. If you like it, also check out jupyter
.