FreeBSD 中文手册
FreeBSD 中文社区
  • FreeBSD 中文手册
  • 编辑日志
  • 译者说明
  • FreeBSD 中文手册
  • 目录
  • 概述
  • 前言
    • 致读者
    • 第四版
    • 第三版
    • 第二版(2004)
    • 第一版(2001)
    • 本书的组织结构
    • 本书中使用的一些约定
    • 致谢
  • 第一部分:快速开始
  • 第1章 简介
    • 1.1.概述
    • 1.2.欢迎来到 FreeBSD!
    • 1.3.关于 FreeBSD 项目
  • 第2章 安装 FreeBSD
    • 2.1.概述
    • 2.2.最低硬件要求
    • 2.3.安装前的准备工作
    • 2.4.开始安装
    • 2.5.使用 bsdinstall
    • 2.6.分配磁盘空间
    • 2.7.获取安装文件
    • 2.8.账户、时区、服务和安全
    • 2.9.故障排除
    • 2.10.使用 Live CD
  • 第3章 FreeBSD 基础
    • 3.1.概述
    • 3.2.虚拟控制台和终端
    • 3.3.用户和基本账户管理
    • 3.4.权限
    • 3.5.目录结构
    • 3.6.磁盘结构
    • 3.7.文件系统的挂载与卸载
    • 3.8.进程和守护进程
    • 3.9.Shell
    • 3.10.文本编辑器
    • 3.11.设备和设备节点
    • 3.12.手册页
  • 第4章 安装应用程序:软件包和 Ports
    • 4.1.概述
    • 4.2.软件安装的概述
    • 4.3.寻找所需的应用程序
    • 4.4.使用 pkg 管理二进制包
    • 4.5.使用 Ports
    • 4.6.使用 Poudriere 构建软件包
    • 4.7.安装后的注意事项
    • 4.8.如何处理损坏的 port
  • 第5章 X Window 系统
    • 5.1.概述
    • 5.2.安装 Xorg
    • 5.3.显卡驱动
    • 5.4.Xorg 配置
    • 5.5.在 X11 中使用字体
  • 第6章 FreeBSD 中的 Wayland
    • 6.1.简介
    • 6.2.Wayland 概述
    • 6.3.Wayfire 混成器
    • 6.4.Hikari 混成器
    • 6.5.Sway 混成器
    • 6.6.使用 Xwayland
    • 6.7.使用 VNC 进行远程连接
    • 6.8.Wayland 登录管理器
    • 6.9.实用工具
  • 第7章 网络
    • 7.1.概述
    • 7.2.设置网络
    • 7.3.有线网络
    • 7.4.无线网络
    • 7.5.主机名
    • 7.6.DNS
    • 7.7.故障排除
  • 第二部分:常见任务
  • 第8章 桌面环境
    • 8.1.概述
    • 8.2.桌面环境
    • 8.3.浏览器
    • 8.4.开发工具
    • 8.5.桌面办公应用
    • 8.6.文档阅读器
    • 8.7.财务
  • 第9章 多媒体
    • 9.1.概述
    • 9.2.设置声卡
    • 9.3.音频播放器
    • 9.4.视频播放器
    • 9.5.视频会议
    • 9.6.图像扫描仪
  • 第10章 配置 FreeBSD 内核
    • 10.1.概述
    • 10.2.为什么要构建定制内核
    • 10.3.浏览系统硬件
    • 10.4.配置文件
    • 10.5.构建并安装定制内核
    • 10.6.如果发生了错误
  • 第11章 打印
    • 11.1.快速入门
    • 11.2.连接打印机
    • 11.3.常见的页面描述语言(PDL)
    • 11.4.直接打印
    • 11.5.LPD(行式打印机程序)
    • 11.6.其他打印系统
  • 第12章 Linux 二进制兼容层
    • 12.1.概述
    • 12.2.配置 Linux 二进制兼容层
    • 12.3.Linux 用户空间
    • 12.4.高级主题
  • 第13章 WINE
    • 13.1.概述
    • 13.2.WINE 概述和概念
    • 13.3.在 FreeBSD 上安装 WINE
    • 13.4.在 FreeBSD 上运行第一个 WINE 程序
    • 13.5.配置 WINE 安装程序
    • 13.6.WINE 图形化用户管理界面
    • 13.7.多用户 FreeBSD 与 WINE
    • 13.8.FreeBSD 上的 WINE 常见问题
  • 第三部分:系统管理
  • 第14章 配置与优化
    • 14.1.概述
    • 14.2.配置文件
    • 14.3.管理 FreeBSD 中的服务
    • 14.4.Cron 和 Periodic
    • 14.5.配置系统日志
    • 14.6.电源和资源管理
    • 14.7.添加交换空间
  • 第15章 FreeBSD 的引导过程
    • 15.1.概述
    • 15.2.FreeBSD 的引导过程
    • 15.3.Device Hints
    • 15.4.关机流程
  • 第16章 安全
    • 16.1.概述
    • 16.2.简介
    • 16.3.账户安全
    • 16.4.入侵检测系统(IDS)
    • 16.5.安全等级
    • 16.6.文件标志位
    • 16.7.OpenSSH
    • 16.8.OpenSSL
    • 16.9.Kerberos
    • 16.10.TCP 封装器(TCP Wrapper)
    • 16.11.访问控制列表(ACL)
    • 16.12.Capsicum
    • 16.13.进程记账
    • 16.14.资源限制
    • 16.15.监控第三方安全问题
    • 16.16.FreeBSD 安全公告
  • 第17章 jail 与容器
    • 17.1.概述
    • 17.2.jail 的类型
    • 17.3.主机配置
    • 17.4.传统 jail(厚 jail)
    • 17.5.瘦 jail
    • 17.6.管理 jail
    • 17.7.更新 jail
    • 17.8.jail 资源限制
    • 17.9.jail 管理器与容器
  • 第18章 强制访问控制
    • 18.1.概述
    • 18.2.关键术语
    • 18.3.了解 MAC 标签
    • 18.4.规划安全配置
    • 18.5.可用的 MAC 策略
    • 18.6.用户锁定
    • 18.7.MAC Jail 中的 Nagios
    • 18.8.MAC 框架的故障排除
  • 第19章 安全事件审计
    • 19.1.概述
    • 19.2.关键术语
    • 19.3.审计配置
    • 19.4.使用审计跟踪
  • 第20章 存储
    • 20.1.概述
    • 20.2.添加磁盘
    • 20.3.调整和增加磁盘大小
    • 20.4.USB 存储设备
    • 20.5.创建和使用 CD
    • 20.6.创建和使用 DVD
    • 20.7.创建和使用软盘
    • 20.8.备份的基础知识
    • 20.9.内存盘
    • 20.10.文件系统快照
    • 20.11.磁盘配额
    • 20.12.加密磁盘分区
    • 20.13.加密交换分区
    • 20.14.高可用性存储(HAST)
  • 第21章 GEOM: 模块化磁盘转换框架
    • 21.1.概述
    • 21.2.RAID0——条带
    • 21.3.RAID1——镜像
    • 21.4.RAID3——带有专用奇偶校验的字节级条带
    • 21.5.软件 RAID 设备
    • 21.6.GEOM Gate 网络设备
    • 21.7.为磁盘设备添加卷标
    • 21.8.通过 GEOM 实现 UFS 日志
  • 第22章 Z 文件系统(ZFS)
    • 22.1.是什么使 ZFS 与众不同
    • 22.2.快速入门指南
    • 22.3.zpool 管理
    • 22.4.zfs 管理
    • 22.5.委托管理
    • 22.6.高级主题
    • 22.7.更多资源
    • 22.8.ZFS 特性和术语
  • 第23章 其他文件系统
    • 23.1.概述
    • 23.2.Linux® 文件系统
    • 23.3.Windows® 文件系统
    • 23.4.MacOS® 文件系统
  • 第24章 虚拟化
    • 24.1.概述
    • 24.2.使用 macOS® 上的 Parallels Desktop 安装 FreeBSD
    • 24.3.使用 macOS® 上的 VMware Fusion 安装 FreeBSD
    • 24.4.使用 VirtualBox™ 安装 FreeBSD
    • 24.5.在 FreeBSD 上安装 VirtualBox™
    • 24.6.使用 FreeBSD 上的 QEMU 虚拟化
    • 24.7.使用 FreeBSD 上的 bhyve 虚拟机
    • 24.8.基于 FreeBSD 的 Xen™ 虚拟机
  • 第25章 本地化——i18n/L10n 的使用和设置
    • 25.1.概述
    • 25.2.使用本地化
    • 25.3.寻找 i18n 应用程序
    • 25.4.特定语言的区域配置
  • 第26章 FreeBSD 更新与升级
    • 26.1.概述
    • 26.2.更新 FreeBSD
    • 26.3.更新 Bootcode
    • 26.4.更新文档
    • 26.5.追踪开发分支
    • 26.6.从源代码更新 FreeBSD
    • 26.7.多台机器的追踪
    • 26.8.在非 FreeBSD 主机上进行构建
  • 第27章 DTrace
    • 27.1.概述
    • 27.2.实现上的差异
    • 27.3.开启 DTrace 支持
    • 27.4.启用内核外部模块 DTrace
    • 27.5.使用 DTrace
  • 第28章 USB 设备模式/USB OTG
    • 28.1.概述
    • 28.2.USB 虚拟串行端口
    • 28.3.USB 设备模式网络接口
    • 28.4.USB 虚拟存储设备
  • 第四部分:网络通讯
  • 第29章 串行通信
    • 29.1.概述
    • 29.2.串行术语和硬件
    • 29.3.终端
    • 29.4.拨入服务
    • 29.5.拨出服务
    • 29.6.设置串行控制台
  • 第30章 PPP
    • 30.1.概述
    • 30.2.配置 PPP
    • 30.3.PPP 连接的故障排除
    • 30.4.使用以太网 PPP(PPPoE)
    • 30.5.使用 ATM 上的 PPP (PPPoA)
  • 第31章 电子邮件
    • 31.1.概述
    • 31.2.邮件组件
    • 31.3.DragonFly 邮件代理(DMA)
    • 31.4.Sendmail
    • 31.5.修改邮件传输代理
    • 31.6.邮件用户代理
    • 31.7.高级主题
  • 第32章 网络服务器
    • 32.1.概述
    • 32.2.inetd 超级服务器
    • 32.3.网络文件系统(NFS)
    • 32.4.网络信息系统(NIS)
    • 32.5.轻型目录访问协议(LDAP)
    • 32.6.动态主机设置协议(DHCP)
    • 32.7.域名系统(DNS)
    • 32.8.零配置网络(mDNS/DNS-SD)
    • 32.9.Apache HTTP 服务器
    • 32.10.文件传输协议(FTP)
    • 32.11.用于 Microsoft® Windows® 客户端的文件和打印服务(Samba)
    • 32.12.用 NTP 进行时钟同步
    • 32.13.iSCSI target 和 initiator 的配置
  • 第33章 防火墙
    • 33.1.概述
    • 33.2.防火墙的概念
    • 33.3.PF
    • 33.4.IPFW
    • 33.5.IPFILTER(IPF)
    • 33.6.Blacklistd
  • 第34章 高级网络
    • 34.1.概述
    • 34.2.网关和路由
    • 34.3.虚拟主机
    • 34.4.无线高级身份验证
    • 34.5.无线自组织(Ad-hoc)模式
    • 34.6.USB 网络共享
    • 34.7.蓝牙
    • 34.8.桥接
    • 34.9.链路聚合与故障转移
    • 34.10.使用 PXE 进行无盘操作
    • 34.11.共用地址冗余协议(CARP)
    • 34.12.VLAN
  • 第五部分:附录
  • 附录 A.获取 FreeBSD
    • A.1.镜像站
    • A.2.使用 Git
    • A.3.使用 Subversion
    • A.4.光盘
  • 附录 B.书目
    • B.1.FreeBSD 相关书籍
    • B.2.安全性参考文献
    • B.3.UNIX 历史
    • B.4.期刊与杂志
  • 附录 C.网络资源
    • C.1.网站
    • C.2.邮件列表
    • C.3.Usenet 新闻组
  • 附录 D.OpenPGP 密钥
    • D.1.官方成员
  • 术语表
  • 后记
