俗话说工欲善其事,必先利其器。从本文开始,在分享技术文章的同时,打算加入一个新的主题,关于我的办公(个人)电脑(生产力工具)的相关配置分享 希望能帮到大家~
1、关于电脑
如果你和我从事一样的职业(such as a developers or about Linux
),如果电脑是你的另一半,而且还在使用Windows
的话,强烈建议尝试使用类Unix
系统,主要有以下三个途径(来自我的亲测经历)
a、给自己的电脑安装Deepin
、Ubuntu
等桌面版Linux
操作系统,缺点是安装操作系统后,相关应用的软件包很少很难找
b、攒cuán
一台配置稍好点的主机,安装黑苹果,缺点是驱动问题很难解决。就算安装好了,一旦系统升级或因为某些原因导致诸多驱动不可用
c、攒zǎn
钱换一台Mac
,时至今日,Mac
的价格其实也不贵,得益于其强大的操作系统、生态周边以及应用商店,从我个人使用来看,带给我的 “快乐” 比Windows
不要太多
大四实习的那一年里,终于攒钱换上了梦寐以求的MBP
,作为人生的第二台电脑,得到的那一刻无比兴奋,可能这就是一个对电子产品无比热爱的男孩的快乐吧~
我的电脑型号是MacBook Pro (15-inch, 2018)(A1990)
除此外还淘有一台Mac mini (Late 2012)
电脑细节我就不多做介绍了,回归正题,还是讲讲如何优化电脑各种配置
2、终端介绍
作为一个长期使用终端(依赖患者)的 “工具” 人,拥有一个强大的终端工具是很有必要的,和linux
操作系统的软件包管理工具yum
、deb
、apt
一样,在Mac
上用的最为普遍的是Homebrew
,其次还有python
的包管理工具pip
,除了自带的终端外,终端软件可以选择iTerm2
、SecureCRT
、Royal TSX
、Termius
等等,我用的较多的终端软件是iTerm2
和SecureCRT
,关于包管理工具Homebrew
及pip
的安装使用和终端软件iTerm2
的使用配置技巧这里也就不多介绍了,网络上有很多很多文章供参考
3、终端工具推荐
到这里才是本文的正题,用上了方便的Homebrew
以及配置酷炫的iTerm2
后,可以借助以下增强工具来提高生产力,部分终端工具同样可以安装在服务器Linux
操作系统上
3.1 fzf-模糊查找
fzf
可以用来查找任何列表内容、文件、历史命令、本机绑定的host
、进程、Git
分支、进程等。所有的命令行工具可以生成列表输出的都可以再通过管道pipe
到fzf
上进行搜索和查找
安装命令
代码语言:javascript复制brew install fzf
安装完后还需要安装键盘映射和模糊提示
代码语言:javascript复制$(brew --prefix)/opt/fzf/install
两大用法:ctrl t
查找目录下的条目、ctrl r
优化历史记录选择
目前我使用最多的是利用其进行历史记录的模糊查找,比传统的ctrl r
显示效果更好,效果如下
3.2 autojump-快速跳转
autojump
提供了一种快速进行文件目录导航的方式。其效果就是实现目录间快速跳转,想去哪个目录直接j
目录名(甚至不用输全),不用频繁的cd
了
安装命令
代码语言:javascript复制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
,在有网络的情况下远程终端连接并监视或操作
安装命令
代码语言:javascript复制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
最佳实践
安装命令
代码语言:javascript复制brew install hadolint
使用
代码语言:javascript复制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
是一个测网速的工具,其也有图形化工具
安装命令
代码语言:javascript复制brew tap teamookla/speedtest
brew update
brew install speedtest --force
使用
代码语言:javascript复制# 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 速度、传输和读/写比率
- 页面空间和页面速度
- 消耗资源最多的进程
- 计算机信息和系统资源
安装命令
代码语言:javascript复制brew install glances
效果如下
3.7 lrzsz-终端上传下载
lrzsz
是一款在linux
里可代替ftp
上传和下载的程序,可以直接在终端进行文件上传下载,其传输协议是ZModem协议
安装命令
代码语言:javascript复制brew install lrzsz
在iTerm2
上配置和使用lrzsz
可以参考我之前的文章Mac下iTerm2配置lrzsz功能
3.8 neovim-增强版vim
neovim
是一个增强版本的vim
编辑器,其特性有异步任务和socket
、内建terminal
、26
位真彩色支持、浮动窗口等
安装命令
代码语言:javascript复制brew install neovim
在iTerm2
上配置和使用可以参考Mac电脑iterm中配置neovim入门与实践
4、小结
以上工具都极大提高了我日常工作和学习的效率,由于篇幅和时间关系,只列出了我对这些工具的常用用法,详细内容可以参考工具开源地址