Skip to content

基本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

还为每一个区域都分配了一个数字

  1. 可执行的shell命令
  2. 系统调用
  3. 库调用
  4. 特殊文件
  5. 文件格式与约定
  6. 游戏
  7. 概览、约定及杂项
  8. 超级用户和管理员命令
  9. 内核例程

一个命令有时候会在多个区域, 要查看不同区域的

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进程目录,存放现有硬件及当前进程的相关信息
/rootroot用户的主目录
/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: 在其他进程添加信息的时候实时显示

bash
head 文件名

显示文件的前几行

-n: 显示的行数