Як кодувати, як хакер в терміналі

Ви хакер. Ваш дім - це термінал. Ви знаєте, кожен ключовий штрих цінний. Якщо щось ефективніше менш ніж на 100%, ви витрачаєте години на те, щоб знайти правильний інструмент, щоб заощадити секунди. Бо це завжди того варте.

Чи ваш постійний пошук нових і кращих способів робити речі не заважає насправді робити щось? Хтось може сказати так, але ти кажеш ні. Жодна робота не варта того, щоб ви могли читати лекції своїм колегам про те, чому ви змогли зробити це так ефективно (час налаштування не врахований).

Далі наводиться перелік інструментів / функцій, про які повинен знати кожен хороший хакер.

Відмова : Ця стаття написана з великою дозою сатири. Це поворот мему "Я, інтелектуал". Хоча пропозиції є щирими (і далеко не повними), посилання на те, щоб бути "хакером", є просто для розваги.

Оболонка (zsh)

Середній розробник : оболонка - це оболонка. Насправді не має значення, який із них я використовую. Вони в будь-якому випадку смокчуть. Ти, хакер : Оболонка - це серце моєї роботи. Моє захоплення ефективністю та характеристиками не має меж. Моя оболонка повинна бути гідною справжнього хакера.

Ви живете в терміналі, і тому ви хочете використовувати чудову оболонку. Тому ви використовуєте zsh.

Він має цілу низку функцій:

  • Автовиправлення помилок написаних команд
  • Легка заміна баша
  • Краще cdзавершення використання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)

Original text

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: