Appearance
基本bash shell命令
大多数的Linux默认的都是GUN bash shell, 在ubuntu6.1之后大部分是dash
启动shell
GUN bash shell能提供对Linux的交互式访问.它是作为普通程序运行的, 通常在用户登录的时候启动.登录时启动依赖于用户的账户设置
/etc/passwd
包含了所有系统用户账户列表以及每个用户的基本信息
jiao:x:1000:1000:jiao,,,:/home/jiao:/bin/bash
有七个字段, 每个字段用冒号分割, 系统利用数据赋予用户特定的属性, 最后代表使用的shell程序
最后一个是bash, 在启动之后使用/bin/bash
作为默认的shell程序, 启动之后bash shell自动启动, 是否出现命令界面(CLI), 取决于登录的方式是不是图形界面
shell提示符
默认的提示符是$, 表明正在等待用户输入, 出现的时候可以输入新的命令
jiao@jiao-virtual-machine:~$
除了用户名还有用户的系统名
bash中还有bash手册大有帮助
bash手册
查找shell命令以及其他GUN工具信息的在线手册, 可以帮你查找参数
man命令: 访问手册页面, 在想要查找的工具之前输入man可以找到对应的手册条目
- 手册把不同的信息分为不同的节
节 | 描述 |
---|---|
Name | 显示命令名和一段简短的描述 |
Synopsis | 命令的语法 |
Confi guration | 命令配置信息 |
Description | 命令的一般性描述 |
Options | 命令选项描述 |
Return Value | 命令的返回值 |
Errors | 命令的错误消息 |
Environment | 描述所使用的环境变量 |
Files | 命令用到的文件 |
Versions | 命令的版本信息 |
Conforming To | 命名所遵从的标准 |
Notes | 其他有帮助的资料 |
Bugs | 提供提交bug的途径 |
Example | 展示命令的用法 |
Authors | 命令开发人员的信息 |
Copyright | 命令源代码的版权状况 |
See Also | 与该命令类型的其他命令 |
如果不记得命令名怎么办?可以使用关键字搜索手册页。语法是:man -k 关键字。例如,要查找与终端相关的命令,可以输入man -k terminal
还为每一个区域都分配了一个数字
- 可执行的shell命令
- 系统调用
- 库调用
- 特殊文件
- 文件格式与约定
- 游戏
- 概览、约定及杂项
- 超级用户和管理员命令
- 内核例程
一个命令有时候会在多个区域, 要查看不同区域的
bash
$ man section# topic
例如hostname同时在1和7
$ man 1 hostname
$ man 7 hostname
大多数命令都接受--help或-help
可以使用help help查看, 有中文
info
- info [选项] 参数
- 参数:指定需要获得帮助的主题,可以是指令、函数以及配置文件。
-d:添加包含info格式帮助文档的目录; -f:指定要读取的info格式的帮助文档; -n:指定首先访问的info帮助文件的节点; -o:输出被选择的节点内容到指定文件。
快捷键
?键:它就会显示info的常用快捷键。 N键:显示(相对于本节点的)下一节点的文档内容。 P键:显示(相对于本节点的)前一节点的文档内容。 U键:进入当前命令所在的主题。 M键:敲M键后输入命令的名称就可以查看该命令的帮助文档了。 G键:敲G键后输入主题名称,进入该主题。 L键:回到上一个访问的页面。 SPACE键:向前滚动一页。 BACKUP或DEL键:向后滚动一页。 Q:退出info。
常用指令
? 显示帮助窗口
在帮助窗口中: Ctrl-x 0 关闭帮助窗口 Ctrl-x Ctrl-c 关闭整个 Info
q 退出 info n 打开与本 Node 关联的下一个 Node p 打开与本 Node 关联的前一个 Node u 打开与本 Node 关联的上一个 Node l 回到上一次访问的 Node m或g 选择一个菜单项(Node 的名字) 输入指定菜单的名字后按回车,打开指定菜单项关联的 Node 空格键 下一页(PageDown 也可以,下一页从当前页的最后两行开始算起) 下一个 Node (若当前页在 Node 文档的末尾) Del 键 上一页(PageUp 也可以,上一页从当前页的开始两行开始算起) 上一个 Node (若当前页 Node 文档的开始)
b 或 t 或 Home 文档的开始(b 是 begining 的意思) e 或 End 文档的末尾(b 是 ending 的意思) Ctrl-l 刷新当前页,若当前文档显示情况有问题时 Ctrl-g 取消所键入的指令
浏览文件系统
Linux文件系统
不使用驱动盘符, windows会为每一个物理磁盘驱动器分配一个盘符
Linux把文件存储在单个文件目录之中, 这个目录叫虚拟目录
虚拟目录把所有存储设备的文件目录路径纳入单个文件目录之中
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出,这点跟Windows类似
在Linux上安装的第一块硬盘为根驱动器, 包含了虚拟内存的核心, 其他目录都是从那里开始挂载的
Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中
通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中
- 在Linux之中通用的目录名用于一些常见的功能
目录 | 用途 |
---|---|
/ | 虚拟目录的根目录。通常不会在这里存储文件 |
/bin | 二进制目录,存放许多用户级的GNU工具 |
/boot | 启动目录,存放启动文件 |
/dev | 设备目录,Linux在这里创建设备节点 |
/etc | 系统配置文件目录 |
/home | 主目录,Linux在这里创建用户目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/mnt | 挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/proc | 进程目录,存放现有硬件及当前进程的相关信息 |
/root | root用户的主目录 |
/sbin | 系统二进制目录,存放许多GNU管理员级工具 |
/run | 运行目录,存放系统运作时的运行时数据 |
/srv | 服务目录,存放本地服务的相关文件 |
/sys | 系统目录,存放系统硬件信息的相关文件 |
/tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
/usr | 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里 |
/var | 可变目录,用以存放经常变化的文件,比如日志文件 |
常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。很多Linux发行版都遵循了FHS。这样一来,你就能够在任何兼容FHS的Linux系统中轻而易举地查找文件
遍历目录
切换目录cd destination
没有参数的时候返回用户的主目录
绝对文件目录
从根目录开始
提示符中的~表示位于自己的主目录之中
切换出主目录以后会显示绝对路径
检查目录pwd
相对文件路径
直接以目录名开头
- 单点符(.),表示当前目录;
- 双点符(..),表示当前目录的父目录
文件和目录列表
基本列表功能
ls
按列以及字母顺序进行排列
ls -F
在目录的后面加上斜杠, 用于区分目录, 可用于没有颜色区分的仿真器
ls -a
显示隐藏文件, 通常以" . "开头
ls -R
递归显示子目录中的文件
ls -d
只列出目录本身的信息(在查找的时候使用名字显示文件内容)
ls -i
查看文件的编号, 每一个文件都有唯一的编号
显示长列表
ls -l
显示文件的附加信息drwxrwxr-x 2 jiao jiao 4096 3月 18 20:04 01_Python
文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b);
文件的权限(参见第6章);
文件的硬链接总数;
文件属主的用户名;
文件属组的组名;
文件的大小(以字节为单位);
文件的上次修改时间;
文件名或目录名。
过滤输出列表
过滤器: 进行简单文本匹配的字符串
ls -l my_script
匹配对应的文件名
文件扩展匹配, 使用元字符通配符
- 问号(?)代表一个字符;
- 星号(*)代表零个或多个字符
- 中括号[eleect] 进行选择[a -i]区间, [! a]进行排除
处理文件
创建文件
touch
创建空文件, 并使用你的用户名作为文件的属主
还可以用来改变文件的修改时间, 但是不修改文件的内容
也可以使用-a来改变访问时间
ls -l --time=atime test
查看文件的访问时间
复制文件
bash
cp source destination
如果新文件的文件名已经存在可能不会提示, 最好加上-i, 显示提示
要是想要复制到一个目录要在最后加上/, 否则可能会创建一个文件和目录同名(测试的时候复制到文件中了)
-R 递归的复制一个文件夹
也可以在复制文件的时候使用通配符
制表键自动补全
按一下补全, 如果有多个满足的文件按两下显示所有
链接文件
如果需要维护一个文件的多个副本, 除了单独的物理副本, 还有虚拟副本, 有两种链接
- 符号链接: 一个实实在在的文件, 指向存放在虚拟目录结构某一个地方的另一个文件
- 硬链接: 创建单独的虚拟文件, 包含源文件的信息以及位置
符号链接: ln -s 原文件名 链接名
, 创建的是一个指针, 但是属于另一个文件, 可以使用ls -i
查看文件编号
bash
//源文件
811102 drwxrwxr-x 2 jiao jiao 4.0K 8月 2 14:36 abb
//链接
800794 lrwxrwxrwx 1 jiao jiao 3 8月 2 14:21 baa -> abb
文件的大小不同, 文件编号不同, 源文件的链接数是2
硬链接: ls 原文件名 链接名
bash
//链接出来的文件
800795 -rw-rw-r-- 2 jiao jiao 4 8月 2 13:27 acc
//源文件
800795 -rw-rw-r-- 2 jiao jiao 4 8月 2 13:27 test
文件大小相同, 文件的编号相同, 显示的链接数都是2
**注: **对于硬链接只能处于一个存储媒体的文件
**我的理解:**硬链接是指向源文件的存储的另一个指针, 符号链接是指向源文件存储的二级指针
删除硬链接的源文件不会造成影响, 但是删除符号链接的源文件会造成影响
重命名
称为文件的移动
bash
mv 源文件 目标地址
文件的编号时间戳都不变
可以使用-i来使得在覆盖文件的时候有提示
删除文件
bash
rm 文件名
-i: 显示是否要删除的提示
bash shell没有回收站或垃圾桶
可以使用通配符
-f: 取消所有的提示
处理目录
创建目录
bash
mkdir 文件夹的名字
-p: 创建多个文件目录和子目录
删除目录
bash
redir 文件名
只能删除空目录, 没有-i选项
bash
rm -r 文件名
删除整个文件, 可以和-i命令配合使用选择删除, 和-f配合使用直接删除
查看文件内容
查看文件类型
bash
file 文件名
确定文件的信息以及编码, 可以返回二进制文件面向的平台以及需要的各种类型的库
查看整个文件
cat
bash
cat 文件名 //查看文件
-n: 加上行号
-b: 只给有文本的行加上行号
-T: 禁止制表符出现, 把所有的制表符转换为
^I
more
显示文本的内容, 但是每次只显示一页的内容
回车一次显示一行, 空额下一行, 和手册的使用一样
Ctrl+B往上翻
Ctrl+F往下翻
less
more的升级版
查看部分文件
tail
bash
tail 文件名
显示文件的最后几行
bash
tail -n 数字 文件名
tail -数字 文件名
显示文件最后n行
-f: 在其他进程添加信息的时候实时显示
head
bash
head 文件名
显示文件的前几行
-n: 显示的行数