{"id":3638,"date":"2019-04-04T06:00:12","date_gmt":"2019-04-04T06:00:12","guid":{"rendered":"https:\/\/blog.ssdnodes.com\/blog\/?p=3638"},"modified":"2025-05-18T12:30:19","modified_gmt":"2025-05-18T12:30:19","slug":"13-smart-terminal-tools-to-level-up-your-linux-servers","status":"publish","type":"post","link":"https:\/\/www.ssdnodes.com\/blog\/13-smart-terminal-tools-to-level-up-your-linux-servers\/","title":{"rendered":"13 smart terminal tools to level up your Linux servers"},"content":{"rendered":"<p>Developers either tend to love or hate the Linux server\u2019s terminal. You have people like Matt, our CEO, who has told me many times that he could spend an entire day on the Linux terminal and love every second of it. And you have <em>the rest of us<\/em>, who need a little help and encouragement.<\/p>\n<p>The Linux terminal is highly customizable. It\u2019s far from static. That means there\u2019s plenty of opportunities to turn a bland default terminal into a powerful (and colorful!) platform for you to get things done. There\u2019s new and unique tools, infinite customization options, and a ton of innovation around creating a usable and highly productive text-based interface.<\/p>\n<p>Let\u2019s take a look into some of my favorite ways to customize, personalize, and make any Linux terminal a little more to my liking.<\/p>\n<h2 id=\"a-collection-of-the-smartest-terminal-tools-for-a-better-linux-server-experience\">A collection of the smartest terminal tools (for a better Linux server experience)<\/h2>\n<ol type=\"1\">\n<li><a href=\"#tldr-read-simplified-instructions-on-common-terminal-commands\">tldr: Read simplified instructions on common terminal commands<\/a><\/li>\n<li><a href=\"#how2-get-answers-to-your-terminal-questions\">how2: Get answers to your terminal questions<\/a><\/li>\n<li><a href=\"#z-jump-to-frecently-used-places\">z: Jump to \u2018frecently\u2019 used places<\/a><\/li>\n<li><a href=\"#trash-cli-put-files-in-the-trash\">trash-cli: Put files in the trash<\/a><\/li>\n<li><a href=\"#nnn-manage-your-files-visually\">nnn: Manage your files visually<\/a><\/li>\n<li><a href=\"#bat-view-files-with-syntax-highlighting\">bat: View files with syntax highlighting<\/a><\/li>\n<li><a href=\"#pomo-a-pomodoro-timer-in-your-terminal\">pomo: A Pomodoro timer in your terminal<\/a><\/li>\n<li><a href=\"#fselect-find-files-with-the-speed-of-sql\">fselect: Find files with the speed of SQL<\/a><\/li>\n<li><a href=\"#exa-list-files-with-more-features-and-colors-than-ls\">exa: List files with more features (and colors) than ls<\/a><\/li>\n<li><a href=\"#peco-get-grep-like-filtering-with-interactivity\">peco: Get grep-like filtering with interactivity<\/a><\/li>\n<li><a href=\"#has-do-you-have-the-dependencies-you-need\">has: Do you 'has' the dependencies you need?<\/a><\/li>\n<li><a href=\"#progress-see-how-much-longer-mv-dd-cp-and-more-will-take\">progress: See how much longer mv, dd, cp, and more will take<\/a><\/li>\n<li><a href=\"#mackup-sync-and-restore-your-application-settings\">mackup: Sync and restore your application settings<\/a><\/li>\n<\/ol>\n<p>Bonus: <a href=\"#plus-a-bonus-transfer.sh-for-sharing-files-directly-from-the-command-line\">transfer.sh: Share files directly from the command line<\/a><\/p>\n<h2 id=\"tldr-read-simplified-instructions-on-common-terminal-commands\">tldr: Read simplified instructions on common terminal commands<\/h2>\n<p>You\u2019ve probably seen this dismissive phrase before: \u201cGo read the man pages.\u201d<\/p>\n<p>That\u2019s a typical response (unfortunately) to Linux newcomers asking questions about how to use a particular program or utility in the terminal. Doubly unfortunate is that man pages are often tedious and hard to parse.<\/p>\n<p><a href=\"https:\/\/github.com\/tldr-pages\/tldr\" target=\"_blank\" rel=\"noopener\">tldr<\/a> is a solution. Once you download it, you can type in <code>tldr $PROGRAM<\/code> to get some clear information on how to use that program, plus real-life examples. You\u2019ll probably be most interested in the<a href=\"https:\/\/github.com\/raylee\/tldr\" target=\"_blank\" rel=\"noopener\">Bash<\/a> client.<\/p>\n<p>Here\u2019s what <code>tldr tar<\/code> gets you:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3639 size-full\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-tldr.png\" alt=\"Terminal tool: the tldr output for tar\" width=\"840\" height=\"624\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-tldr.png 840w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-tldr-300x223.png 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-tldr-768x571.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Get more immediate, real-life examples of how to use Linux\/Unix utilities.<\/li>\n<li>No more switching from a terminal to a browser a hundred times to get the information you need or copy-paste the command you\u2019re looking for.<\/li>\n<li>Finally learn and remember all those obscure syntaxes that you keep stumbling over.<\/li>\n<\/ul>\n<h2 id=\"how2-get-answers-to-your-terminal-questions\">how2: Get answers to your terminal questions<\/h2>\n<p>Don\u2019t feel like reading a bunch of <code>tldr<\/code> examples to find the one you need? Not even sure which utility you need to get the job done? <a href=\"https:\/\/github.com\/santinic\/how2\" target=\"_blank\" rel=\"noopener\">how2<\/a> could be your answer.<\/p>\n<p>The developers of <code>how2<\/code> bill it as \u201cstackoverflow from the terminal\u201d and \u201clike <code>man<\/code>, but you can query it in natural language.\u201d Those are some big promises, but the output is impressive:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-3644\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-how2-1024x752.png\" alt=\"Terminal tool: how2 answering a question about .tar.bz2\" width=\"1024\" height=\"752\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-how2-1024x752.png 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-how2-300x220.png 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-how2-768x564.png 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-how2.png 1296w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Unlike <code>tldr<\/code>, which uses <code>curl<\/code> to download and display one of the write-ups that they keep on a centralized server, <code>how2<\/code> actively queries the Google and StackOverflow APIs to pull answers to your questions. If it finds a community-approved answer to your question, it\u2019ll use that to populate the output. And given how many developers are wholly dependent on said answers to program anything useful (<em>pointing at myself<\/em>), you should be okay in a lot of cases.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Real answers to your tricky-to-remember questions, like how <code>tar<\/code> works.<\/li>\n<\/ul>\n<figure><embed src=\"file:\/\/\/home\/joel\/nextcloud\/ssdnodes\/blog\/%22I%20don't%20know%20what's%20worse--the%20fact%20that%20after%2015%20years%20of%20using%20tar%20I%20still%20can't%20keep%20the%20flags%20straight,%20or%20that%20after%2015%20years%20of%20technological%20advancement%20I'm%20still%20mucking%20with%20tar%20flags%20that%20were%2015%20years%20old%20when%20I%20started.%22\" width=\"300\" height=\"150\" data-mce-fragment=\"1\"><\/embed><figcaption>https:\/\/imgs.xkcd.com\/comics\/tar.png<\/figcaption><\/figure>\n<h2 id=\"z-jump-to-frecently-used-places\">z: Jump to \u2018frecently\u2019 used places<\/h2>\n<p>I always have a few directories that I tend to spend the most time in. A small shell script called <a href=\"https:\/\/github.com\/rupa\/z\/blob\/master\/README\" target=\"_blank\" rel=\"noopener\">z<\/a> helps me access those directories with less overhead.<\/p>\n<p>To install it, grab the <a href=\"https:\/\/raw.githubusercontent.com\/rupa\/z\/master\/z.sh\" target=\"_blank\" rel=\"noopener\">source code<\/a> and put the <code>z.sh<\/code> file in a directory of your choosing. Then open up your <code>.bashrc<\/code> or <code>.zshrc<\/code> file and copy in the following line:<\/p>\n<pre><code>. \/path\/to\/z.sh<\/code><\/pre>\n<p>Save the file and start up a new terminal. You\u2019ll need to use <code>cd<\/code> normally for a bit for <code>z<\/code> to build up its database of common directories, but after a short period of normal use, it\u2019ll have a good idea of where you might want to go. Hit <code>z<\/code> and either type a portion of the path you want to go to, or hit <code>TAB<\/code> to get the first recommendation.<\/p>\n<p><code>z<\/code> uses both frequency and recency to decide which directory you\u2019re most likely to want to visit\u2014hence the word \u201cfrecency.\u201d A weighted rank algorithm tracks which directories you visit, when you last visited them, and figures out where to point you next.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>No more typing out <code>\/www\/www-data\/wordpress\/wp-content\/themes\/my-theme<\/code> all the time.<\/li>\n<li>Less cognitive load on getting to where you need to go.<\/li>\n<li>Available options to prevent symlink resolution, directories to exclude, sudo mode, and more.<\/li>\n<li>Full support for tab completion.<\/li>\n<\/ul>\n<h2 id=\"trash-cli-put-files-in-the-trash\">trash-cli: Put files in the trash<\/h2>\n<p><code>rm<\/code> is a powerful tool. Almost <em>too<\/em> powerful. If you <code>rm<\/code> a file or directory on a Linux server, it\u2019s gone. There\u2019s no trash can backing you up when you decide, two months later, that you <em>do<\/em> need that file you deleted.<\/p>\n<p><a href=\"https:\/\/github.com\/andreafrancia\/trash-cli\" target=\"_blank\" rel=\"noopener\">trash-cli<\/a> is a solution.<\/p>\n<p>If typing <code>trash-put<\/code> is too many characters, you could always <a href=\"https:\/\/www.ssdnodes.com\/blog\/quick-tip-using-aliases-for-good\/\">alias<\/a> it to <code>tp<\/code> or another that\u2019s easy to use. You could even alias it to <code>rm<\/code> itself for a completely seamless experience, although the developer <a href=\"https:\/\/github.com\/andreafrancia\/trash-cli#can-i-alias-rm-to-trash-put\" target=\"_blank\" rel=\"noopener\">doesn\u2019t actively recommend this<\/a>.<\/p>\n<p>But you do you.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Reduce the impact of a simple <code>rm<\/code> mistake.<\/li>\n<li>Uses the standardized FreeDesktop.org trash system, so it\u2019s the same as your KDE, GNOME, or XFCE trash can.<\/li>\n<li>Your trash stays in <code>~\/.Trash<\/code> so it\u2019s easily accessible if need be.<\/li>\n<\/ul>\n<h2 id=\"nnn-manage-your-files-visually\">nnn: Manage your files visually<\/h2>\n<p>Speaking of directories on Linux servers\u2014I often miss the visual element of the desktop file manager. It just feels effortless to move around, select the file you\u2019re interested in, and copy\/move\/delete it.<\/p>\n<p><a href=\"https:\/\/github.com\/jarun\/nnn\" target=\"_blank\" rel=\"noopener\">nnn<\/a> is a fast and lightweight file manager that will help you navigate and deal with files on your server whenever you\u2019re sick of <code>cd<\/code>, <code>ls<\/code>, <code>mv<\/code>, and <code>rm<\/code>.<\/p>\n<p>You can install it on Ubuntu\/Debian with a simple <code>apt-get install nnn<\/code>, and there\u2019s <a href=\"https:\/\/github.com\/jarun\/nnn\/releases\/tag\/v2.4\" target=\"_blank\" rel=\"noopener\">binary releases<\/a> for those who use CentOS or another OS.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Get the comforts of a visual file manager without much overhead.<\/li>\n<li>A plethora of <a href=\"https:\/\/github.com\/jarun\/nnn#keyboard-shortcuts\" target=\"_blank\" rel=\"noopener\">keyboard shortcuts<\/a> to satisfy the curiosity of power users.<\/li>\n<li>Multiple \u201ccontexts,\u201d similar to tabs, to explore multiple directories concurrently.<\/li>\n<li>Full customization of colors, bookmarks, and options.<\/li>\n<\/ul>\n<h2 id=\"bat-view-files-with-syntax-highlighting\">bat: View files with syntax highlighting<\/h2>\n<p>If you want to look at the contents of a file quickly, you\u2019ll probably use <code>cat<\/code> or <code>less<\/code>. But both of those dump the contents of the file onto your terminal in plain white characters.<\/p>\n<p>Instead, use <code>bat<\/code>. <a href=\"https:\/\/github.com\/sharkdp\/bat\" target=\"_blank\" rel=\"noopener\">bat<\/a> will display the same file, but will also automatically detect the language and display syntax highlighting. It\u2019ll even show git modifications on the left-hand side. And if the file is long enough, <code>bat<\/code> will pipe the output to <code>less<\/code> so that you can use the <code>Page Up<\/code> and <code>Page Down<\/code> keys to navigate with ease.<\/p>\n<p>Installation is <a href=\"https:\/\/github.com\/sharkdp\/bat#installation\" target=\"_blank\" rel=\"noopener\">pretty simple<\/a> on all major OS options. The results look great:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3641 size-full\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-bat.png\" alt=\"Terminal tool: An example of how bat handles a .md file\" width=\"656\" height=\"450\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-bat.png 656w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/03\/201904_tools-bat-300x206.png 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Combine <code>cat<\/code> and <code>less<\/code> into a single tool.<\/li>\n<li>Quickly view version control information without doing the whole <code>git diff<\/code> thing.<\/li>\n<li>More readily examine files with the help of syntax highlighting.<\/li>\n<li>Combine it with <code>tail<\/code> for continuous monitoring <em>with<\/em> syntax highlighting.<\/li>\n<li>Combine it with <code>git show<\/code> to see an older version of a file with syntax highlighting.<\/li>\n<\/ul>\n<h2 id=\"pomo-a-pomodoro-timer-in-your-terminal\">pomo: A Pomodoro timer in your terminal<\/h2>\n<p>Have trouble staying focused while you work, whether in the terminal or out? The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pomodoro_Technique\" target=\"_blank\" rel=\"noopener\">Pomodoro Technique<\/a> might be for you. But instead of finding some ad-filled mobile app or launching <em>another<\/em> browser tab, why not just use the technique right from your terminal?<\/p>\n<p><code>pomo<\/code> is a simple tool that helps you decide on a task you want to accomplish, set timed intervals, give yourself breaks, and then get to it. There is a <a href=\"https:\/\/github.com\/kevinschoon\/pomo#installer-script\" target=\"_blank\" rel=\"noopener\">installer script<\/a> or <a href=\"https:\/\/github.com\/kevinschoon\/pomo\/releases\" target=\"_blank\" rel=\"noopener\">binaries<\/a> for all Linux distributions.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Combine the terminal work you need to do with the tool that will help you stay focus. Less context switching.<\/li>\n<li>Plan future Pomodoro sessions and initiate them when you\u2019re ready.<\/li>\n<li>Keep tabs on the work you\u2019ve accomplished with the <code>list<\/code> command.<\/li>\n<\/ul>\n<h2 id=\"fselect-find-files-with-the-speed-of-sql\">fselect: Find files with the speed of SQL<\/h2>\n<p>I used to think SQL queries looked like nonsense. Then I found <a href=\"https:\/\/github.com\/jhspetersson\/fselect\" target=\"_blank\" rel=\"noopener\">fselect<\/a>.<\/p>\n<p><code>fselect<\/code> has nothing to do with databases or SQL itself, though\u2014it\u2019s a tool to help you find files with a querying syntax that developers and sysadmins have been using for decades.<\/p>\n<p>The full usage looks confusing:<\/p>\n<pre><code>fselect COLUMN[, COLUMN...] [from ROOT[, ROOT...]] [where EXPR] [order by COLUMNS] [limit N] [into FORMAT]<\/code><\/pre>\n<p>But when you look at some simple examples, the syntax starts to make sense. Here\u2019s how to see the full path and size of any file in your home directory that ends in <code>.cfg<\/code> or <code>.tmp<\/code>:<\/p>\n<pre><code>fselect size, path from \/home\/user where name = '*.cfg' or name = '*.tmp'<\/code><\/pre>\n<p>Or any file in <code>\/tmp<\/code> that\u2019s bigger than 1GB:<\/p>\n<pre><code>fselect size, abspath from \/tmp where size gt 1g<\/code><\/pre>\n<p>Or any image in <code>home\/user\/photos<\/code> that\u2019s wider or taller than 2000px:<\/p>\n<pre><code>fselect width, height, path from \/home\/user\/photos where width gte 2000 or height gte 2000<\/code><\/pre>\n<p>The syntax is far more potent than these examples\u2014be sure to check out the detailed <a href=\"https:\/\/github.com\/jhspetersson\/fselect#examples\" target=\"_blank\" rel=\"noopener\">examples list<\/a> for more possibilities.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>You might be able to replace <code>find<\/code> and <code>ls<\/code> with <code>fselect<\/code>.<\/li>\n<li>Complex queries help you find files without typing <code>cd<\/code> a hundred times.<\/li>\n<li>Shortcuts for common file types help narrow down searches.<\/li>\n<li>Search within archives!<\/li>\n<\/ul>\n<h2 id=\"exa-list-files-with-more-features-and-colors-than-ls\">exa: List files with more features (and colors) than ls<\/h2>\n<p>I, for one, can never remember how to get <code>ls<\/code> to do what I\u2019d like. I have some defaults set up in my <code>.zshrc<\/code>, but the output still isn\u2019t as useful as I\u2019d like. Enter <a href=\"https:\/\/github.com\/ogham\/exa\" target=\"_blank\" rel=\"noopener\">exa<\/a>, which bills itself as a <em>modern replacement for ls<\/em>.<\/p>\n<p><code>exa<\/code> uses \u201cbetter\u201d defaults and simple color-coordination to help distinguish between file types and the other data it displays. My favorite feature is the tree view, which lets you specify a depth to see how files relate to one another. It\u2019s like bringing the Unix <code>tree<\/code> command into the <code>ls<\/code> fold.<\/p>\n<p>To install, <a href=\"https:\/\/github.com\/ogham\/exa\/releases\" target=\"_blank\" rel=\"noopener\">download a binary<\/a> or use Rust\u2019s <code>cargo<\/code> command to install: <code>cargo install exa<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3645\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-exa.jpg\" alt=\"Terminal tool: examples of the output of exa\" width=\"800\" height=\"793\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-exa.jpg 800w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-exa-300x297.jpg 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-exa-150x150.jpg 150w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2019\/04\/201904_tools-exa-768x761.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Less thinking about or worrying over <code>ls<\/code> arguments.<\/li>\n<li>Automatic colors for easier scanning over a bunch of files or figuring out which file has the wrong permissions settings.<\/li>\n<li>By being a little more opinionated about options, <code>exa<\/code> is just more straightforward to use.<\/li>\n<\/ul>\n<h2 id=\"peco-get-grep-like-filtering-with-interactivity\">peco: Get grep-like filtering with interactivity<\/h2>\n<p>The most common way to search or filter a file for a specific string is to use <code>grep<\/code>. It works great\u2014when you know precisely what to look for.<\/p>\n<p><code>peco<\/code> solves that problem by making the filtering process interactive. You can use <code>peco<\/code> to check out the output of <code>ps aux<\/code> and filter as you go. That way you can try many filters interactively\u2014are you looking for processes run by <code>$USER<\/code> or a specific process name?\u2014instead of typing out a dozen <code>grep<\/code> commands.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Examine log files or process lists without knowing what you\u2019re looking for quite yet.<\/li>\n<li>Combine <code>peco<\/code> with other terminal tools or even <code>zsh<\/code> for enormous customization opportunities.<\/li>\n<\/ul>\n<h2 id=\"has-do-you-have-the-dependencies-you-need\">has: Do you 'has' the dependencies you need?<\/h2>\n<p>Want to quickly check whether your <code>$PATH<\/code> has the dependencies you need to move forward with your project or installation? Simply feed <a href=\"https:\/\/github.com\/kdabir\/has\" target=\"_blank\" rel=\"noopener\">has<\/a> a list of tools, like <code>has git node ruby go<\/code> and it\u2019ll output either positives (plus installed versions) or negatives for any dependencies you still need to install.<\/p>\n<pre><code>$ has git node npm\n\u2714 git 2.14.1\n\u2714 node 8.2.1\n\u2714 npm 5.3.0<\/code><\/pre>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Easily understand what programs (and which versions) you have and need.<\/li>\n<li>Stop messing about with <code>sudo apt list --installed | grep -i node<\/code> and use <code>has node<\/code> instead.<\/li>\n<\/ul>\n<h2 id=\"progress-see-how-much-longer-mv-dd-cp-and-more-will-take\">progress: See how much longer mv, dd, cp, and more will take<\/h2>\n<p>The <em>coreutils<\/em> available on every Linux installation\u2014the basics like <code>cp<\/code>, <code>mv<\/code>, <code>dd<\/code>, <code>tar<\/code>, <code>cat<\/code>, and more\u2014are great at getting things done, but they\u2019re not great at telling you <em>when<\/em> they\u2019re getting said thing done.<\/p>\n<p><a href=\"https:\/\/github.com\/Xfennec\/progress\" target=\"_blank\" rel=\"noopener\">progress<\/a> ends that mystery. Install the binary and run <code>progress<\/code> whenever you have a coreutil running to see its progress, the percentage completed, and a rough ETA for completion.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>No more waiting around forever for that <code>dd<\/code> command to finish.<\/li>\n<li>Monitor \u201cvirtually any command,\u201d according to the developer.<\/li>\n<\/ul>\n<h2 id=\"mackup-sync-and-restore-your-application-settings\">mackup: Sync and restore your application settings<\/h2>\n<p>I keep a repository of <a href=\"https:\/\/www.ssdnodes.com\/dotfiles\/\">dotfiles<\/a> around to make sure that whenever I reinstall my desktop\u2019s OS, all my terminals and apps work the way I want them to. I even have a custom-made Bash script to make all the necessary symlinks and install essential packages.<\/p>\n<p>I spent a ton of time creating all that. <a href=\"https:\/\/github.com\/lra\/mackup\/\" target=\"_blank\" rel=\"noopener\">mackup<\/a> will get you all the same functionality in about 2 minutes. You don\u2019t even need to tell it which app\u2019s settings you want backed up. Run <code>makup backup<\/code> and you\u2019ll have a settings backup that you can bring to your Linux server. If <code>mackup<\/code> doesn\u2019t support a specific application you use, you can <a href=\"https:\/\/github.com\/lra\/mackup\/blob\/master\/doc\/README.md#add-support-for-an-application-or-any-file-or-directory\" target=\"_blank\" rel=\"noopener\">easily add support<\/a>.<\/p>\n<p>No more wishing you had a particular feature on your server\u2019s terminal. No more wasting time trying to copy-paste settings from one to the other. Just your perfect Linux terminal environment in a matter of minutes.<\/p>\n<p><strong>How it\u2019ll level up your server:<\/strong><\/p>\n<ul>\n<li>Bring all your favorite settings for <code>bash<\/code>, <code>zsh<\/code> (and Oh My Zsh), <code>vim<\/code>, <code>git<\/code>, <code>tmux<\/code>, and plenty others, onto your Linux server.<\/li>\n<li>Work faster and smarter with your favorite plugins and opinionated setups.<\/li>\n<li>No need to spend time creating a custom Bash script.<\/li>\n<li>Easy to update and restore if you find yourself having to reinstall your server\u2019s OS frequently (aka you <a href=\"https:\/\/www.ssdnodes.com\/blog\/i-kill-every-vps-i-touch\/\">kill your server<\/a>).<\/li>\n<\/ul>\n<h2 id=\"plus-a-bonus-transfer.sh-for-sharing-files-directly-from-the-command-line\">Plus a bonus: transfer.sh for sharing files directly from the command line<\/h2>\n<p><a href=\"https:\/\/transfer.sh\/\" target=\"_blank\" rel=\"noopener\">transfer.sh<\/a> isn\u2019t a script\u2014it\u2019s a service that lets you upload and share files from your Linux terminal. Transfer.sh handles uploads and downloads with <code>curl<\/code>:<\/p>\n<pre><code>$ curl --upload-file .\/hi-from-ssd-nodes.txt https:\/\/transfer.sh\/hi-from-ssd-nodes.txt\nhttps:\/\/transfer.sh\/gK4F5\/hi-from-ssd-nodes.txt<\/code><\/pre>\n<p>You can download a file using <code>curl<\/code>, too. Maybe try downloading the file I had just uploaded? Due to the 14-day retention period, you have until about April 15, 2019 to try:<\/p>\n<pre><code>$ curl https:\/\/transfer.sh\/gK4F5\/hi-from-ssd-nodes.txt -o hi-from-ssd-nodes.txt<\/code><\/pre>\n<p>transfer.sh is great for those quick backups or shares when you\u2019ve edited a configuration file and want to make sure you have access to it in case you break your VPS. Once you <a href=\"https:\/\/gist.github.com\/nl5887\/a511f172d3fb3cd0e42d\" target=\"_blank\" rel=\"noopener\">add the alias<\/a> it\u2019s a no-brainer.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>The amazing (and intimidating) thing about spending time on the Linux terminal is that I\u2019ve just barely scratched the surface on the plethora of tools, apps, and shortcuts available to me. Hopefully, you\u2019ve found some of these useful!<\/p>\n<p>If you\u2019d like to share other smart terminal tools you\u2019re using on your Linux servers, let me know at <a href=\"file:\/\/\/home\/joel\/nextcloud\/ssdnodes\/blog\/joel@ssdnodes.com\">mailto:joel@ssdnodes.com<\/a>. I\u2019ll compile my favorites for a follow-up in the next few weeks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Linux terminal is highly flexible and customizable\u2014here&#8217;s 13 surefire way to be more productive and make your Linux server life easier (or prettier!).<\/p>\n","protected":false},"author":20,"featured_media":3648,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[41,18],"tags":[],"class_list":["post-3638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comparisons","category-devops"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/3638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/comments?post=3638"}],"version-history":[{"count":3,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/3638\/revisions"}],"predecessor-version":[{"id":12984,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/3638\/revisions\/12984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media\/3648"}],"wp:attachment":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media?parent=3638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/categories?post=3638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/tags?post=3638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}