前言
本文将先简单了解什么是操作系统,再讲解一些Linux的基本指令。
一、操作系统的简单了解
1、什么是操作系统(Operating System,简称OS)?
- OS是一款做软硬件管理的软件。
- 软硬件的体系结构图:
- 硬件:软硬件层次中处与最低层的就是硬件,硬件眼睛能看到,手能摸到,是客观存在的,例如:CPU、内存……
- 设备驱动:设备驱动处于OS和硬件之间,相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正确工作。因此,驱动程序被比作“硬件和系统之间的桥梁”。(早期计算机都是通过硬件电路直接控制的,所以当时只有硬件,需要用户手动控制硬件。随着发展,硬件功能越来越完善,所以需要一款软件对硬件做管理,管理的软件叫做OS,但是硬件变得复杂了,所以每一种硬件要被正确访问,就在OS和硬件之间又提供了设备驱动)
- 应用软件:在应用软件处与操作系统之上,我们需要有各种不同的应用软件,来满足用户不同的应用场景(下三层为我们提供了一套软硬件服务,可是用户的需求并不是直接用OS,所以在OS之上又提供了各种应用软件)
2、为什么要有操作系统?
- 一个好的操作系统的衡量指标有:稳定、快速、安全……
- 为什么要有操作系统:
- 从操作系统的核心工作来看:通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、快速、安全) 操作/使用环境
3、小结
- 现在OS我们只需要记住两个点:管理 和贯穿
- 管理: OS在软硬件体系结构中处于一种承上启下的作用,他主要的核心工作是对下管理好底层的软硬件,对上提供一个良好的操作环境。
- 贯穿: 我们在计算机上的所有行为都会转换成硬件行为(例如:printf——显示器打印;玩游戏——向网络发送数据等)——》我们所有的软件行为,全部都要自顶向下贯穿计算机的软硬件结构——》几乎我们所有的软件行为,都和OS直接或间接相关。
二、Linux下的基本指令
1、Linux操作的特点
- Linux操作的特点:以纯命令行为主,但Linux也有图形化界面(大多为专业人员使用,因为一般企业的Linux服务器都没有图形化界面)
- Windows操作的特点:以图形化界面为主,但也有命令行(大多为普通用户使用,在乎体验、好用)
- 无论是图形化、还是指令,其本质都是一样的。但是指令更贴近我们的OS。
- 思考:先有指令,还是先有图形化?
- 先有指令,再有图形化,因为先有键盘(因为计算机首先需要解决输入输出的问题 ),后有鼠标(有了图形化才有了鼠标),即硬件产生的先后顺序决定了操作的先后顺序。
2、先整体了解几条基本指令
- ls:显示当前目录下的所有子目录与文件
- pwd:显示用户当前所在目录
- mkdir dirname:在当前目录下创建一个名为“dirname”的目录
- touch 文件名:新建一个不存在的文件
- cd 目录:改变工作目录,将当前工作目录改变到指定的目录下
tip:
- Linux中文件被分为两种:①在Linux中文件夹通常叫做目录;②普通文件(例如:.c / .txt等)
- 新建目录(文件),指令和目录(文件)之间必须要有空格(也可以有多个空格,但建议一个空格即可)
- 目录它指的是文件系统中用来组织和存放文件的位置
如下Linux指令与Windows界面操作对比图:
3、ls指令
- 语法: ls [选项] [目录或文件]
- 功能:
- 对于目录,该命令列出该目录下的所有子目录与文件。
- 对于文件,将列出文件名以及其他信息
- 常用选项:
- -l 列出文件的详细信息
- -a 列出目录下的所有文件,包括 . 开头的隐含文件
- -F 在每一个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOS;“=”表示套接字(sockets)。(目录类型识别)
- -d 将目录像文件一样显示,而不是显示其下的文件(即只显示该目录,不显示其内部的文件)。如:ls -d 指定目录
- -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
- -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
- -r 对目录反向排序。
- -t 以时间排序。
- -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- -R 列出所有子目录下的文件。(递归)
- -1 一行只输出一个文件。
tip:
- 指令是可以携带“选项”的
- “选项”可以让同一个指令,表现不同的行为,即可将其理解为指令的子功能
- 可以通过使用“选项”,让指令展现它不同的子功能
- 示例:
ls
:显示当前目录下的所有子目录与文件
ls -d
:将目录像文件一样显示,而不是显示其下的文件(即只显示该目录,不显示其内部的文件)。如:ls -d 指定目录
ls -l
:列出文件的详细信息(即显示更多的文件属性)
ls -a
:列出目录下的所有文件,包括 . 开头的隐含文件
- 在Linux中,以 . 开头的文件,我们称之为隐藏文件!
- Linux任何一个目录下面都有两个隐藏文件 . 和 . . ,如下图:
- . . :表示当前路径的上级路径,它的意义是回退到上级目录。
- . :表示当前路径,它的意义是帮用户定位当前目录下的一个文件(例如:运行可执行文件a.out——》./a.out)
ls -F
: 在每一个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOS;“=”表示套接字(sockets)。(目录类型识别)
- 选项可以组合在一起使用,特殊ls -l 等价与 ll
- 小结:ls所有携带的“选项”,都是帮助我们对文件属性去查看的。
- 重新理解文件:
- 因为文件的属性也是数据,是数据就要存储,所以文件=文件内容+文件属性
- 所以文件只有两种操作:
- 对文件内容的操作
- 对文件属性的操作
4、pwd指令
- 语法: pwd
- 功能: 显示用户当前所在的目录
- 常用选项: 无
- 示例:
- 路径分隔符:
- 路径分隔符:
- Linux的路径分隔符:/(斜杆)
- Windows的路径分隔符:\(反斜杠)
- Linux的根目录为“/”(回退到“/”就不能回退了)
- 小结:Linux不能直接看到用户当前所在的目录,需要pwd指令才能看到用户当前所在目录
5、whoami指令
- 语法: whoami
- 功能: 查看当前登录用户是谁
- 示例:
- 家目录:
- Linux中的用户分为两类:超级用户root(只有一个)与其它(普通用户,可以有多个)
- 家目录:
- /root:root用户的家目录
- /home/xxx:xxx普通用户的家目录
- Centos系统中,所有的普通用户,用户账号都会统一放在/home
- 支持多用户登录的OS,叫做多用户OS,典型的多用户OS有Linux、Windows
- root账号下所有命令行的前缀是#,普通账号下所有命令行的前缀是$
6、cd指令
- 语法: cd 目录
- 功能: 改变工作目录,将当前工作目录改变到指定的目录下
- cd指令其它几个常用的用法:
- cd . . :回退到上级目录(. . 表示当前路径的上级路径)
- cd 绝对路径:使用绝对路径,进入指定目录
- cd 相对路径:使用相对路径,进入指定目录
- cd ~:让对应的用户,进入到自己所在的家目录( ~表示特定用户的家目录)
- cd -:切换到我上一次所在的目录(-表示我上一次所在路径)
- 目录结构&绝对路径&相对路径:
- 一个目录,里面可以再放目录或者普通文件
- Linux的目录结构整体是一棵多叉树,它的叶子结点,一定是空目录或者非目录文件,路上结点一定是一个非空目录
- 所以我们所有的对文件或者目录的增删改查,本质都是对这棵多叉树的增删改查
- 所以我们定位一个文件,通常用路径来进行定位——》因为路径定位具有唯一性——》因为它的结构是树,所以任何结点都只有一个父节点
- 绝对路径:我们把从/开始定位到指定目录,具有唯一性的路径,叫做绝对路径
- 相对路径:我们以自己当前所处目录(非根目录)为起始参照位置,来定位到指定目录的路径,叫做相对路径(当起始参照位置改变时,可能相对路径失效!)
- 怎么使用相对路径与绝对路径:
- 绝对路径往往比较长,但是不变,一般在一些固定场景,配置文件中使用
- 一般命令行输入,比较常用相对路径
- 示例:
7、touch指令
- 语法: touch [选项] 文件
- 功能:
- touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
- 或者新建一个不存在的文件
- 常用选项:
- -a 或–time=atime或–time=access或–time=use只更改存取时间
- -c 或–no-create 不建立任何文档
- -d 使用指定的日期时间,而非现在的时间
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
- -m 或–time=mtime或–time=modify 只更改变动时间
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
- -t 使用指定的日期时间,而非现在的时间
- 这里我们不学习touch指令的“选项”,只需要知道touch不能创建目录,只能创建普通文件
8、tree指令
- 语法: tree [选项] 目录
- 功能: 将以树状图的形式显示指定目录下所有子目录与文件
- 常用选项:
- -L level:限制目录树的层数
- -a:显示所有文件和目录,包括以点(.)开始的隐藏文件
- -d:仅显示目录名,不包括文件名
- 如果你没有下载tree,请在root用户下,输入以下指令进行安装:
yum install -y tree
- 示例:
9、mkdir指令
- 语法: mkdir [选项] dirname
- 功能: 在当前目录下创建一个名为“dirname”的目录
- 常用选项:
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
- mkdir一次只能创建一个目录,当我们需要创建一串路径(即递归建立多个目录)时需要使用选项-p
10、rmdir指令&&rm指令
rmdir是一个与mkdir相对应的指令。mkdir是创建目录,而rmdir是删除目录
- 语法: rmdir [选项] dirname
- 适用对象: 具有当前目录操作权限的所有使用者
- 功能: 删除空目录
- 常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
- rmdir一次只能删除一个空目录,不能删除非空目录和文件
- rmdir携带-p选项,当子目录被删除后如果父目录变成空目录,就连父目录一起删除
rm指令不仅可以删除文件还可以删除目录
- 语法: rm [选项] [文件名/目录]
- 适用对象: 所有使用者
- 功能: 删除文件或目录
- 常用选项:
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
tip:
- 使用rm指令删除时,如果是root用户会提示你是否确定删除(普通用户则不会提示)
- Linux删除一个文件或目录后就是直接删除,很难找回,所以删除时一定要确定是否删除
- rm -rf /:删除根目录,即相当于删除OS
- 删除文件时,如果文件正在使用,不会删除
rm
:rm可以直接删除指定文件,但是不能直接删除目录
rm -f 文件名/目录
:rm携带-f选项后,不会再提示用户是否删除,直接删除
- 因为目录本身是递归式定义的,所以也需要递归式删除,所以rm删除目录需要携带选项-r
- 普通用户删除文件不提示,可以rm携带-i选项,删除前询问用户是否确认删除
知识补充:通配符
*:通配符,匹配任意名称的文件
三、重点总结
- OS现在我们需要记住两个点:管理 和贯穿
- Linux操作的特点:以纯命令行为主
- Linux中文件分为两种:目录和普通文件
- ls [选项] [目录或文件]:查看文件属性或目录内容(属性)
- 指令是可以携带“选项”的,“选项”可将其理解为指令的子功能(选项可以组合在一起使用)
- 在Linux中,以.开头文件,我们称为隐藏文件
- 在Linux任何一个目录下面都会有两个隐藏文件 . 和 . .
- .:表示当前路径,它的意义是帮用户定位当前目录下的一个文件
- . .:表示当前路径的上级路径,它的意义是回退到上级目录
- 文件=文件属性+文件内容(所以对文件的操作也只有两种)
- pwd:显示用户当前所在目录(Linux不能直接看到用户当前所在目录,需要pwd指令才能看到用户当前所在目录)
- 路径分隔符:
- Linux的路径分隔符:/(斜杆)
- Windows的路径分隔符:\(反斜杠)
- whoami:查看当前登录用户是谁
- Linux的用户分为两类:超级用户root和普通用户
- 家目录:
- /root:root用户的家目录
- /home/xxx:xxx普通用户的家目录
- cd 目录:切换目录
- 目录结构:Linux的目录结构是一棵多叉树,它的叶子结点一定是目录或非目录文件,路上结点一定是一个非空目录
- 我们定位一个文件,通常用路径来定位(因为任何结点都只有一个父节点。)
- 绝对路径:从根目录开始定位到指定目录,具有唯一性的路径
- 相对路径:以自己当前所处目录(非根目录)为起始参照位置,来定位到指定目录的路径
- touch 文件:创建文件
- tree [选项] 目录:以树状图形式显示指定目录下所有子目录与文件
- mkdir [选项] dirname:在当前目录下创建一个名为dirname的目录
- rmdir [选项] dirname:删除空目录(注:不能删除非空目录和文件)
- rm [选项] [文件名/目录]:可以直接删除指定文件,删除指定目录需要携带-r选项(目录是递归式定义,所以也需要递归式删除)
- 注意:Linux删除一个文件或目录后就是直接删除了,很难找回,所以删除时一定要确定是否删除
- *:通配符,匹配任意名称文件