位置: 编程技术 - 正文

在Mac OS上使用Fish Shell的基础教程(macfic)

编辑:rootadmin

推荐整理分享在Mac OS上使用Fish Shell的基础教程(macfic),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mac怎么使用flash,mac如何使用flash,mac如何使用flash,mac os finder,mac怎么用f3,macfic,mac os finder,mac os finder,内容如对您有帮助,希望把文章链接给更多的朋友!

英语是一种令人困惑的语言。例如,请考虑 moon 和 good 这两个单词。对外行人而言,这两个单词似乎应该是押韵的,但是前者的读音是 /mun/(根据 International Pronunciation Alphabet),而后者的读音是 /good/。似乎英语中的惟一规则就是例外。UNIX shell 同样令人困惑。例如,在 Bourne shell(和大多数常用的 UNIX shell)中,'$var'、"$var" 和 `$var` 看起来相似,但是它们会产生很不一样的结果。(在本文中的 shell 示例中,每个 CLI 前面都加上使用的 shell 的名称和命令编号) 。复制代码代码如下:bash-1) # Demonstrate the differences between single-, double-, and back quotesbash-2) var=lsbash-3) echo '$var'$varbash-4) echo "$var" lsbash-5) echo `$var`Rakefile app bin components config db doc lib log patches public script src test tmp vendor在上面的命令序列中,把变量 var 设置为两字母的字符串 ls。在第一个 echo 命令中,单引号禁止解释此变量,因此会按原样显示引号中的文本,即四字母的字符串 $var。在第 4 行代码中,双引号会解释此变量,所以结果是字符串 ls。最后,反撇号解释变量并作为子 shell 运行中间结果。因此,`$var` 产生中间字符串 ls,它作为 shell 命令运行,生成当前目录的内容列表。当然,这三种操作符(单引号、双引号和反撇号)都有合法的用途,但是与英语中的例外一样,记住和掌握这些细微差异很令人头疼。为了进一步证明这一点,请问:$var 和 "$var" 之间有什么差异?(提示:假设 $var 包含空格。)复制代码代码如下:bash-1) # Create three files and try to remove twobash-2) touch three two onebash-3) var="one two"bash-4) rm "$var"rm: one two: No such file or directorybash-5) rm $varbash-6) lsthree如果一个变量包含空格,双引号会按原样把变量展开为一个 参数。否则,变量中的任何空格都被解释为参数分隔符。shell 语法很令人头疼。这很糟糕,因为它使 CLI(UNIX 最强大的特性之一)更难掌握。上面这样的不一致问题甚至会给 UNIX 老手带来困扰。好在,fish (Friendly Interactive Shell) 的出现改变了这种混乱局面,它提供简明的语法,显著改善了用户体验。与其他 shell 一样,fish 也提供重定向、快捷方式、globbing(即通配符的展开)、子 shell、制表符补全和变量。但是,与其他 shell 不同,fish 还提供颜色编码的 CLI、功能丰富的命令行编辑器和大量文档。另外,对于执行任何操作,fish 只提供一种方式,这非常明智。如果一个 UNIX 实用程序能够完成某一任务,fish 就不会通过内置命令重复提供此特性。例如,fish 使用系统范围的应用程序 /bin/kill 终止进程。(与之相反,Bourne shell 通过一个内置应用程序实现了它自己的 kill 版本。可以在 Bourne shell 命令提示上输入 /bin/kill 来访问此版本)。fish 尽可能优先考虑简单性而不是灵活性,这显著简化了它的使用方法。下面,我们来安装 fish 并体验它的一些特性。

