20 个 Linux 终端下的生产力工具
终端 生产力

> 
> 来试下这些开源工具。你的效率一定会提升。
> 
> 
> 


![Computer screen with files or windows open](/data/attachment/album/202006/02/120437yssvhiah3a3qshmv.png "Computer screen with files or windows open")


诚然，很多人使用计算机来娱乐。但是一些人会用来工作，他们的理论是计算机应当能帮我们更快、更好、更有条理地做事。实际应用中，如果没有根据每个人的工作风格来做一些小小的手动配置，计算机也不会提升我们的效率。


[Kevin Sonney](https://opensource.com/users/ksonney) 喜欢设计系统，今年他在一个 20 篇文章的系列中介绍了 18 种不同的生产力工具，不仅涵盖了网络方面，也涉及了一些能提升他的工作效率的工具。Kevin 最喜欢的所有的工具都收集到了本文，下面概括介绍每种工具的用途。


### 文件同步


![](/data/attachment/album/202006/02/120442u30ujw7ao8h002rz.png)


重要的文件应谨慎管理。


* [Syncthing](/article-11793-1.html) 能使不同设备上的文件彼此同步。*设备*可以是 Linux、Windows 或 Mac，也可以是服务器、Android 平板或手机，等等。文件可以是你期望在多台机器间同步的任意文件。Syncthing 是轻量级的点对点工具，因此你不需要支付服务费，你不需要第三方的服务器，而且它很快。
* 同步是一件事，但有时你还需要帮忙处理你拥有的文件。假设你想要一个应用程序在作为一个图形化应用和作为控制台应用时表现不同行为，你可以通过修改符号链接指向的不同的配置文件来达成，如 `.foo-gui` 和 `.foo-term`。这完全可以手动修改，但也可以用脚本处理，或者你可以试试 [GNU Stow](/article-11796-1.html)。


### 邮件管理


![](/data/attachment/album/202006/02/120447c0beqf0febezr3ue.png)


我们都依赖于邮件和收件箱，但似乎很少有人对自己管理邮件的方式满意。如果你喜欢用终端工作，为什么不在终端里管理邮件呢？在终端里收发邮件是一件事，但是要能在终端里组织你的邮件就更棒了。如果你的职业是打字员或是天生写脚本的人，试试这类工具吧。


* 我每天用 [OfflineIMAP](/article-11804-1.html) 把工作邮件同步到笔记本，以便用 Mutt 看邮件。它是很特别的工具，只做一件事：保证本地的邮件副本与远程的收件箱完全同步。配置和用 [cron](https://opensource.com/article/17/11/how-use-cron-linux) 调度它都相当简单，然后你就可以忘了它的存在。它相当简单，你与 IMAP 打交道的每一刻时间都应该用它。
* [Notmuch](/article-11807-1.html) 能为邮件消息建立索引、加标签以及搜索邮件。如果你的收件箱出了问题，它可以让你*不需要*花费很大精力去补救。
* [Vim](/article-11908-1.html) 可以收发邮件和管理你的日历。
* 当然，[Emacs](/article-11932-1.html) 可以收发邮件和管理你的日历。


### 日历和联系人


![](/data/attachment/album/202006/02/120457d1m03nr1mzqtjkd2.png)


我用过的所有的 Linux 系统都预装了 `cal` 命令。这是一个在终端下用的便捷小日历，它也是个很好的速查工具。然而，它几乎不能被称为一个日历应用程序。[iCalendar](https://tools.ietf.org/html/rfc5545) 规范（与 Apple 的旧桌面日历无关）中提供了丰富的共享日历功能，虽然 `.ics` 的约会和事件是纯文本的，但没有在终端中管理它们的工作流。至少，在 khal 和 vdirsyncer 出现之前不存在。


* [Khal](/article-11812-1.html) 是基于控制台的读写 `.ics` 文件的日历工具。
* [Vdirsyncer](/article-11812-1.html) 是一个能把线上日历（和联系人）同步到本地的终端命令。Khal 在本地运行，vdirsyncer 在远程运行，这样远程的日历能与你管理的本地日历保持同步。
* 管理联系人可能会很难，但是如果你用了 [Khard](/article-11834-1.html) 这个可以读写 vCard 格式文件的终端命令，就会变得简单。反过来，这些文件可以使用 vdirsyncer（你可能已经在使用 khal 日历）同步到远程服务器上。这使得日历和联系人管理变得简单，而且[搭建个人信息管理（PIM）服务器](https://opensource.com/alternatives/google-calendar)也比以前容易得多。


### 待办清单


![](/data/attachment/album/202006/02/120507annf9o8ddt5dvk38.png)


* 组织你每天的行程有很多种方式，但是最简单的一种是用 [todo.txt](/article-11835-1.html)，一个简单、便携、易于理解的系统，即使设备上没有安装 todo.txt 也不会出现问题。todo.txt 能正常运行的原因是，它就是一个 Bash 脚本，能在几乎所有你能找到的的设备上运行。操作过程很简单：下载脚本，安装到家目录，用一个简单的命令开始调度任务。如果你的计算机上没有安装 `todo.sh` 命令，那么你的待办清单仍然可以作为纯文本文件来使用，你可以在需要时手动更新它。
* [Jrnl](/article-11846-1.html) 是一个能追踪的你的日常议程和活动的数字笔记本。如果你要摘抄桌面上的报纸的片段或者把随意的想法写下来，那么这就是你要找的程序。


### 保持联络


![](/data/attachment/album/202006/02/120511u1nqecnxyk5tcel7.png)


沟通是关键，然而现在似乎比以往更多的是聊天平台的问题。这不仅仅是几个客户端，而是几个独立的网络。你怎么管理它们？这里有两个方案。


* 如果你有很多的联系人分布在太多的聊天网络中，那么你应该试试 [BitlBee](/article-11856-1.html)，使用这个单一的聊天客户端就可以关联其他所有的聊天网络。
* [Rainbow Stream](/article-11858-1.html) 是个推特客户端，能让你不被开放的网页浏览器分心，而又能紧跟时事。


### 消息通知


![](/data/attachment/album/202006/02/120515kj33jd6r7rcrlhj7.png)


网页浏览器很好，但有时过犹不及。你希望能及时收到消息，但是你又不想全身心地陷入到互联网中。因为互联网是建立在开放的规范和大量的开源技术的基础上的，你不必在一个界面中做所有的事。对于不同的任务有不同的*客户端*，它们可以让你用自己喜欢的界面来获取你需要的信息。


* [Tuir](/article-11869-1.html) 是一个 Reddit 终端客户端。
* [Newsboat](/article-11876-1.html) 是一个 RSS 阅读器。
* [Wego](/article-11879-1.html) 是天气预报工具。
* [Vim](/article-11912-1.html) 可以帮助你登录 Reddit 和 Twitter。
* [Emacs](/article-11956-1.html) 能让你保持与 Reddit、Twitter 和聊天客户端的联系。


### 保持终端一直开启


![](/data/attachment/album/202006/02/120517ksxqhep59ejqhsrt.png)


如果你正在用终端工作，那么关闭它的意义是什么呢？摆脱 `exit` 和 `Ctrl+D` 的诱惑，让你的控制台一直开启着。


* [Tmux](/article-11900-1.html) 能分割你的终端，让一个终端窗口“分层"到另一个窗口之上，甚至从一台计算机离开到另一台计算机后，能保持相同的终端会话。
* [DESQview](/article-11892-1.html) 是另一种方式：它本质上是一个终端窗口管理器。


### 未完待续


本文列出的工具只是 Linux 终端的神奇生产力工具中的一小部分。这个清单会结束，但你自己的清单可以继续。找到你喜欢的工具，学习它们，并将其发挥出最大的优势。当然，一个好的工具不一定要提高你的生产力：有时你最喜欢的命令也可以是能让你最快乐的命令。你的工作是找到自己喜欢的命令，用它们来改变世界。


玩得愉快！




---


via: <https://opensource.com/article/20/6/productivity-tools-linux-terminal>


作者：[Alan Smithee](https://opensource.com/users/alansmithee) 选题：[lujun9972](https://github.com/lujun9972) 译者：[lxbwolf](https://github.com/lxbwolf) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


OK
Many of us, admittedly, only use computers because they're fun. But some people use computers to get stuff done, and their theory is computers are supposed to make things faster, better, and more organized. In practice, though, computers don't necessarily improve our lives without a little manual reconfiguration to match our individual work styles.

[Kevin Sonney](https://opensource.com/users/ksonney) likes to design systems, not just for networks but for improving his own workday, and this year he covered 18 different productivity tools in a series of 20 articles. This article gets all of Kevin's favorite tools in one place and provides a quick summary of what each one can do for you.

## File sync


Important files deserve to be managed carefully.

[Syncthing](https://opensource.com/article/20/1/sync-files-syncthing)is a way for you to keep files on different devices in sync with one another. A*device*can be a Linux, Windows, or Mac computer, a server, an Android tablet or phone, and so on, and the files can be any file you want to keep updated across many machines. Syncthing is lightweight and peer-to-peer, so you don't need to pay for a service, you don't need a third-party server, and it's fast.- Synchronization is one thing, but sometimes you also need help dealing with the files you have. Say you want an application to behave differently depending on whether it's being used as a graphical application or as a console application. You could change the config file between, say,
`.foo-gui`

and`.foo-term`

by changing which its symlink points to. Doing that manually is entirely possible, but it could be scripted, or you could just use[GNU Stow](https://opensource.com/article/20/1/configuration-management-stow)instead.

## Email management

We all depend on email and inboxes, but few of us seem to be comfortable with how we manage it. If you're inclined to working in the terminal, why not stay in the terminal for email? It's one thing to check and send email from a terminal, but it's even more exciting to organize your email that way. If you're a typist by trade and scripter by nature, check out some of these tools.

- I use
[OfflineIMAP](https://opensource.com/article/20/1/sync-email-offlineimap)every day to sync work email to my laptop for viewing in Mutt. It's a specific tool that does exactly one thing: it ensures that a local copy of your email inbox mirrors your remote inbox. It's relatively easy to set up and schedule with[cron](https://opensource.com/article/17/11/how-use-cron-linux), and then you can forget it exists. Easy and worth every minute you spend fighting with IMAP. [Notmuch](https://opensource.com/article/20/1/organize-email-notmuch)indexes, tags, and searches mail messages. If you have a problem with your inbox, it takes*not much*effort to remedy it.[Vim](https://opensource.com/article/20/1/vim-email-calendar)can check and send email and manage your calendar.[Emacs](https://opensource.com/article/20/1/emacs-mail-calendar), of course, also does email and calendaring.

## Calendars and contacts

Every Linux system I've ever used comes with the `cal`

command installed. This is a handy little calendar for the terminal, and it's a great quick reference. However, it's hardly what you'd call a calendaring application. The [iCalendar](https://tools.ietf.org/html/rfc5545) specification (no relation to Apple's old desktop calendar) provides rich shared calendaring functionality, and while `.ics`

appointments and events are plain text, the workflow for managing them in the terminal is basically non-existent. Or at least, it was non-existent until khal and vdirsyncer.

[Khal](https://opensource.com/article/20/1/open-source-calendar)is a console-based calendar that reads and writes`.ics`

files.[Vdirsyncer](https://opensource.com/article/20/1/open-source-calendar)is a terminal command that synchronizes online calendars (and contacts) to your local drive. Khal works locally and vdirsyncer works remotely, so your calendars online stay in sync with the calendar you're managing on your hard drive.- Contact management can be hard, but it gets easier if you use
[Khard](https://opensource.com/article/20/1/sync-contacts-locally), a terminal command that reads and writes files in the vCard format. This, in turn, can be synchronized to a remote server using vdirsyncer (which you may already be using for your khal calendar). This makes calendaring and contacts easy, and it's easier than ever to[run your own personal information management (PIM) server](https://opensource.com/alternatives/google-calendar).

## To-do lists

- There are many ways to organize your day, but one of the easiest is
[todo.txt](https://opensource.com/article/20/1/open-source-to-do-list), a simple, portable, understandable system that doesn't break down even if a device doesn't have todo.txt installed on it. The reason todo.txt works is because it's just a Bash shell script, which will run on nearly any computing device you can find. The process is simple: you download the script, install it to your home directory, and start scheduling tasks with a simple command. If you're on a computer that doesn't have the`todo.sh`

command installed, your to-do list is still useful as a plain-text file, which you can update manually as needed. [Jrnl](https://opensource.com/article/20/1/python-journal)is a digital notebook to keep track of your daily agenda and activities. This is the program you've been looking for if you compulsively jot notes on scraps of paper on your desk or echo idle thoughts into random text files.

## Keep in touch

Communication is key, and yet now more than ever, there seems to be a chat platform problem. There aren't just several clients, there are several isolated networks. How do you manage them all? Here are two ideas.

- If you've got lots of contacts spread across too many chat networks, you ought to try
[BitlBee](https://opensource.com/article/20/1/open-source-chat-tool), the singular chat client that lets you infiltrate all the others. [Rainbow Stream](https://opensource.com/article/20/1/tweet-terminal-rainbow-stream)is a Twitter client that can be awfully useful to keep you away from the distractions of an open web browser while still keeping you in touch with your adoring public.

## Keep informed

Web browsers are nice, but they can sometimes be overkill. You want to stay informed, but you don't want to give yourself entirely over to the internet. Because the internet is built upon open specifications and a lot of open source technology, you don't have to do everything through just one interface. There are *clients* for all kinds of tasks, and they give you access to the information you need, using the interface you prefer.

[Tuir](https://opensource.com/article/20/1/open-source-reddit-client)is a terminal client to Reddit.[Newsboat](https://opensource.com/article/20/1/open-source-rss-feed-reader)is an RSS feed reader.[Wego](https://opensource.com/article/20/1/open-source-weather-forecast)brings you a weather report.[Vim](https://opensource.com/article/20/1/vim-task-list-reddit-twitter)can help you check in with Reddit and Twitter.[Emacs](https://opensource.com/article/20/1/emacs-social-track-todo-list)can keep you connected with clients for Reddit, Twitter, chat, and much more.

## Keep that terminal open

If you're spending time in a terminal, what's the point in ever closing a terminal? Do away with the temptation of `exit`

or `Ctrl+D`

and keep your console open.

[Tmux](https://opensource.com/article/20/1/tmux-console)lets you split your terminal, "layer" one terminal window on top of another, and even walk away from one computer and continue the same terminal session from another computer.[DESQview](https://opensource.com/article/20/1/multiple-consoles-twin)takes a different approach: it's essentially a window manager for your terminal.

## Keep going

The tools in this article are but a subset of amazing productivity tools for your Linux terminal. This list must end, but your personal list can grow. Find the tools you love, learn them, and use them to your greatest advantage. Of course, a good tool doesn't always have to increase your productivity: sometimes your favorite command is the one that makes you happiest. Your job is to find the commands you love and to do amazing things with them.

Have fun!

## 6 Comments