俗话说工欲善其事,必先利其器。从本文开始,在分享技术文章的同时,打算加入一个新的主题,关于我的办公(个人)电脑(生产力工具)的相关配置分享

希望能帮到大家~

1、关于电脑

如果你和我从事一样的职业(such as a developers or about Linux),如果电脑是你的另一半,而且还在使用Windows的话,强烈建议尝试使用类Unix系统,主要有以下三个途径(来自我的亲测经历)

a、给自己的电脑安装DeepinUbuntu等桌面版Linux操作系统,缺点是安装操作系统后,相关应用的软件包很少很难找

b、攒cuán一台配置稍好点的主机,安装黑苹果,缺点是驱动问题很难解决。就算安装好了,一旦系统升级或因为某些原因导致诸多驱动不可用

c、攒zǎn钱换一台Mac,时至今日,Mac的价格其实也不贵,得益于其强大的操作系统、生态周边以及应用商店,从我个人使用来看,带给我的 “快乐” 比Windows不要太多

大四实习的那一年里,终于攒钱换上了梦寐以求的MBP,作为人生的第二台电脑,得到的那一刻无比兴奋,可能这就是一个对电子产品无比热爱的男孩的快乐吧~

我的电脑型号是MacBook Pro (15-inch, 2018)(A1990)

除此外还淘有一台Mac mini (Late 2012)

电脑细节我就不多做介绍了,回归正题,还是讲讲如何优化电脑各种配置

2、终端介绍

作为一个长期使用终端(依赖患者)的 “工具” 人,拥有一个强大的终端工具是很有必要的,和linux操作系统的软件包管理工具yumdebapt一样,在Mac上用的最为普遍的是Homebrew,其次还有python的包管理工具pip,除了自带的终端外,终端软件可以选择iTerm2SecureCRTRoyal TSXTermius等等,我用的较多的终端软件是iTerm2SecureCRT,关于包管理工具Homebrewpip的安装使用和终端软件iTerm2的使用配置技巧这里也就不多介绍了,网络上有很多很多文章供参考

3、终端工具推荐

到这里才是本文的正题,用上了方便的Homebrew以及配置酷炫的iTerm2后,可以借助以下增强工具来提高生产力,部分终端工具同样可以安装在服务器Linux操作系统上

3.1 fzf-模糊查找

fzf可以用来查找任何列表内容、文件、历史命令、本机绑定的host、进程、Git分支、进程等。所有的命令行工具可以生成列表输出的都可以再通过管道pipefzf上进行搜索和查找

安装命令

brew install fzf

安装完后还需要安装键盘映射和模糊提示

$(brew --prefix)/opt/fzf/install

两大用法:ctrl + t查找目录下的条目、ctrl +r优化历史记录选择

目前我使用最多的是利用其进行历史记录的模糊查找,比传统的ctrl+r显示效果更好,效果如下

3.2 autojump-快速跳转

autojump提供了一种快速进行文件目录导航的方式。其效果就是实现目录间快速跳转,想去哪个目录直接j+ 目录名(甚至不用输全),不用频繁的cd

安装命令

brew install autojump

修改 ~/.zshrc 文件,添加到plugins配置列表并在尾部追加如下内容,配置完后source生效

plugins=(
  git
  autojump
)

...

[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh

用法很简单,想要跳转到哪个目录下直接使用j + 目录名跳转,甚至可以模糊输入,前提是有通过cd进入过这个目录,例如从任何目录跳转进入到git-workspace目录下

j git-workspace
或者模糊跳转
j git

3.3 tmate-终端远程

这个工具可以认为是终端版本teamviewer,在有网络的情况下远程终端连接并监视或操作

安装命令

brew install tmate

使用方法,例如要从A机器远程到B机器,在B机器上安装并运行tmate启动

# tmate
Tip: if you wish to use tmate only for remote access, run: tmate -F                  [0/0]
To see the following messages again, run in a tmate session: tmate show-messages
Press <q> or <ctrl-c> to continue
---------------------------------------------------------------------
Connecting to ssh.tmate.io...
Note: clear your terminal before sharing readonly access
web session read only: https://tmate.io/t/ro-xmVWpRRN6GGJrR4zWLMKrSt7T
ssh session read only: ssh ro-xmVWpRRN6GGJrR4zWLMKrSt7T@sfo2.tmate.io
web session: https://tmate.io/t/3PwVRseDmXpG74X43EQG9hBYq
ssh session: ssh 3PwVRseDmXpG74X43EQG9hBYq@sfo2.tmate.io

[tmate] ssh session: ssh 3PwVRseDmXpG74X43EQG9hBYq@sfo2.tmate.io

然后在A上就可以通过上面四种方式连接到B机器:web会话和ssh会话,分为只读和读写两种

具体原理可以查看官方文档

3.4 hadolint-对Dockerfile语法检查

Hadolint可以帮助进行Dockerfile语法检查,实现的是Dockerfile linter,其实现依据来自于Docker官网推荐的Dockerfile最佳实践

安装命令

brew install hadolint

使用

hadolint node.Dockerfile
node.Dockerfile:21 DL3007 Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag
# 提示说镜像的tag使用latest不是最佳的,因为一旦镜像升级,下次再拉取的latest镜像可能就不是当前的版本了,应该明确具体的版本号

3.5 speedtest-测网速

speedtest是一个测网速的工具,其也有图形化工具

安装命令

brew tap teamookla/speedtest
brew update
brew install speedtest --force

使用

# speedtest

   Speedtest by Ookla

     Server: Beijing Unicom - Beijing (id = 5145)
        ISP: China Unicom Beijing
    Latency:     3.57 ms   (0.88 ms jitter)
   Download:    93.43 Mbps (data used: 44.5 MB)
     Upload:    93.37 Mbps (data used: 42.2 MB)
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/aa6513eb-a9b3-466b-8edd-92f73c59267f

此外还有一个用python脚本实现的,项目地址https://github.com/sivel/speedtest-cli,作用同样是测试网速,将此脚本下载并放到本地的bin目录下添加执行权限即可使用

# speedtest-cli
Retrieving speedtest.net configuration...
Testing from China Unicom Beijing (114.246.34.169)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Beijing Broadband Network (Beijing) [1.72 km]: 4.659 ms
Testing download speed................................................................................
Download: 93.27 Mbit/s
Testing upload speed................................................................................................
Upload: 93.64 Mbit/s

3.6 glances-实时监控

类似于mac自带的活动监视器,以客户端/服务器端模式运行,远程监控可以通过终端、Web接口或API(XML-RPC和RESTful)来实现。除此之外,数据还可以导出至文件或外部数据库中。

采用Python开发,并使用了外部库来从目标系统收集数据。该工具基于开源架构实现,开发者可以根据自己的需求来增加新的插件或导出模块,可以监控的信息如下

  • CPU 使用率
  • 内存使用情况
  • 内核统计信息和运行队列信息
  • 磁盘 I/O 速度、传输和读/写比率
  • 文件系统中的可用空间
  • 磁盘适配器
  • 网络 I/O 速度、传输和读/写比率
  • 页面空间和页面速度
  • 消耗资源最多的进程
  • 计算机信息和系统资源

安装命令

brew install glances

效果如下

3.7 lrzsz-终端上传下载

lrzsz是一款在linux里可代替ftp上传和下载的程序,可以直接在终端进行文件上传下载,其传输协议是ZModem协议

安装命令

brew install lrzsz

iTerm2上配置和使用lrzsz可以参考我之前的文章Mac下iTerm2配置lrzsz功能

3.8 neovim-增强版vim

neovim是一个增强版本的vim编辑器,其特性有异步任务和socket、内建terminal26位真彩色支持、浮动窗口等

安装命令

brew install neovim

iTerm2上配置和使用可以参考Mac电脑iterm中配置neovim入门与实践

4、小结

以上工具都极大提高了我日常工作和学习的效率,由于篇幅和时间关系,只列出了我对这些工具的常用用法,详细内容可以参考工具开源地址

本文只推荐了一部分,后面有机会再继续 ~