获取 fishfish 是由 Axel Liljencrantz 创建的一个开放源码项目,采用的许可协议是 GNU General Public License, version 2。到编写本文时,fish 的最新版本是 1..0,此版本于 年 1 月 日发布。如果使用 UNIX 或 UNIX 类系统(比如 Linux® 或 Mac OS X),那么应该很容易在您的系统上从源代码构建 fish。下面是构建步骤,见 清单 1:下载程序的最新源代码压缩包。解压。进入源代码目录。配置构建。运行 make。清单 1. 从源代码构建 fish复制代码代码如下:bash-1) wget tar xzvf fish-1..0.tar.gzbash-3) cd fish-1..0bash-4) ./configure --without-xselchecking if autoconf needs to be run... nochecking if autoheader needs to be run... nochecking for /usr/pkg/include include directory... no...bash-5) makegcc -c -o function.o function.c...bash-6) sudo make install...To use fish as your login shell:* add the line '/usr/bin/fish' to the file '/etc/shells'.* use the command 'chsh -s /usr/bin/fish'.如果使用 UNIX 类系统,configure 可能不需要更多的标志。但是,为了尽可能减少依赖性并让 fish 采用与常用 shell 相同的目录结构,可以分别添加 --without-xsel 和 --prefix=/usr。(如果使用 Mac OS X version .4 Leopard,那么还要添加参数 LDFLAGS=-liconv。如果在 Mac OS X 上省略后一个选项,那么无法编译附带的 fish 实用程序) 。另外,如果使用流行的 UNIX 版本,很可能会找到预先构建好的二进制版本,可以把它直接安装在您的系统上。例如,如果使用 Debian Linux,那么可以用 sudo apt-get install fish 命令直接安装 fish。请访问 fish 项目的主页,了解是否有针对您的系统的二进制版本。

入门在讨论比较复杂的主题之前,我们先看看在 fish 中如何完成一些常见的 shell 任务:要想重定向标准输入和标准输出,应该分别使用操作符 < 和 >。要想重定向标准错误,应该使用 ^ 操作符,见 图 1。使用 ^^ 把标准错误追加到一个文件中。图 1. 用 ^ 操作符重定向标准错误

在命令 3 中,rm 产生的错误消息被重定向到 errors 文件中。命令 4 显示此文件的内容。fish shell 为重定向提供各种支持,比如把描述符组合成一个流和结束描述符。顺便说一句,文本的颜色和下划线不是编辑出来的。shell 会在您输入时在 CLI 中突出显示文本。绿色表示命令名是有效的;无效的命令名用红色表示。下划线表示指定的文件存在。(后面一节详细讨论 shell 的反馈)。使用圆括号(())运行子 shell,见 图 2。圆括号中的文本被解释为一系列命令,shell 会把它们替换为执行结果。图 2. 使用圆括号运行子 shell

通过创建 fish 函数创建别名(即快捷方式)。函数可以包含一个或多个命令,特殊变量 $argv 会自动展开成命令行上传递的参数列表。可以用 functions 命令列出已定义的所有函数。使用 functions --erase name 删除函数,例如 functions --erase ll。还可以立即保存在命令行上编写的任何函数。在编写完代码时,输入 funcsave name,例如 funcsave ll。在此之后,当前运行的所有 shell 和以后的所有 shell 都可以使用此函数。可以使用 funced name 命令以交互方式编辑现有的函数。funced 命令提供语法突出显示、制表符补全和自动缩进;funcsave 和 funced 使用户能够更方便地定制 shell。输入 set variable namevalue 来设置变量。与内置命令 functions 一样,输入 set --erase variable name 就可以删除一个变量。输入美元符号($)和变量名,就可以获取变量中存储的值,见 图 3。图 3. 检查一个变量是否存在

fish 提供 --query 选项来检查是否定义了一个变量。如果已经设置了此变量,set --query 返回状态码 0,这表示没有出现错误;否则,返回 1。语句 6 用 or 操作符连接两个命令:第二个命令(echo)只在第一个命令失败的情况下执行。那么,fish 如何处理 $var、'$var'、"$var" 和 `$var` 呢?它遵守几条简单的规则:如果变量包含空格,那么空格会被保留,变量总是作为单一参数,见 图 4。图 4. fish 按原样保留字符串中嵌入的空格

在Mac OS上使用Fish Shell的基础教程(macfic)

如果最外边的引号是双引号,那么展开所有变量。如果最外边的引号是单引号,那么不展开变量。我们来看看这些规则的实际应用。命令 1 创建四个 文件,最后一个文件的名称包含空格。命令 3 和 4 删除 file 变量指定的文件。命令 6 和 7 删除 twofiles 变量指定的两个文件。仔细看一下命令 6:因为值没有放在引号(单引号或双引号)中,所以不保留空格。因此,命令 7 把此变量展开成两个参数并删除两个文件。命令 9 和 重复命令 6 和 7 中的场景。命令 和 演示空格规则。尽管在命令 中变量没有放在双引号中,但是 fish 在命令 中保留空格。非常好。命令 到 演示 fish 的嵌套引号规则。现在,再看一下命令 、 和 。shell 使用颜色编码显示匹配的引号,以此确保语法正确。再看一下命令 9 和 。后一个命令在文件名上显示下划线,这表示此文件存在。在命令 9 中没有下划线,这提示用户某些地方出错了。fish 的首字母代表 Friendly,对用户友好是它的主要目标。

对于新手非常有帮助的一个特性说到对用户友好,就不能不提到 fish 的制表符补全 特性,这个新颖的特性对于 UNIX 新用户和专家都极其有帮助。为了体验制表符补全,请按下面的示例操作。在每行的末尾按 Tab 键。如果您不确定一个命令名的拼写,可以在输入几个字母之后按 Tab,就会看到可能的完整命令的列表,见 图 5。(在您的系统上显示的命令列表可能与这里显示的不一样。此列表取决于 PATH 环境变量和您的 UNIX 系统的内容) 。图 5. 按 Tab 补全命令名

注意 CLI 中的红色文本。如果 fish 不认识一个命令名,就用红色显示它。按 Tab,就会显示以目前输入的字母开头的所有应用程序名(以及简短的描述)。在空提示行上按 Tab,就会看到 PATH 中的所有应用程序。如果想了解一个命令的可用选项,那么在连字符(-)或双连字符(--)后面按 Tab,见 图 6。图 6. 还可以通过按 Tab 补全一个选项

此时,fish 会显示可用的选项。shell 维护许多常用命令和选项的索引,您很可能能够得到所需的帮助。但是,定制的或更复杂的实用程序可能缺少这种数据。可以阅读 fish 文档,了解关于编写自己的补全特性的更多信息。还可以在输入选项的几个字母之后按 Tab,见 图 7。shell 会显示所有匹配的选项。图 7. 还可以输入选项的一部分

如果您不知道一个命令处理的操作数类型,fish 在许多情况下可以提供帮助,但并不是在所有情况下都可以。例如,如果输入 set(或 vared,即 fish 变量编辑器)和一个空格,然后按 Tab,fish 会显示可用变量的列表。set 的操作数是一个变量。同样,如果输入 type 和一个空格,然后按 Tab,fish 会显示内置函数的列表,这些函数扩展文件系统上可用的实用程序。在一般情况下,fish 中的所有内置函数都有上下文相关的操作数补全。请试一下 cd,见 图 8。图 8. 许多命令是上下文相关的,可以显示适当的参数

cd 函数是一个 fish 函数,它的操作数是一个现有的目录。在输入 cd 之后按 Tab,fish 会显示 CDPATH 中的每个目录包含的所有现有目录。另一个智能化补全与 ssh 相关。输入 ssh 和一个空格,然后按 Tab,就会看到从 Secure Shell 已知主机文件(通常在 ~/.ssh/known_hosts 中)获取的已知主机名列表:、复制代码代码如下:fish-1) sshlogin.example.com (Hostname)host1.example.com (Hostname)fish shell 还会补全文件名和目录名。同样,它会在您输入路径名时突出显示正确的元素。fish 与其他 shell 之间的一个重要差异是,它不提供历史快捷方式,比如 !、!! 和 !$。

使用 fish 作为登录 shell如果您喜欢 fish,希望用它作为登录 shell,那么把 fish 的路径添加到正式 shell 列表(/etc/shells)中,然后运行 chsh:复制代码代码如下:bash-1) type fishfish is /usr/bin/fishbash-2) sudo vi /etc/shellsAdd the line /usr/bin/fish to the file if it's missing, and save the filebash-3) cat /etc/shells/bin/bash/bin/csh/bin/ksh/bin/sh/bin/tcsh/bin/zsh/usr/bin/fishbash-4) chsh -s /usr/bin/fishChanging shell for strikePassword: ********bash-5) login strikePassword: ********Last login: Wed Oct 8 :: on ttysWelcome to fish, the friendly interactive shellType help for instructions on how to use fishfish-1) echo $SHELL/usr/bin/fish

结束语fish 中还有许多有用的特性值得研究。“fish 这条鱼非常有营养。”可以调整语法突出显示采用的颜色。可以通过编辑 ~/.config/fish/config.fish 定制启动过程。可以使用通用变量 和 fishd 跨 shell 实例共享变量。这种 shell 还有出色的历史搜索特性、交互式变量编辑器和交互式命令行编辑器。最好的一点是,fish 本身提供大量文档。如果需要帮助,只需在命令提示上输入 help。医生的意见是对的:吃 “鱼” 对您有益。

苹果OS X ..3首个公测版Beta1发布:参与测试版的Mac用户可更新升级 两天前苹果向开发者们推送了OSX系统的最新测试版,ElCapitan..3Beta1。现在,首个公测版本正式到来,用户可以通过测试版项目的相关页面,又或是MacAp

Mac移动硬盘怎么格式化?Mac安装SSD后不读取磁盘的解决办法 解决初次安装固态硬盘后,开机提示磁盘无法读取问题1、开机出现这个提示说明SSD连接成功了,此时点击初始化...开启磁盘工具。2、在磁盘工具中找到

Mac怎么将Time Machine备份的系统恢复到新的硬盘? 用TimeMachine实现OSX系统的完整迁徙,从旧硬盘到新硬盘。1、首先确保你的系统已经被完整备份到TimeMachine所指定的硬盘中,可以是移动硬盘或网络硬盘等

标签: macfic

本文链接地址:https://www.jiuchutong.com/biancheng/353022.html 转载请保留说明!

上一篇:Mac怎么安装并配置Homebrew?(mac怎么安装ios)

下一篇:苹果OS X 10.11.3首个公测版Beta1发布:参与测试版的Mac用户可更新升级(iphone os)

  • 长租公寓 税费
  • 上月社保未扣款怎么回事
  • 小规模做账流程详细
  • 营业外收入怎么算增值税
  • 财务费用余额方向怎么填
  • 管家婆软件记账流程
  • 境内公司没有收购的股票
  • 对方公司已经注销,欠钱收不回
  • 小规模开票给一般纳税人避税合法吗
  • 预缴税款是否可以强制执行
  • 企业房产税怎么申报缴纳
  • 固定资产正常报废如何处理
  • 专用发票扣税
  • 进口产品增值税的组成计税价格
  • 季报每个月需要反写吗
  • 个人劳务费发票可以委托其他人去开吗
  • 有了营业执照就可以买社保了吗
  • 代开劳务票税率多少?
  • 建筑行业增值税是多少
  • 专票入账暂不抵扣如何申报
  • 开票金额与实际金额差5元
  • 进项发票里的印花税如何做账?
  • 购进免税农产品怎么计算进项税额
  • 评标费由谁支付
  • 人人有份类似的词语
  • 系统安全保障体系
  • dgservice.exe是什么
  • PHP:bzdecompress()的用法_Bzip2函数
  • 机器学习,看这一篇就够了:回归算法,特征工程,分类算法,聚类算法,神经网络,深度学习入门
  • Windows11报sill idealTree buildDeps安装慢或者卡顿解决方案
  • 阿圭罗来自哪里
  • 自然人税收管理系统扣缴客户端app
  • JS之location对象详解
  • 职工食堂费用计入什么科目
  • 专用发票费率
  • 注册资本增加了怎么做账
  • 物业公司收的水费是计入其他应付款还是其他业务收入
  • 微擎框架可以干什么
  • phpcms 标签
  • 财政拨款结余的明细科目有哪些
  • 其他收益在报表列示的项目是
  • 汇兑损益的种类
  • 社保可以抵扣吗
  • 2021年财政部令68号
  • 删除mysql数据库用户
  • 追索权行使的形式要件是什么
  • 小规模纳税人退税账务处理
  • 应收账款属于会计科目吗
  • 全额事业单位和差额事业单位退休工资有什么区别
  • 工程安装公司注册条件
  • 材料折扣会计分录
  • 购入土地使用权用于建造厂房分录
  • 小企业会计准则没有以前年度损益调整科目
  • 只有进项发票没有销售发票这种怎么做账
  • 住院伙食补助费每天50
  • 出口退税综合服务网
  • 电脑开票怎么操作流程
  • 通行费发票电子化 机场路
  • 会计什么情况下不用继续教育
  • MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误
  • jdbc连接MySQL实验总结
  • sql批量导出数据
  • win10开始按钮点不动
  • 要建立linux分区可以有哪几种方法
  • 升级win10系统后鼠标键盘无法用什么原因
  • mac我的所有文件 删除
  • wind10手机版
  • 附件中的应用程序
  • 什么是四个菜
  • Win10预览版拆弹
  • Win10 Build 10586.107正式推送 主要修复bug
  • 一系列优秀的Android开发资料
  • jqueryui easyui
  • unity learn premium
  • unity vtext
  • android圆环进度条渐变
  • 广东电子税务局手机版
  • 广东省地税局网上办税
  • 水利基金按什么计提
  • 工商变更与税务变更为什么不能同步
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设