前言
此文章为本人自学Linux的学习笔记,仅供自己和小白学习参考,如有错误和问题,欢迎各位评论,一起进步。自学课程为韩顺平老师的《2021图解Linux全面升级》,笔记为参考韩老师的教学笔记综合个人情况进一步总结。特别注意:指令中的符号均为纯英文符号,在记录过程中可能误将中文符号记进去,为了方便阅读识别,指令中还不同数的多加了空格,学习时请读者自行识别。
文章目录
一、Linux入门
1.1 Linux是什么?
Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目(c/c++/php/python/java/go)都会部署到Linux/unix系统上。
1.2 吉祥物--Tux
1.3 Linux 主要的发行版
Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、SuSE、OpenSUSE
二、目录结构
2.1 Linux 目录结构
2.1.1 基本介绍
- linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
- 在Linux世界里,一切皆文件!
- 树状目录示意图
2.2 具体的目录结构
- /bin [常用] (/usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最经常使用的命令
- /sbin (/usr/sbin、/usr/local/sbin) s就是Super User 的意思,这里存放的是系统管理员使用的系统管理程序
- /home [常用] 存放普通用户的主目录,在Linux 中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
- /root [常用] 该目录为系统管理员,也称作超级权限者的用户主目录
- /lib 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的 DLL文件。几乎所有的应用程序都需要用到这些共享库
- /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
- /etc [常用] 所有的系统管理所需要的配置文件和子目录,比如安装mysql 数据库 my.conf
- /usr [常用] 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的 program files目录。
- /boot [常用] 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /proc [不能动] 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- /srv [不能动] service缩写,该目录存放一些服务启动之后需要提取的数据
- /sys [不能动] 这是limux2.6内核的一个很大的变化.该目录下安装了2.6内核中新出现的一个文件系统 sysfs
- /tmp 这个目录是用来存放一些临时文件的
- /dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储
- /media [常用] linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下
- /mnt [常用] 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看里的内容了
- /opt 这是给主机额外安装软件所存放的目录。如安装ORACLE 数据库就可放到该目录下。默认为空
- /usr/local [常用] 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
- /var [常用] 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
- /selinux [security-enhanced linux] SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
三、Linux 上手工具
3.1 远程登录 Linux -- Xshell
- 说明:Xshell 是目前最好的远程登录到Linux操作的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员的首选软件。
- Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2,以及Microsoft Windows 平台的TELNET协议。
- Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
3.2 远程上传下载文件--Xftp
介绍:是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用了Xftp 以后,windows 用户能安全地在UNIX/Linux和Windows PC之间传输文件。
3.3 VI 和 VIM 编辑器
3.3.1 基本介绍
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
3.3.2 常用的三种模式
正常模式 : 以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用「复制、粘贴』来处理你的文件数据。
插入模式 : 按下i, I,o,O, a,A, r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可。
命令行模式 : 输入 esc再输入:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim 、显示行号等的动作则是在此模式中达成的!
3.3.3 vi 和 vim 快捷键
- 拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入p)。
- 删除当前行dd,删除当前行向下的5行5dd
- 在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个
- 设置文件的行号,取消文件的行号.[命令行下: set nu和:set nonu]
- 在一般模式下,使用快捷键到该文档的最末行[G/shift+g]和最首行[gg]
- 在一个文件中输入"hello",在一般模式下,然后又撤销这个动作 u
- 更多查询百度等
四、Linux 上手--开机、重启和用户登录注销
4.1 关机&重启命令
4.1.1 基本语法
- shutdown -h now 立刻进行关机
- shutdown -h 1 1分钟后关机
- shutdown -r now 现在重启计算机
- halt 强制关机
- reboot 现在重启计算机
- sync 把内存的数据同步到磁盘
4.1.2 注意细节
- 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
- 目前的 shutdown / reboot / halt 等命令均已经在关机前进行了 sync , 小心驶得万年船
4.2 用户登录和注销
4.2.1 基本介绍
- su - 用户名 登录到用户
- logout / exit 注销
4.2.2 使用细节
- logout 注销指令在图形运行级别无效,在运行级别3下有效.
- su - 用户名 指令,当高权限用户登录到低权限用户时,无需密码;当低权限用户登录到高权限用户时,需要输入密码
五、Linux 上手--用户管理
5.1 基本介绍
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一账号,然后以这个账号的身份进入系统
5.2 常用语法及细节说明
5.2.1 常用语法
- useradd 用户名 添加用户
- useradd -d 指定目录 用户名 添加用户并指定该用户的家目录
- useradd -g 组名 用户名 添加用户,并直接将他加入某组内
- passwd 用户名 指定/修改密码
- userdel 用户名 删除用户,但是保留家目录
- userdel -r 用户名 删除用户及其家目录
- id 用户名 查询用户信息
- su - 用户名 切换用户
- exit / logout 注销
- whoami / who am i 查看当前用户
5.2.2 细节说明
1.当创建用户成功后,会自动的创建和用户同名的家目录 /home/用户名
2.也可以通过 useradd -d 指定目录 用户名,给新创建的用户指定家目录
3.一般情况下,我们删除用户时,保留其家目录
4.从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
5.当需要返回到原来用户时,使用 exit / logout 指令
5.3 用户组
5.3.1 介绍
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
5.3.2 常用语法
- groupadd 组名 新增组
- groupdel 组名 删除组
- useradd -g 组名 用户名 添加用户时直接上组
- usermod -g 组名 用户名 修改用户的组
5.4 用户和组的相关文件
5.4.1 /etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
5.4.2 /etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行的含义:组名:口令:组标识号:组内用户列表
六、实用指令
6.1 指定运行级别
6.1.1 运行级别说明
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
6.1.2 CentOS7后运行级别说明
在centos7以后,/etc/inittab文件中进行了简化,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
# To view current default target, run:
systemctl get-default
# To set a default target, run:
systemctl set-default TARGET.target
6.2 找回root密码
6.3 帮助指令
6.3.1 常用语法
- man [命令或配置文件] 获得帮助信息
- help 命令 获得shell内置命令的帮助信息
6.3.2 百度更直接
6.4 文件目录类
6.4.1 pwd 指令
- pwd 显示当前工作目录的绝对路径
6.4.2 ls 指令
- ls [选项] [目录或文件] 查看当前目录所有文件和目录
常用选项:
- -a 显示隐藏文件和目录
- -l 以列表的方式显示信息
- -h 大小从字节换算为k,M,G
6.4.3 cd 指令
- cd [路径] 切换到指定目录
- cd .. 切到当前目录的上一级目录
- cd ~ 切到自己的家目录
注意:路径可以是绝对路径或相对路径
绝对路径:从根目录 / 开始
相对路径:从当前所在目录开始
6.4.4 mkdir 指令
- mkdir [选项] 目录 创建目录
常用选项:
- -p:创建多级目录
例如:
mkdir -p /home/xc/1/2/3
6.4.5 rmdir 指令
- rmdir [选项] 删除空目录
- rm -rf 删除非空目录
6.4.6 touch 指令
- touch 文件名称 创建空文件
注意:只创建,不打开编辑。
6.4.7 cp 指令
- cp [选项] 要复制的文件 目标目录 拷贝文件(复制)
常用选项:
- -r 递归复制整个文件夹
案例:将/home 全部拷贝到/opt:
cp -r /home /opt
使用细节:强制覆盖不提醒的方法:\cp
\cp -r /home /opt
6.4.8 rm 指令
- rm [选项] 目录或文件 删除目录或文件
常用选项:
- -r:递归删除整个文件
- -f:强制删除不提醒
6.4.9 mv 指令
- mv 旧名字 新名字 重命名
- mv 原目录 目标目录 移动文件(剪切)
注意:移动整个文件时不需要-r递归(cp拷贝时需要)
6.4.10 cat指令
- cat [选项] 要查看的文件 查看文件内容
常用选项:
- -n:显示行号
使用细节:
cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 |more
cat -n /etc/profile | more
6.4.11 more 指令
介绍:more 指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),详见下图
- more 要查看的文件 查看文件
6.4.12 less 指令
介绍:less指令用来分屏查看文件内容,它的功能与more指令类似,但是比 more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作说明:
- less 要查看的文件 查看文件
6.4.13 echo 指令
- echo [选项] 内容 输出内容到控制台
6.4.14 > 指令和 >> 指令
> 输出重定向(直接内容)
>> 追加(补在后面)
- ls -l > 文件 列表的内容写入文件中(覆盖)
- ls -al >> 文件 列表的内容追加到文件的末尾(不覆盖)
- cat 文件1 > 文件2 将文件1的内容覆盖到文件2
- echo “内容” >> 文件 把“内容”追加到文件末尾
应用实例:
1.将/home 目录下的文件列表覆盖写入到/home/info.txt:
ll /home > /home/info.txt [如果没有info.txt,则会自动创建]
2.将当前日历信息追加到/home/mycal文件中:
cal >> /home/mycal
6.4.15 head 指令
介绍:head 用于显示文件的开头部分内容,默认情况下head 指令显示文件的前10行内容
- head 文件 查看文件前10行内容
- head -n x 文件 查看文件前x行内容
6.4.16 tail 指令
介绍:tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
- tail 文件 查看文件末10行内容
- tail -n x 文件 查看文件末x行内容
- tail -f 文件 实时追踪该文档的所有更新
6.4.17 ln 指令
介绍:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
- ln -s 原文件或目录 放置目录和软连接名 给原文件创建一个软连接
案例:
1.在/home目录下创建一个软连接myroot,连接到/root目录
ln -s /root /home/myroot
2.删除软连接myroot
rm /home/myroot
6.4.18 history 指令
介绍:查看已经执行过历史命令,也可以执行历史指令
- history 查看所有的历史指令
- history x 先最最近使用过的x条指令
- !x 执行历史编号为x的指令
6.5 时间日期类
6.5.1 date 指令
- date 显示系统时间
- date + %Y 显示系统年份
- date + %m 显示系统月份
- date + %d 显示系统是哪一天
- date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
- date -s 时间字符串 设置系统时间
注意:区分字母大小写
例如:将系统时间设置为 2022/7/16 16:16:10
date -s "2022-07-16 16:16:10"
6.5.2 cal 指令
- cal [选项] 不加选项,显示本月日历
- cal Year 显示Year年日历
6.6 搜索查找类
6.6.1 find 指令
介绍:find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
- find [范围] [选项] xxx 目录下查找
常用选项:
- -name:按照文件名查找文件
- -user:查找属于指定用户名所有文件
- -size:按照指定的文件大小查找文件
注意:
按大小查找单位有k,M,G:
+n为大于n,-n为小于n,n为等于n
6.6.2 locate 指令和which 指令
介绍:locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate数据库
- locate 文件名 搜索文件所在目录
- which 指令 查看指令所在目录
- updatedb 创建和更新locate数据库
注意:由于locate指令基于数据库进行查询,所以第一次使用前,必须使用updatedb指令创建locate数据库
6.6.3 grep 指令和管道符号 |
介绍:grep过滤查找,管道符“|”表示将前一个命令的处理结果输出传递给后面的命令处理。
- grep [选项] 查找内容 源文件 过滤查找
- cat 源文件 | grep 查找内容 过滤查找
常用选项:
- -n:显示匹配行及行号
- -i:忽略字母大小写
- -v:反选,有xxx的不显示
6.7 压缩和解压类
6.7.1 gzip/gunzip 指令
- gzip 文件 压缩文件,只能将文件压缩为*.gz文件
- gunzip 文件.gz 解压缩文件
6.7.2 zip/unzip 指令
- zip [选项] XXX.zip 要压缩的文件或目录
- unzip [] XXX.zip 解压在当前目录下
zip常用选项:
- -r:递归压缩,即压缩目录
unzip常用选项:
- -d:指定解压后文件的存放目录
例如:
将/home/myhome.zip解压到/opt/tmp中
unzip -d /opt/tmp /home/myhome.zip
6.7.3 tar 指令
介绍:tar指令是打包指令,最后打包后的文件是.tar.gz 的文件。
- tar [] XXX.tar.gz 打包的内容 打包
- tar -zcvf XXX.tar.gz 内容1 内容2 ... 把内容1,2,...打包
- tar -zxvf xxx.tar.gz 解包
- tar -zxvf xxx.tar.gz -C 目标目录 解包到xxx
常用选项:
- -c:产生.tar打包文件
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包同时压缩(解包时也要加)
- -x:解包
- -C:解包时指定解压后的目录
6.8 补充指令
6.8.1 sort排序
sort 从小到大排序
sort -nr 从大到小排序
6.8.2 uniq
uniq
6.8.3 cut
cut
6.8.4 awk
awk
七、Linux上手--组管理和权限管理
7.1 组管理
7.1.1 组的基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
7.1.2 文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
7.1.3 常用语法
- ls -l 查看文件/目录所有者
- ls -l 查看文件/目录所在组
- chown 新所有者名 文件/目录名 修改文件/目录所有者(目录内不改变)
- chown -R 新所有者名 目录名 递归修改该目录及该目录下的文件/目录所有者
- groupadd 组名 创建组
- useradd -g 组名 用户名 创建用户时直接进组
- chgrp 新组名 文件/目录名 修改文件/目录所在组
- usermod -g 新组名 用户名 改变用户所在组
- usermod -d 目录 用户名 改变该用户登录的初始目录
注意:改变用户初始目录时,用户需要有进入到新目录的权限(即执行权x)
7.2 权限管理
7.2.1 权限的基本介绍
drwxr-xr-x 0-9位,共十位
0-9位说明:
第0位确定文件类型(-,d,l,c,b)
- -是文件
- d是目录,相当于Windows的文件夹
- l是链接,相当于Windows的快捷方式
- c是字符设备文件,如鼠标,键盘
- b是块设备,比如硬盘
第1-3位确定所有者(该文件的所有者)拥有该文件的权限---User
第4-6位确定所属组(与文件同组的人)拥有该文件的权限---Group
第7-9位确定其他用户拥有该文件的权限---Other
7.2.2 rwx 权限详解
- rwx作用到文件
- r代表可读(read):可以读取,查看文件内的内容
- w代表可写(write):可以修改文件内的内容(不代表可以删除和重命名)
- x代表可执行(execute):可以运行
- rwx作用到目录
- r代表可读(read):可以读取,ls查看目录内的内容
- w代表可写(write):可以修改,在目录内创建,删除,重命名
- x代表可执行(execute):可以进入该目录内
7.2.3 修改权限的两种语法--chmod
1.第一种方式:+、-、=变更权限
u:所有者 g:所在组 o:其他人 a:所有人
- chmod u=rwx,g=rx,o=x 文件/目录名 给u,x,o对应权限
- chmod o+x,a-x 文件/目录名 在原来基础上增加/减少对应权限
2.第二种方式:通过数字变更权限
r=4 w=2 x=1,则w+x=3,r+x=5,r+w=6,r+w+x=7
- chmod abc 文件/目录名 分别给u:a的权限,g:b的权限,o:c的权限
- a,b,c均为0到7的数字
注意:以上两种变更权限的方式都是只对单个指定的目录/文件生效,如果想要将目录,及目录下的文件/目录都进行权限变更,则需要加上 -R 进行递归处理
例如:
chmod -R u=rwx,g+w,o-w 目录名
chmod -R 741 目录名
总结
此篇笔记到此已经写完了,为Linux学习笔记的第一篇,之后的Linux学习笔记也将以博客的形式进行记录总结。此部分的内容较为简单,基础知识,常用指令较多,应该以实际操作为主,多多上手练习,无他, 但手熟尔。