操作系统根据使用方式分类
操作系统按照使用类型可分为图形化操作系统和指令操作系统。图形化操作系统的本质其实也是根据指令来操作的。指令更贴近操作系统的底层。而我在学习Linux系统编程时,采用命令行的方式来学习。
补充一个小知识:早期命令行操作系统的输入设备一般是键盘,而图形化界面操作系统的出现带来另一个输入设备,即鼠标。所以键盘鼠标不是一开始就一起出现的,是因为图形化界面操作系统的出现,衍生出了对于鼠标这一输入设备的需求
Linux学习的环境配置
1、裸机安装Linux或双系统学习(极不推荐)
2、配置Linux虚拟机(较不推荐)
3、使用云服务器(推荐)
云服务器学习
1、购买云服务器,选择最低配置即可。建议可以几个小伙伴何用一个,只是学习用途绝对是没有问题的。需要注意的是第一次登录需要重置root账户的密码
2、使用本地终端或者第三方远程登录软件如xshell来登录云服务器。
3、推荐使用用户账户来进行学习,这样可以模拟未来工作的使用场景,学习效果会更好。
登录云服务器指令
ssh 用户名@云服务器IP地址
如何增加新用户
添加加新用户指令
adduser 用户名
设置新用户密码指令
passwd 密码
删除用户
如果你的小伙伴不仅白蹭你的云服务器还对你破口大骂,这是你气不过想移除他的账号你可以这么做
userdel -r 用户名
Linux基本指令
指令的概念
Linux指令是Linux操作系统中可执行的命令,用于在命令行界面或终端窗口中执行各种操作,例如文件管理、文本编辑、进程管理、网络设置等等。Linux指令通常是由一个单词或多个单词组成的命令,可以带有参数和选项,以实现不同的功能。
1.ls指令
指令功能:对于目录,ls指令列出该目录下所有子目录和文件。对于文件,将列出文件名以及其他文件信息。
语法 :ls [选项] [目录或文件]
常用选项:
-a 列出目录下所有文件,包括以.开头的隐含文件。
-d 将目录像文件一样显示,而不是显示其下的文件。如ls -d 指令目录
-i 输出文件的i节点的索引信息。如ls -ai 指令文件。
-k 以k字节的形式表示文件的大小。ls -alk 指定文件。
-l 列出文件的详细信息。
-n 用数字的UID,GID 代替名称。
-F 在每个文件名附上一个字符用于说明该文件的类型,"*“表示可执行普通文件;”/“表示目录;”@“表示符号链接;”|“表示FIFOs;”="表示套接字(sockets)。(目录类型自动识别)
-r 对目录反向排序
-t 以时间排序
-s 在文件名后面输出该文件的大小(大小排序)
-R 列出所有子目录下的文件(递归)
-1 一行只输出一个文件。
举例演示
ls -l
ll
ls -l 等价于ll。这两条指令是一样的。
当然还可以拓展衍生出一些命令组合使用具体大家可以动手试试。我这里简单举例两个。
ll -a 列出当前目录下所有文件以及详细信息
ll -s 列出文件的详细信息和文件的大小
2.pwd指令
指令功能:显示用户当前所在的目录
语法:pwd
常用选项:无选项
举例
这里拓展一个小指令,即whoami指令,用于查看当前用户信息。
3.cd指令
Linux磁盘分区
在介绍这个指令之前,先介绍一下Linux系统磁盘文件分区的概念。Linux的磁盘目录结构一定是一颗多叉树。所以对于文件的增删查改,本质上就是对这颗多叉树的增删查改。
/分区,即根目录。存放所有文件和目录。home目录就是根目录下的一个子目录。用于存放用户的个人数据和配置文件。
绝对路径和相对路径
通常访问一个文件都是需要路径来进行定位的。路径定位文件具有唯一性。
绝对路径
绝对路径是指从文件系统的根目录开始描述文件或目录的路径。它包含完整的路径信息,从根目录开始一直到文件或目录的位置。在不同的操作系统中,绝对路径的表示方式可能有所不同。在Windows系统中,一个典型的绝对路径可能是:C:\Users\Administrator\Desktop\example.txt,其中C:\是根目录,Users是一级目录,Administrator是二级目录,Desktop是三级目录,example.txt是文件名。在Unix或Linux系统中,一个典型的绝对路径可能是:/home/user/example.txt,其中/表示根目录,home是一级目录,user是二级目录,example.txt是文件名。
相对路径
相对路径是指文件或目录相对于当前工作目录的路径。它不是从根目录开始的完整路径,而是从当前目录开始的路径。在命令行或代码中使用相对路径时,它们通常以“.”(表示当前目录)或“…”(表示上级目录)开头。相对路径可以方便地在同一文件夹或子文件夹中引用其他文件。
小结
绝对路径较长,通常用于配置固定文件等场景使用。
相对路径通常用于命令行输入使用。
指令功能:改变当前工作目录,将当前工作目录改变到指定的目录下。
语法:cd 目录名
举例演示
cd 目录名
cd .. 返回上级目录
当返回到根目录下,cd… 便无法再改变当前目录。
cd /home/user 绝对路径
cd ./dir1 相对路径
cd ~ 进入家目录
cd - 返回最近访问的目录
4.touch指令
指令功能:touch命令参数可更改文档或目录的时间日期,包括存取时间和更改时间,或者新建一个不存在的文件。
语法:touch [选项] [文件]
常用选项:
-a 或者–time = atime或–time=use只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数负责解决BSD版本touch指令的兼容性问题。
-m 将–time=mtime 或–time=modify 只改动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
距离演示
touch 文件
5.mkdir指令(重要)
指令功能:在当前目录下创建一个目录。
语法:mkdir [选项] [目录名称]
常用选项:
-p 即-parents 可以是一个路径的名称。此时若路径中的某些目录尚不存在,加上本选项后,系统将自动创建那些尚不存在的目录,即一次创建多个目录。
举例演示
创建一个新目录
mkdir 目录名称
递归创建多个目录
mkdir -p 目录名称/目录名称/...
空目录需要占据存储空间吗
空目录其实是需要占据存储空间的。这是因为文件其实是有两个部分组成,即文件内容和文件信息。虽然空目录的没有文件内容,但是空目录依然有文件信息。例如创建的时间、目录的路径等都是文件的信息数据,是数据需要占据存储空间的。
文件 = 文件内容 + 文件属性
文件的操作
在前面的语言编程学习里,大部分接触的文件操作其实是对文件内容的操作,如写一个打印hello world程序。本质是对文件内容的操作,当然,文件属性也是可以操作的。如控制文件的读写属性。
文件操作 = 对文件内容操作 or 对文件属性的操作
6.rmdir指令和rm指令(重要)
rmdir是一个与mkdir相对应的指令。rmdir适用于删除空目录的指令。rm是可以同时删除目录或者文件的指令。
rmdir指令语法:rmdir [选项] [目录名称]
rmdir适用对象:具有当前目录操作权限的所有使用者
rmdir常用选项:
-p 当子目录被删除后,如果父目录也变成空目录的haul,就连带父目录一起删除
举例演示
rm指令语法:rm [选项] [目录名称]
rm适用对象:所有使用者
rm常用选项:
-f 即使文件属性为只读(即写权限保护),也直接删除。
-i 删除前逐一询问确认。
-r 递归删除目录以及其下所有文件