鱼壳

鱼壳用户介绍

我一直在使用鱼壳好几个月了,我认为这是我用过的最好的外壳。因为许多的原因。

人们似乎坚持重击这是许多系统上的默认设置(更新:现在,macOS的默认设置为Zsh)或使用Zsh,并使用了出色的工具,例如哦,我的Zsh使它变得更加惊人。

Bash虽然很棒,但它是一个非常基本的外壳,带有一组有限的可配置选项。我倾向于将其主要用于运行Bash脚本(这是另一个主题),而不是作为交互式外壳。 Zsh提供了许多功能,但需要进行一些配置才能设置,这可能会使初学者感到恐惧。另外,太多的选项和自由度意味着您很容易陷入配置瘫痪状态,并且最终一周要更改20次选项,以确保您不会错过任何机会。

我不想在那些项目上“扑朔迷离”,这太了不起了,我花了很多时间,有时仍然使用。这个描述是我试图强调鱼的好处的尝试

鱼壳来抢救!该外壳提供了一个令人惊叹的环境,并且具有开箱即用的全功能配置。

Fish最喜欢的功能是:

  • 它为您已经执行的命令提供了更好的自动完成功能,仅此一项就可以使我的日常工作更快,更省力。
  • 您开始输入命令,然后按up键,以查看您之前使用该命令的shell历史记录中的所有时间。
  • 您可以在任何系统上安装Fish,并且Fish可以在任何地方以相同的方式工作,而不必进行过多的自定义来获得精美的东西。

在脚本方面,它与Bash脚本(以更好的恕我直言)完全不同,但是您可以运行任何以Bash脚本为前缀的Bash脚本。#!/bin/bash

安装完成后,您将获得以下好处:

  • 语法高亮
  • 一个很好的提示
  • 自动补全
  • 手册页提示的参数建议
  • 基于Web的配置

我认为这是最适合初学者的外壳。

我记得我注意到的有趣的事情之一是主页。起初,我不知道那是否是过去的遗物:

对于那些拥有图形计算机的幸运儿,您可以从网页上设置颜色并查看功能,变量和历史记录。

然后我意识到这是程序员的幽默,这使我发笑。科技应该总是很有趣,对不对?

首先,什么是壳?

Shell是基础操作系统的接口。它允许您使用文本和命令执行操作,并且为用户提供了高级功能,例如能够创建脚本。

安装

通过运行安装Fishbrew install fish在macOS上。

看看我的macOS终端指南

fish安装在/usr/local/bin/fish

由于这很可能已经在您的路径中,请运行fish启动鱼壳(类型exit返回到您的默认外壳)

配置

关于Fish的好处是基于Web的配置。跑fish_config启动Web客户端。

configuration

从这里你可以

  • 从预定义的颜色列表中选择一种颜色方案
  • 从预定义的提示列表中选择提示
  • 检查配置的Fish函数和变量
  • 查看命令历史

配置存储在~/.config/fish文件夹,您就可以在其中进行编辑,而不必使用(可选)基于Web的配置。

Fish功能:语法高亮显示,自动完成和带有手册页提示的参数建议

Fish使您可以执行系统上可用的常规Unix命令。文件系统操作,例如:

  • ls列出文件
  • cd更改文件夹
  • rm删除文件或文件夹
  • mv将文件移动到另一个文件夹,或更改文件名
  • cp复制文件

如果您运行这些命令之一(或any命令,实际上),您将开始看到您键入的单词具有不同的颜色。它使阅读和理解命令变得非常容易。

鱼还可以增加自动补全功能。如果你跑了cd ~/.config/fish/以前,现在您键入cd,Fish会提示您可能要键入的命令,您只需按右箭头以接受建议(或者您可以继续键入以更改命令)。此建议基于命令历史记录和文件路径。

基于自动完成功能的建议也适用于命令。我在这里输入c并按下选项卡:

autocomplete commands

鱼还建议参数以及如何使用它们。类型ls -然后按tab。您可以使用的参数及其含义的列表如下所示:

autocomplete

此内联帮助是从手册页,有用的shell帮助(尝试运行man ls以获取完整的帮助)。

将Fish设置为默认外壳

如果您喜欢Fish并尝试将其设置为默认外壳,请打开文件/etc/shells。我用pico进行那些小的文件编辑pico /etc/shells,但是您可以使用任何喜欢的编辑器,甚至可以将VS Code与code /etc/shells

它应包含类似于以下内容的内容:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

在末尾添加以下行以添加Fish外壳:

/usr/local/bin/fish

next, run

chsh -s /usr/local/bin/fish

enter your password, and the shell will change for your user.

change shell

Plugins

You can install Fish plugins.

Fisher is a popular Fish package manager.

Install it using

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

and it’s available with the fisher command.

Now a package can be installed using fisher add <github-repository-path> and removed using fisher rm <github-repository-path>.

List all plugins installed using fisher ls.

Run fisher to update all the packages you installed.

Popular plugins are

Here is a list of packages you can install.

POSIX compliance

Various shells comply with the POSIX shell command standard.

POSIX means

  • Portable
  • Operating
  • System
  • Interface
  • X (for Unix)

and it’s a standard meant to unify the various Unix environment that were built over time. There is a shell command standard subset, which is meant as a way to unify how Unix shells work.

Unix is a specification/standard for a family of operating systems. Linux and macOS are based on Unix (Windows is not).

bash, ksh and others are POSIX compliant. Being POSIX compliant makes scripts written with POSIX compatibility work across POSIX compliant shells.

Fish (like sh or csh for example) is not compliant, so it’s not a POSIX shell, and this means that writing commands and scripts for Fish is different. Scripts written for Fish won’t work outside of Fish. Just like csh scripts only work on csh (and derivatives)

Why is it different? Various reasons, but I imagine having to support POSIX means the shell must adhere to a common language that might interfere with the shell philosophy and way of working. Not everyone want to have that baggage of tech to support forever.

This will very rarely be a problem with executing commands, but you need to keep it in mind when it comes to scripting and programming.

Download my free Linux Commands Handbook


More cli tutorials: