zsh 成为默认 shell

淘汰掉我的旧MBP换新后,欢天喜地打开Terminal,感觉有点不对,提示符什么时候变成了 %

查询了一些资料发现,原来在2019年WWDC期间,苹果推出了macOS Catalina,并且将zsh设置为操作系统默认shell。因为之前我的笔记本都是从EI Captin一路升级上来的,所以没体会到shell的变化,最近新换了笔记本后,才发现默认shell的变化。

苹果在其官网上,也提供了如何更改默认 Shell 的操作步骤

bash

shell 俗称壳,是用来与 kernel 内核做区分,作用是给计算机使用者提供操作界面,与计算机内核进行交互。它接收用户命令,对命令做解析,然后调用系统中的应用。

shell 有很多种,这里介绍几个常见的shell。

第一个 Unix Shell 是1979年底在V7 Unix(AT&T第7版)中引入的,以它的资助者 Stephen Bourne 命名。Bourne shell 是一个交互式命令解释器和命令变成语言。

Bourne Again Shell (bash)是GNU计划的一部分,用来替代 Bourne shell。现在大多数Linux发行版都适用bash作为默认的shell。

zsh

zsh 号称是「终极shell」,从这个称号看出来它的功能应该很强大。zsh的历史也很悠久,保罗·弗斯塔德(Paul Falstad)于1990年在普林斯顿大学求学时编写了Zsh的初版。

zsh具有以下主要功能:

  • 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。
  • 在用户启动的所有shell中共享命令历史。这一点非常棒,曾经因为sh无法很好的解决多个窗口共享历史命令的问题头疼了一阵儿
  • 通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。
  • 改进的变量与数组处理。
  • 在缓冲区中编辑多行命令。
  • 多种兼容模式,例如使用/bin/sh运行时可以伪装成Bourne shell。
  • 可以定制呈现形式的提示符;包括在屏幕右端显示信息,并在键入长命令时自动隐藏。
  • 可加载的模块,提供其他各种支持:完整的TCP与Unix域套接字控制,FTP客户端与扩充过的数学函数。
  • 完全可定制化。

zsh-自动完成

% autoload -U compinit && compinit
% cp -<TAB>
-H -- follow symlinks on the command line in recursive mode
-L -- follow all symlinks in recursive mode
-P -- do not follow symlinks in recursive mode (default)
-R -- copy directories recursively
-X -- don't copy extended attributes or resource forks
-a -- archive mode, same as -RpP
-f -- force overwriting existing file
-i -- confirm before overwriting existing file
-n -- don't overwrite existing file
-p -- preserve timestamps, mode, owner, flags, ACLs, and extended attributes
-v -- show file names as they are copied
% kill <TAB>
2630 ttys000 0:00.09 -zsh
2663 ttys000 0:00.00 -zsh

由上面的例子可以看到,在打开自动完成功能后,使用Tab键可以自动提示cp命令的可选参数,也能够自动提示出kill命令可以杀掉的用户进程的pid。

zsh-自动切换文件夹

shiqiang@QKing ~ % ls
Desktop Documents Downloads Library Movies Music Parallels Pictures Projects Public
shiqiang@QKing ~ % setopt auto_cd
shiqiang@QKing ~ % Projects
shiqiang@QKing Projects % pwd
/Users/shiqiang/Projects
shiqiang@QKing Projects % unsetopt auto_cd

打开这个选项后,就可以省略cd命令来实现自动切换文件夹。

Fish Shell

在我整理资料的过程中,不断的看到一些文章资料介绍 fish shell 并且给它打上 90后 最现代 等一系列标签来彰显它的年轻与现代化,出于好奇我也整理试用了一下。

Fish 是 Friendly interactive shell 的简称,默认提供了很多shell需要配置才能有的功能,因此在易用性上有了很大的进步。它的一些功能特性总结如下:

  • 默认彩色显示
  • 自动在光标后给出命令建议
  • 自动补全,fish shell会根据历史命令或者命令的可能性自动列出所有可能的选项,还能在下方提供各个命令的解释说明问题
  • fish的语法与bash差异较大,但是在可读性上做了非常明显的改善

参考资料

  1. 在 Mac 上将 zsh 用作默认 Shell
  2. zsh取代bash 成为macOS Catalina的默认shell
  3. Fish shell 入门教程
  4. 百度百科 shell
  5. Awesome Zsh
  6. Zsh Homepage

Catalina 默认使用zsh了,你可习惯的更多相关文章

  1. iTerm2 + Oh My Zsh 打造舒适终端体验

    iTerm2 + Oh My Zsh 打造舒适终端体验 写在前面 最终效果图: 因为powerline以及homebrew均需要安装command line tool,网络条件优越的同学在执行本文下面 ...

  2. 安装更强大更美观的zsh,配置oh my zsh及插件

    安装更强大更美观的zsh,配置oh my zsh及插件 #0x0 安装zsh #0x1 安装oh my zsh #0x2 配置zshrc #0x3 配置主题 #0x4 安装插件 #0x5 小结 #0x ...

  3. 设置win7资源管理器启动时的默认位置-windows-操作系统-网页教学网

    设置win7资源管理器启动时的默认位置-windows-操作系统-网页教学网 如何设置win7资源管理器启动时的默认位置?我不太习惯 Win 7 的资源管理器默认总是打开库,我还是喜欢资源管理器打开树 ...

  4. 最强Linux shell工具Oh My Zsh 指南

    引言 笔者已经使用zsh一年多了,发现这个东东的功能太强大了.接下来,给大家推荐一下. 以下是oh-my-zsh部分功能 命令验证 在所有正在运行的shell中共享命令历史记录 拼写纠正 主题提示(A ...

  5. -Shell 命令行工具 Cmder Babun Zsh MD

    目录 目录 Cmder:window 下增强型的 cmd + bash 简介 配置 解决中文乱码问题 添加到右键菜单 添加至环境变量 修改命令提示符号 自定义aliases Readme.md 设置c ...

  6. Archlinux zsh终端美化 powerlevel10k配置

    环境 Arch Linux + KDE Plasma 安装zsh yay -S zsh 更改默认终端 chsh -s /bin/zsh 安装oh-my-zsh-git archlinuxcn源有打好的 ...

  7. 一文搞定 Windows Terminal 设置与 zsh 安装 (非WSL)

    为 Windows Terminal 添加标签页 添加 Anaconda 标签页 在settings.json文件中的list列表中添加设置项: { // Make changes here to t ...

  8. 龙芯fedora28日常生存指南

    2021-01-30 v0.0.5 从0.0.1开始改了非常多,一月余时间的花费渴望为其他人提供一点帮助,能够快速上手. 这主要是这一年来我从3B1500到3A4000再到福珑2的日常使用记录,是之前 ...

  9. Kali2搭建Metasploitable3靶机

    Metasploitable3简介 Metasploitable3是Metasploitable2的升级版本,它是一个虚拟靶机系统,里面含有大量未被修复的安全漏洞,它主要是用于metasploit-f ...

随机推荐

  1. Ethical Hacking - NETWORK PENETRATION TESTING(23)

    Detecting ARP Posionning Attacks ARP main security issues: 1. Each ARP requests/response is trusted. ...

  2. Python Ethical Hacking - Packet Sniffer(1)

    PACKET_SNIFFER Capture data flowing through an interface. Filter this data. Display Interesting info ...

  3. Lua骚操作——三元条件运算符

    本文地址:https://www.cnblogs.com/oberon-zjt0806/p/13337577.html 本文参考了这篇文章 三元运算符 (如果您已经了解什么是三元运算符,请大胆第前往下 ...

  4. Windows搭建Redis集群-详细教程

    一.集群知识 1.集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 2.使用redis集群的必要性 问题:我们已经部署好了redis,并且能启动 ...

  5. 高效C++:序

    C++的语法全而复杂,如何简洁高效的使用C++的各种语法,是一个值得研究的问题,特别是对于刚入门或是有小几年开发经历的同学,了解或是熟悉这个问题,所得到的提升无疑是巨大的.向前人学习,站在巨人的肩膀上 ...

  6. java opencsv解析csv文件

    记一次使用opencsv解析csv文件时碰到的坑 最近在开发过程中需要解析csv文件,公司用的解析工具是opencsv,在根据opencsv的官方文档去解析时发现csv文件中含有繁体字,使用其自带的C ...

  7. Go操作腾讯云COS对象存储的简单使用案例

    准备环境 安装Go环境 Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载 安装SDK go get -u github.com/tencentyun/cos-go- ...

  8. 深入理解JVM(③)Java的锁优化

    前言 从JDK5到JDK6HotSpot虚拟机开发团队花费了大量的资源实现了各种锁优化技术,如适应性自旋(Adaptive Spinning).锁消除(Lock Elimination).锁膨胀(Lo ...

  9. Windows 平台做 Python 开发的最佳组合

    在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?本文将带你了解如何利用微软官方维护 ...

  10. MySQL Front远程连接数据库

    连接前需要先配置一下服务器端的数据库 进入mysql数据库,选择mysql mysql> use mysql; 选择 host 表 mysql> select host from user ...