第2章 基本的bash shell命令
2.1 shell提示符
Ubuntu Linux系统:[root@hostname]: ~ #
CentOS Linux系统:[root@hostname ~]#
//在上面两个例子中,提示符中显示了
·当前用户ID名 root
·当前主机名 hostname
·当前所在目录 ~ (~还指代用户家目录)
·#代表管理员用户权限;$代表普通用户权限
2.2 bash手册
man [command] //用来访问存储在Linux系统上的对应命令的手册页面
另外,大多数命令都可以接受 -help 或 --help 选项。
例如你可以输入 hostname -help 来查看帮助
窍门1 如果不记得命令名怎么办?还可以使用关键字搜索手册页。语法是:man -k [关键字]。例如,要查找与终端相关的命令,可以输入 man -k terminal
窍门2 刚开始可能会觉得手册页并不太有用,但如果养成了阅读手册的习惯(尤其是DESCRIPTION部分的前两段),最终你会学到各种技术行话,手册页也会变得越来越有用。
2.3 浏览文件系统
Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。虚拟目录结构只包含一个称为根(root)目录的基础目录。
窍门 你会发现Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在Linux中,反斜线(\)用来标识转义字符。
在Linux PC上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录 的核心,其他目录都是从那里开始构建的。Linux会在根驱动器上创建一些特 别的目录,我们称之为挂载点(mount point)。挂载点是虚拟目录中用于分配 额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然 而实际上它们却存储在另外一个驱动器中。
2.3.1 遍历目录
绝对路径:绝对路径总是以正斜线(/)起始,并列出了目录的确切位置。
相对路径:相对路径是指一个基于当前目录位置的目标文件路径
cd [目录名称] //将shell会话切换到指定目录
特殊目录名称:
· 根号(/),表示Linux文件系统的根目录
· 波浪号(~),表示用户主目录,一般是 /home/XX
· 单点符(.),表示当前目录
· 双点符(..),表示当前目录的上一级(父)目录
· 单杠号(-),表示前一个工作目录
pwd //显示出shell会话的当前目录,这个目录被称为当前工作目录
2.3.2 基本列表功能
ls [选项] [目录名称] //列出指定目录下的文件和目录,默认列出当前目录
常用选项:
-a 列出目录下的所有文件,包括隐藏文件(以.开头的文件)
-l 列出文件的详细信息
-h 以人类易读的方式显示
-d 将目录像文件一样显示,而不是显示其下的文件
-i 输出文件inode节点的索引信息
-F 区分文件和目录
-R 列出所有子目录下的文件
-S 按文件大小排序,默认倒叙
其中 -l 选项列出了目录中每个文件的更多相关信息
[root@localhost ~]# ls -l /home
total 20
drwxr-xr-x. 3 root root 101 May 20 17:05 test
-rw-r--r--. 1 root root 16 May 20 17:11 docx.txt
输出的第一行显示了在目录中包含的总块数。此后每行都包含了下述信息:
- 文件类型;
- 文件权限;
- 文件的硬链接总数;
- 文件属主的用户名;
- 文件属组的组名;
- 文件的大小,默认以字节为单位;
- 文件的上次修改时间;
- 文件名或目录名。
2.3.3 过滤输出列表
标准通配符:
- 问号(?),代表一个字符
- 星号(*),代表零个或多个字符
- 中括号([ ]),代表一个字符位置并给出多个可能的选择
[root@localhost home]# ls -l f[a-i]ll
-rw-r--r--. 1 root root 0 10月 31 15:29 fall
-rw-r--r--. 1 root root 0 10月 31 15:29 fell
-rw-r--r--. 1 root root 0 10月 31 15:29 fill
- 感叹号(!),将不需要的内容排除在外
[root@localhost home]# ls -l f[!a]ll
-rw-r--r--. 1 root root 0 10月 31 15:29 fell
-rw-r--r--. 1 root root 0 10月 31 15:29 fill
-rw-r--r--. 1 root root 0 10月 31 15:29 full
2.4 处理文件
2.4.1 创建文件
touch [选项] 文件名1 ... //创建一个或多个文件,默认当前路径下创建
常用选项:
-a 只更改访问时间
-m 只更改修改时间
2.4.2 复制文件
cp [选项] 源文件 目标文件 //用于文件或目录的复制
常用选项:
-a 保留链接、文件属性,复制目录时可递归地复制目录
-f 如果目标文件已存在,则不作提示将其覆盖
-i 如果目标文件已存在,则对用户进行提示
-r 将源目录下的文件和子目录一起复制到目标目录中
-p 保持文件名及文件属性不变
2.4.3 移动和重命名文件
mv [选项] 源文件 目标文件 //用于移动或重命名文件和目录
常用选项:
-b 为已存在的目标文件创建备份
-f 如果目标文件已存在,则不作提示将其覆盖
-i 如果目标文件已存在,则对用户进行提示
-n 不覆盖已存在文件
2.4.4 删除文件
rm [选项] 目标文件 //用于删除目录或文件
常用选项:
-r 删除目录并将目录下的所有文件及其子目录一起删除
-f 强制删除文件或目录,不作提示
-i 删除前提示用户
2.5 处理目录
2.5.1 创建目录
mkdir [选项] 目录名1 ... //用于创建一个或多个新的目录
常用选项:
-m 在创建时设定权限模式
-p 可同时创建目录与它的子目录,如果目录存在也不会被覆盖
-v 每次创建新目录都显示信息
2.5.2 删除目录
rmdir [选项] 目录名 //该命令删除对象必须是空目录,且必须在上级目录进行删除操作
常用选项:
-p 删除指定的目录树
-v 删除目录过程中输出诊断信息
2.6 查看文件内容
cat [选项] 文件名 //不适用于查看内容过多的文件
常用选项:
-n 给所有的行加上行号
-b 只给有文本的行加上行号
more/less 文件名 //分页显示文件内容,适用于查看内容多的文件
head/tail [选项] 文件名 //显示文件头部/尾部信息,默认查看10行
常用选项:
-n 选项后接数字,表示要查看的行数
2.7 小结
本章讨论了Linux虚拟目录的基础知识,然后展示了Linux如何引用存储设备。接着又介绍了跟文件相关的命令。
本章节涉及命令:cd、pwd、ls、touch、cp、mv、rm、mkdir、rmdir、cat、more、less、head、tail