快速业务通道

对话 UNIX: 使用 fish全攻略

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-11
压缩包.
2.解压.
3.进入源代码目录.
4.配置构建.
5.运行 make.

清单 1. 从源代码构建 fish

bash-1) wget http://www.fishshell.org/files/1.23.0/fish-1.23.0.tar.gz
bash-2) tar xzvf fish-1.23.0.tar.gz
bash-3) cd fish-1.23.0
bash-4) ./configure --without-xsel
checking if autoconf needs to be run... no
checking if autoheader needs to be run... no
checking for /usr/pkg/include include directory... no
...
bash-5) make
gcc -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 10.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

使用圆括号运行子 shell

通过创建 fish 函数创建别名(即快捷方式).
函数可以包含一个或多个命令,特殊变量 $argv 会自动展开成命令行上传递的参数列表.

可以用 functions 命令列出已定义的所有函数.使用 functions --erase name 删除函数,例如 functions --erase ll.

还可以立即保存在命令行上编写的任何函数.在编写完代码时,输入 funcsave name,例如 funcsave ll.在此之后,当前运行的所有 shell 和以后的所有 shell 都可以使用此函数.可以使用 funced name 命令以交互方式编辑现有的函数.funced 命令提供语法突出显示、制表符补全和自动缩进;funcsave 和 funced 使用户能够更方便地定制 shell.

输入 set variable name value 来设置变量.与内置命令 functions 一样,输入 set --erase variable name 就可以删除一个变量.输入美元符号($)和变量名,就可以获取变量中存储的值,见 图 3.

图 3. 检查一个变量是否存在

检查一个变量是否存在

fish 提供 --query 选项来检查是否定义了一个变量.如果已经设置了此变量,set --query 返回状态码 0,这表示没有出现错误;否则,返回 1.语句 6 用 or 操作符连接两个命令:第二个命令(echo)只在第一个命令失败的情况下执行.

那么,fish 如何处理 $var、''$var''、"$va

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号