由 GitBook 提供支持

FreeBSD 中文社区

在本页
  • 3.9.1. 更改 Shell
  • 3.9.2. 高级 Shell 技巧

这有帮助吗?

在GitHub上编辑
导出为 PDF
  1. 第3章 FreeBSD 基础

3.9.Shell

shell 提供了用于与操作系统交互的命令行界面。Shell 从输入通道接收命令并执行它们。许多 shell 提供内建函数,用于协助日常任务,例如文件管理、文件通配(globbing)、命令行编辑、命令宏以及环境变量。FreeBSD 提供了多个 shell,包括 Bourne shell(sh(1))和扩展的 C shell(tcsh(1))。其它 shell 可通过 FreeBSD Ports 获得,例如 zsh 和 bash。

使用哪一个 shell 实际上是个人喜好问题。C 语言程序员可能更倾向于使用类似 C 语言的 shell,比如 tcsh(1)。Linux® 用户可能更喜欢 bash。每种 shell 都具有其独特属性,这些属性可能符合,也可能不符合用户所偏好的工作环境,因此才会有选择 shell 的自由。

一个常见的 shell 特性是文件名补全。用户输入命令或文件名前几个字母并按下 Tab 后,shell 会补全剩余部分。假设有两个文件分别叫做 foobar 和 football,用户要删除 foobar,可能会键入 rm foo 并按下 Tab 来补全文件名。

但 shell 只显示 rm foo,它无法补全文件名,因为 foobar 和 football 都以 foo 开头。如果匹配到多个名称,一些 shell 会发出哔声或显示所有可能选项。此时用户需要输入更多字符来标识所需文件名。输入一个 t 然后再次按下 Tab,shell 就能确定所需的文件名并补全剩余部分。

shell 的另一个功能是使用环境变量。环境变量是存储在 shell 环境中的变量/键对。任何由 shell 启动的程序都可以读取这个环境,因此其中包含了大量程序配置。常见环境变量 提供了常见环境变量及其含义的列表。请注意,环境变量名总是大写的。

常见环境变量表:

变量
介绍

USER

当前登录用户的用户名。

PATH

用冒号分隔的目录列表,用于查找可执行文件。

DISPLAY

要连接的 Xorg 显示器的网络名称(如果可用)。

SHELL

当前使用的 shell。

TERM

用户终端类型的名称。用于判断终端的功能。

TERMCAP

包含终端转义码的数据库项,用于执行各种终端功能。

OSTYPE

操作系统类型。

MACHTYPE

系统的 CPU 架构。

EDITOR

用户首选的文本编辑器。

PAGER

用户首选的分页查看工具。

MANPATH

用冒号分隔的目录列表,用于查找手册页。

不同的 shell 设置环境变量的方式不同。在 tcsh(1) 和 csh(1) 中,使用 setenv 来设置环境变量。在 sh(1) 和 bash 中,使用 export 设置当前环境变量。以下是在 tcsh(1) 中设置默认 EDITOR 为 /usr/local/bin/emacs 的示例:

% setenv EDITOR /usr/local/bin/emacs

在 bash 中对应的命令是:

% export EDITOR="/usr/local/bin/emacs"

要展开环境变量以查看其当前值,在命令行中在变量名前加上 $ 符号。例如,echo $TERM 会显示当前的 $TERM 设置。

Shell 会将一些特殊字符(称为元字符)视为数据的特殊表示方式。最常见的元字符是 *,它代表任意数量的字符。元字符可用于执行文件名通配。例如,echo * 等同于 ls,因为 shell 会将所有匹配 * 的文件传递给 echo,并在命令行上列出它们。

为了防止 shell 解释某个特殊字符,可以用反斜杠(\)对其进行转义。例如,echo $TERM 会打印终端设置,而 echo \$TERM 则会原样打印字符串 $TERM。

3.9.1. 更改 Shell

最简单的,永久更改默认 shell 方法是使用 chsh。运行此命令会打开由 EDITOR 环境变量配置的编辑器,默认情况下为 vi(1)。将 Shell: 行更改为新 shell 的完整路径。

也可以使用 chsh -s,该命令会在不打开编辑器的情况下设置指定的 shell。例如,将 shell 更改为 bash:

% chsh -s /usr/local/bin/bash

在提示符下输入你的密码并按下 Return 即可更改你的 shell。注销并重新登录后即可开始使用新 shell。

# echo /usr/local/bin/bash >> /etc/shells

然后重新运行 chsh(1)。

3.9.2. 高级 Shell 技巧

UNIX® shell 不仅是个命令解释器,它还是款强大的工具,允许用户执行命令、重定向其输出、重定向其输入,并将多个命令组合在一起以优化最终输出。将这些功能与内建命令结合使用,可以为用户提供一个极具效率的环境。

Shell 重定向是将命令的输出或输入发送到另一个命令或文件中的操作。例如,将 ls(1) 命令的输出捕获到一个文件中,可以这样重定向输出:

% ls > directory_listing.txt

此时目录内容会被列出并保存到 directory_listing.txt 中。有些命令可以读取输入,比如 sort(1)。要对该列表进行排序,可以这样重定向输入:

% sort < directory_listing.txt

输入会被排序并显示在屏幕上。要将该输入重定向到另一个文件,可以将 sort(1) 的输出重定向出去,操作如下:

% sort < directory_listing.txt > sorted.txt

在上述所有示例中,命令通过文件描述符进行重定向。每个 UNIX® 系统都有文件描述符,包括标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。每种描述符都有其用途,例如输入可以是键盘或鼠标,用于提供输入;输出可以是屏幕或打印机中的纸张;错误则用于诊断或错误信息。这三者都被视为基于 I/O 的文件描述符,有时也被称为流(streams)。

通过使用这些描述符,shell 允许将输出和输入在多个命令之间传递,并重定向到文件或从文件中读取。另一种重定向方法是管道操作符。

UNIX® 的管道操作符 | 允许将一个命令的输出直接传递或重定向到另一个程序。简单来说,管道允许一个命令的标准输出被作为标准输入传递给另一个命令,例如:

% cat directory_listing.txt | sort | less

在此示例中,directory_listing.txt 的内容将被排序,然后输出传递给 less(1)。这使用户可以按自己的节奏浏览输出内容,防止其在屏幕上滚动消失。

上一页3.8.进程和守护进程下一页3.10.文本编辑器

最后更新于1个月前

这有帮助吗?