Sådan kode som en hacker i terminalen

Du er en hacker. Dit hjem er terminalen. Du ved, at hvert tastetryk er værdifuldt. Hvis noget er mindre end 100% effektivt, bruger du timer på at finde ud af det rigtige værktøj til at spare dig selv sekunder. Fordi det altid er det værd.

Forringer din konstante søgen efter nyere og bedre måder at gøre tingene på at gøre tingene? Nogle siger måske ja, men du siger nej. Intet arbejde er værd at gøre, medmindre du kan forelægge dine kolleger om, hvorfor du var i stand til at gøre det så effektivt (opsætningstid ikke inkluderet).

Følgende er en liste over værktøjer / funktioner, som enhver god hacker skal vide om.

Dislcaimer : Denne artikel er skrevet med en tung dosis satire. Det er et twist på "Mig, en intellektuel" meme. Selvom forslagene er oprigtige (og på ingen måde fuldstændige), er henvisningerne til at være en "hacker" bare for sjov.

Shell (zsh)

Gennemsnitlig udvikler : En skal er en skal. Det betyder ikke rigtig, hvilken jeg bruger. De suger alligevel alligevel. Du, en hacker : Skallen er livsnerven i mit arbejde. Min passion for effektivitet og funktioner kender ingen grænser. Min skal skal være en sand hacker værdig.

Du bor i terminalen, og det er derfor, du vil bruge en fantastisk skal. Derfor bruger du zsh.

Den leveres med en hel række funktioner:

  • Autokorrekt af forkert stavede kommandoer
  • Nem udskiftning af bash
  • Bedre cdfærdiggørelse ved hjælp af ab>
  • Path expansion: cd /u/c/c/j + ab > =cd /user/caleb/code/jarvis
  • Much more

It also comes with a great framework for managing your zsh configuration: Oh My Zsh. It includes 200+ plugins and 140+ themes to add all sorts of awesome features to your terminal. A small sample:

  • git - tons of aliases and useful functions for git
  • tmux - alias and settings for integrating zsh with tmux
  • node - adds node-docs command for opening website docs
  • osx - several utilities for working with OSX
  • web-search - initialize web searches from command line
  • auto-suggestions - fast, unobtrusive suggestions as you type based on history

You can find the full list of plugins here.

Session Management (tmux)

Average developer: Okay I’ve got my files open for lame_project_1. But I also need to do work in boring_project_2. I also need to ssh into a server and look at the logs. I guess I’ll just create a huge mess in my terminal that has files/tabs from multiple projects open in a way that I’ll eventually lose control of and be forced to close and start over.You, a Hacker: I work on several projects at once, so I need a tool to help me keep it organized. It should work across multiple platforms, and allow me to create organized work spaces and have a lot of other features that help with productivity.

You know that development can get messy. Sometimes, you have to work on several projects at once. That’s why you use tmux.

It allows you to create sessions. Each session can be customized to the exact layout you need. You can name sessions for easy switching, and even save and restore sessions if your terminal is closed. Plus, it has its own customizable status line that will allow you display things like time, date, CPU usage, and more. And if you don’t know your CPU usage at any given moment, are you even a hacker?

It even has a plugin manager and a whole slew of awesome plugins & features that will take your hacking to the next level.

Super-Pro Hacker Tip:

Use tmux with fzf via some awesome scripts to quickly create/delete/navigate to push your hacker level to over 9000.

Search (ripgrep)

Average developer: Where did I define that constant at? I know it’s somewhere in here. I’ll try to grep for it. What are the arguments again? Let me google that. Ah crap, now it’s searching my node_modules folder. This is the worst.You, a Hacker: When I search for something, it should be blazing fast. Also, it should use sensible default settings, like ignoring binaries or hidden files.

You know that searching your project is a common task. It should be fast, and it should not waste your time. This means things like ignoring anything that your .gitignore file ignores, and skipping binaries and hidden files. That’s why you use ripgrep. It’s like grep on steroids.

In the words of its creator: “Use ripgrep if you like speed, filtering by default, fewer bugs and Unicode support.”

Fuzzy Finding (fzf)

Average developer: It’s sure hard to remember the exact location of so many files within my project. I guess I’ll stumble around until I find the right one.You, a Hacker: I should be able to fuzzy-find files. I can type the file name, or some of the path, or all of it, and quickly find the file I’m looking for.

You know you shouldn’t have to type any more than you need to. So you use fzf, a general-purpose command-line fuzzy finder. It can also do much more than fuzzy-find files. It can used with any list: “files, command history, processes, hostnames, bookmarks, git commits, etc”.

Super-Pro Hacker Tip: You know that aliases are a great way to make shortcuts to take advantage of fzf’s features. For example, if you wanted to fuzzy-find a file, and then open up the selection in your default editor, you can add this to your zsh config:

Many more examples can be found on the fzf wiki.

Terminal Prompt (Spaceship)

Average developer: Who cares what my terminal prompt looks like? There’s no way it could possibly give me any useful information. I’ll just leave it as the default.You, a Hacker: I want my prompt to be amazing. It should be context-aware. It should give me useful info and be configurable. Also, it would be sweet if it was related to space.

You know a prompt should be simple, clean, and provide only relevant information. It should also blow people’s minds when they see its beauty. That’s why you use spaceship-prompt. It provides git/mercurial integration, battery level indicator, clever host name and user data, version numbers for a variety of libraries, gorgeous icons, and much more.

Changing directories (z)

Average developer: I need to change my directory to my “hacker” project, which is inside of my cool folder, which is inside of my personal folder, which is inside of my code folder, which is in my home directory.
cd ~/code/personal/cool/hacker
You, a Hacker: I need to change my directory to my “hacker” project.
z hacker

Typing out full file paths is what average developers do. You are a hacker. You rely on z. Once installed, it will start learning which directories you visit. Then, you can give it a regex (or simple folder name) to hop to the most likely candidate.

Bonus Hacker Tools

The following tools are additional ways to truly elevate your hacking game.

  1. wttr.in — There’s only one right way to check the weather.

2. Star Wars — Cool people like Star Wars. Hackers watch it in the terminal.

telnet towel.blinkenlights.nl

3. haxor-news - Are you even a hacker if you don’t read Hacker News?

4. Spotify - Using shpotify, you can play music from the terminal (OSX only… Hey, stop booing! Put that chair down! Who threw that tomato!?), or mopidy for something that’s cross-platform.

That about wraps it up. This is by no means a comprehensive list. Do you have any other amazing hacker tools? Leave a comment and let me know.

If you are interested in seeing more of these tools in action, checkout out my dotfiles that I use for development. As a bonus, here’s a screenshot of the glorious terminal in action: