首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

闲话macOS三:与系统深入接触之命令行

大一上《计算机原理》课程就学习了用户接口(User Interface,简称UI,亦称用户界面)是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。

目前我个人对用户接口按如下分类:

命令行接口(Command Line Interface,简称CLI):是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。

应用程序接口(Application Programming Interface,简称API):软件系统不同组成部分衔接的约定,是操作系统或软件系统提供给应用程序调用使用的代码。

基础设施即服务(Infrastructure as a Service,简称IAAS)

平台即服务(Platform as a Service,简称PAAS)

软件即服务(Software as a Service,简称SAAS)

Web服务(Web Service)

图形用户接口(Graphical User Interface,简称GUI):是指采用图形方式显示的计算机操作用户界面。与早期的命令行接口相比,图形用户接口对于用户来说更易于接受,但降低了灵活性。

由于使用命令行接口需要记住不少命令,很多人会认为命令行接口没有图形用户接口操作方便。但在熟悉常用命令的前提下,使用命令行接口可以比图形用户接口更灵活和高效,同时也更节约系统资源。关于记忆命令,我的经验是先用起来再说,不断挖掘新需求和用法,用多了就记住,估计很少人把常用命令和用法记住了再开始用吧。有些命令过段时间不用就会生疏,多查查man、tldr和google就好。

对于使用Linux的读者想必对命令行不会感到陌生,Linux操作系统的配置、软件安装、查看日志等操作若是不用命令行可能会感觉到别扭。我之前使用过的archlinux默认是没有安装桌面环境,用户按自己需要一步一步把桌面环境搭建起来。当然Windows也是支持命令行,犹记得在大一时,看一老师在Windows上娴熟地使用命令行,感觉就像是电影里的黑客,当时觉得很酷炫。大概是在大一的时候,当时加入的ACM兴趣小组与另一兴趣小组(机缘巧合,后来上研究生时与其中一位师兄同在一实验室,他教会了我很多使用Linux的经验)共用食堂二层创新基地的一房间,可能受他们影响,开始接触Linux(Fedora和Ubuntu),但仅限于在虚拟中使用,熟悉的命令也有限。研究生进入实验室后又接触了CentOS、openSUSE和debian等,慢慢地将debian作为主要操作系统。后来可能因为集成的桌面环境占用较多资源导致系统比较卡,开始物色一个轻量级的Linux发行版,很快就发现了archlinux,连续使用了多年直到两年前完全使用macOS。

说了那么多有点扯远了,习惯了使用命令行接口后可能会多一个看软件系统的视角,不过在入坑前还是要先想想学习命令行是否会对工作和学习有帮助,是否会提高效率,毕竟喜欢命令行的人不占多数。

终端

macOS自带了终端应用Terminal,可用Alfred或Spotlight打开。

由于Terminal不能左右分屏,很早我就改用iTerm了。

对于iTerm,我必须要做的一个设置是把Option键映射为Esc+,如果使用Terminal的话是Edit->Use Option as Meta Key,这个Meta键对于终端重度用户很重要。

Shell

搞定了终端,接下来要考虑是的使用什么Shell,Shell可以理解为一个脚本执行引擎,用户输入文本形式的命令,Shell负责解释并执行输入的命令。

目前使用比较多的Shell有:

bash

zsh

fish

clink(Windows)

可用以下命令查看你的系统有哪些shell:

我最早使用的是bash,也是最熟悉的,即便现在Shell是用zsh,但写脚本还是会用bash,使用bash执行脚本文件的方法是在脚本文件头部加上:

多年前参考Advanced Bash-Scripting Guide学习了bash脚本。

自从看了《终极 Shell》一文,尝到zsh的甜头就果断改投zsh门下。设置当前用户的login shell为zsh:

zsh的强大之处在于配置,不过已经有人提供了支持插件的配置框架,我们直接使用就可以了。我最早使用的是oh-my-zsh,配置简单,设置要使用的插件和主题就可以愉快玩耍了。那到底zsh相比bash的优势在哪呢?

输入命令或前缀,用山下箭头翻阅命令历史

智能拼写纠错

补全:命令补全、命令参数补全、路径补全等

目录浏览和跳转:输入d,列出在当前会话访问过的目录列表,序号即可跳转到对应的目录

输入目录名即可跳转,不需输入cd命令,输入…会自动转成../..

可以通过设置别名,针对文件类型设置对应的打开程序,比如 ~alias -s tgz=‘tar -xvf’~

插件支持

后来由于觉得oh-my-zsh有点重了,加载有点慢,于是改用了prezto(链接是我目前的配置)。

oh-my-zsh和prezto对于插件管理做得不是特别好,于是就有了zplug、zgen和antigen这类插件管理器。为了减少加载时间,目前我用zplug来安装插件,但没用它加载插件,awesome-zsh-plugins这个列表汇总了一些好用常用的插件。

写了这么多,最后我想给没使用过zsh的读者推荐的却是fish,开箱即用,自带tab自动完成和语法高亮,号称是一个智能并对用户友好的命令行Shell,你值得拥有。

推荐列表

关于常用命令和操作下篇再续,此处先献上资源。

https://github.com/jlevy/the-art-of-command-line

https://github.com/alebcay/awesome-shell

https://github.com/unixorn/awesome-zsh-plugins

http://www.tldp.org/LDP/abs/html/

https://google.github.io/styleguide/shell.xml

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111G0CKA500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券