前言
要想成为程序员,几乎绕不开学习Linux操作系统。
很多博客都会讲解Linux相关知识,但却很少告诉我们Linux要学到什么程度,最应该掌握哪些。
想想我们学习的Windows系统,我们会增删改查目录、文件,下载安装卸载软件,开关机、重启。
那我们学习Linux系统也是掌握以上这些就可以了。
跟着本博客学习Linux,不多不少,刚好够用!
1.Linux简介
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2.Linux发行版本
3.Linux详解
3.1文件系统结构
文件夹 | 说明 |
---|---|
/bin | 存放二进制可执行文件,常用命令存放于此 |
/etc | 存放系统管理和配置文件 |
/home | 存放所有用户文件的跟目录 |
/usr | 存放系统应用程序 |
/opt | 主机额外安装软件所摆放的目录 |
/proc | 虚拟文件系统目录,是系统内存的映射 |
/root | 系统管理员主目录 |
/sbin | 存放二进制可执行文件,只有root才能访问 |
/dev | 存放设备文件 |
/mnt | 系统提供该目录用于临时挂载其他文件系统 |
/boot | 存放用于系统引导时使用的各种文件 |
/lib | 存放系统最基本的动态连接共享库 |
/tmp | 存放临时文件,也是公用临时文件存储点 |
/var | 存放运行时需要改变数据的文件 |
/lost+found | 系统非正常关机而留下的文件 |
3.2常用命令
常用命令 | 说明 |
---|---|
ls | (list files)列出目录及文件名 |
cd | (change directory)切换目录 |
pwd | (print work directory)显示当前目录 |
mkdir | (make directory)创建新目录 |
rmdir | (remove directory)删除空目录 |
cp | (copy file)复制文件或目录 |
rm | (remove file)删除文件或目录 |
mv | (move file)移动文件或目录/修改文件或目录名 |
cat | 显示全部文件内容 |
tac | 倒序显示全部文件内容 |
nl | 显示文件内容时,同时输出行号 |
more | 一页一页的显示文件内容 |
less | 精简显示文件内容 |
head | 查看文件头部 |
tail | 查看文件末尾 |
chgrp | 改变文件所属群组 |
chown | 改变文件拥有者 |
chmod | 改变文件权限 |
man [命令] | 查看命令的使用文档 |
ls [参数] [目录] | 列出目录或文件名 |
---|---|
ls -a | 列出全部文件 |
ls -d | 列出全部目录 |
ls -l | 长数据串列出,包含文件属性与权限 |
ls ~ | 列出家目录下所有文件 |
cd [相对路径或绝对路径] | 切换目录 |
---|---|
cd .. | 切换至上一层目录 |
cd ~ | 切换至系统根目录 |
cd / | 切换至用户主目录 |
cd - | 切换至上一操作所在目录 |
pwd | 显示当当前目录 |
---|---|
pwd -P | 显示确切路径 |
mkdir [-mp] 目录名称 | 创建目录 |
---|---|
mkdir -m | 配置文件权限 |
mkdir -p | 进行目录递归创建 |
rmdir | 删除空目录 |
---|---|
rmdir -p | 连同上一级空目录一起删除 |
cp [参数] 目录名称 目录拷贝的目标位置 | 复制文件或目录 |
---|---|
cp -d | 若来源档为连结档的属性,则复制连结档属性而非文件本身 |
cp -f | 若目标文件已经存在且无法开启,则移除后再尝试一次 |
cp -i | 若目标档已经存在时,在覆盖时会先询问动作的进行 |
cp -p | 连同文件的属性一起复制过去,而非使用默认属性 |
cp -r | 递归持续复制,用于目录的复制行为 |
cp -s | 复制成为符号连结档 |
rm [-fir] 文件或目录 | 移除文件或目录 |
---|---|
rm -f | 忽略不存在的文件,不会出现警告信息 |
rm -i | 互动模式,在删除前询问使用者是否删除 |
rm -r | 递归删除,谨慎使用 |
mv [-fiu] source destination | 移动文件或目录 |
---|---|
mv -f | 如果目标文件已经存在,不会询问而直接覆盖 |
mv -i | 若目标文件已经存在时,就会询问是否覆盖 |
mv -u | 若目标文件已经存在,且 source 比较新,才会升级 (update) |
3.3 用户管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
用户管理命令 | 说明 |
---|---|
useradd 选项 用户名 | 添加新的用户账号 |
userdel 选型 用户名 | 删除已有账号 |
usermod 选项 用户名 | 更该用户属性 |
passwd 选项 用户名 | 指定和修改用户口令 |
groupadd 选项 用户组 | 增加新用户组 |
groupdel 用户组 | 删除已有用户组 |
groupmod 选项 用户组 | 修改用户组属性 |
newgrp 用户组 | 切换到新用户组 |
在Linux操作系统中,有三个概念是我们必须掌握:用户、用户所在群组、别的群组;这三个区分极大地方便了协同工作。
- 用户可以使用本用户内的资源以及用户所在群组的公共资源
- 不同群组之间的资源是完全隔离开来的
因为对于Linux系统来说,万物皆文件,所有上述资源就是指代文件。由于用户、用户所在群组、别的群组这三者的区分,我们需要能够查看任一文件对这三者的权限。
#列出所有文件的详细信息
#input:
ls -l
#output:
drwxr--rw- 1 root root 42306 Sep 14 22:03 etc
文件的类型:
- d: 代表目录
- -: 代表文件
- l: 代表软链接(可以认为是window中的快捷方式)
Linux中文件权限分为以下几种:
- r:代表权限是可读,r也可以用数字4表示
- w:代表权限是可写,w也可以用数字2表示
- x:代表权限是可执行,x也可以用数字1表示
解读
drwxr--rw- 1 root root 42306 Sep 14 22:03 etc
- etc文件是一个目录
- etc所有者可以读写并执行etc文件
- etc所述组的用户可读取etc文件
- etc所不属的组的用户可以读写etc文件
- etc文件有1个硬连接
- ect属于root这个用户
- ect属于root这个群组
- ect的容量为42306
- etc最近更改日期为Sep 14 22:03
3.4 Vim编辑器
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,相当于Windows中的记事本。
vim 共三种模式,分别是命令模式,输入模式和底线命令模式。
这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有:
- :q 退出程序
- :w 保存文件
- :wq 保存文件并退出程序
从记事本的视角切入,我们使用记事本的过程是打开/创建记事本,编辑内容,保存退出。
3.5 软件包安装、卸载、查看
apt命令
- apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt 命令执行需要超级管理员权限(root)
apt [options] [command] [package1,package2,...]
apt常用命令 | 说明 |
---|---|
sudo apt update | 列出所有可更新的软件清单 |
sudo apt upgrade | 升级软件包 |
apt list --upgradeable | 列出可更新的软件包及版本信息 |
sudo apt full-upgrage | 升级软件包,升级前先删除需要更新软件包 |
sudo apt install <package_name> | 安装指定的软件 |
sudo apt install <package1> <package2> | 安装多个软件包 |
sudo apt update <package_name> | 更新指定软件 |
sudo apt show <package_name> | 显示软件包信息 |
sudo apt remove <package_name> | 删除软件包 |
sudo apt autoremove | 清理不再使用的软件包 |
sudo apt purge <package_name> | 移除软件包及配置文件 |
sudo pat search <keyword> | 查找软件包 |
apt list --installed | 列出所有已安装软件包 |
apt list --all-version | 列出所有已安装软件包的版本信息 |
3.6 软硬连接
Linux 连接分两种,一种被称为硬连接(Hard Link),另一种被称为符号连接(Symbolic Link)。默认情况下,ln 命令产生硬连接。
硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
3.7
求个赞😄,求个关注😄