Linux史上最全教程

一. Linux简介

1.硬件和软件

我们所熟知的计算机是由硬件和软件组成。

硬件:计算机系统中由电子,机械和光电子元件等组成的各种物理装置装置的统称;

简单来说硬件就是看得见摸得到的。

 

软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件和计算机进行交流。而我们要学习的Linux就是软件的一类。

一个完整的计算机:

 2. 操作系统

1.1 概念

操作系统是计算机软件的一种,它主要作为用户和计算机之间的桥梁,调度和管理计算机硬件进行工作。而计算机如果没有操作系统就是一堆无法使用塑料而已。

1.2 功能

当计算机拥有了操作系统,就相当于有了灵魂,操作系统可以

a. 调度CPU进行工作

扫描二维码关注公众号,回复: 16749223 查看本文章

b. 调度内存进行工作

c. 调度硬盘进行数据存储

d. 调度网卡进行网络通讯

e. 调度音响发出声音,打印机打印内容

......

"用户使用操作系统,操作系统安排硬件干活"

1.3 常见的操作系统

a. PC端操作系统:Windows、Linux、MacOS

b. 移动端操作系统:Android、IOS、HarmonyOS

3. Linux操作系统

1.1 诞生

Linux创始人:林纳斯 托瓦兹

Linux诞生于1991年,作者上大学期间

        由于创始人在上大学期间经常浏览新闻和处理邮件,发现现有操作系统不好用,于是决心自己写一个保护模式下的操作系统,这就是Linux原型,当时他21岁,后来经全世界网友的支持,现在能够兼容多种硬件,成为最主流的服务器操作系统之一。

1.2 Linux内核

Linux系统由Linux系统内核和系统级应用组成

1)内核提供系统最核心的功能,如:调度CPU、调度内存、调度系统文件、调度IO等.

2)系统级应用程序,可以理解出厂自带程序,可供用户快速上手操作系统,如文件管理器,任务管理器,图片查看,音乐播放等。

如:播放音乐,无论用户是用自带音乐播放器或者是自行安装的第三方播放器,均是由播放器程序,调用内核提供的相关功能,由内核调度硬件CPU进行解码,音响发生等。

1.3 Linux发行版

内核是免费的、开源的、这也就代表了

1)任何人都可以获得并修改内核、并且自行集成系统级程序

2)提供了内核+系统级程序的完整封装,称之为Linux发行版

任何人都可以封装Linux、目前市面上有非常多的Linux发行版、常用的如下

其中在国内CentOS使用最多,国外ubuntu很受欢迎

Centor下载链接

清华大学开源软件镜像站Ubuntu下载链接

1.4 Linux应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。

  • 巴西联邦政府由于支持 Linux 而世界闻名。
  • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
  • 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
  • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
  • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
  • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
  • 法国和德国同样开始逐步采用 Linux。

 4. 虚拟机

借助虚拟化技术,我们可以在系统中,通过软件模拟计算机硬件,并给虚拟机硬件安装真实的操作系统。这样就可以在电脑中虚拟出一个完整的电脑,以供我们学习Linux系统。

二. Linux常用命令

 1. 命令通用格式

command [-option] [parameter]
command:命令本身
option:[可选,非必填]命令的一些选项,可以通过选项控制命令行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

示例

示例1
ls -l/home/haha
意思是以列表的形式,显示/home/haha目录下的内容
ls是命令本身,-l是选项,/home/haha是参数

示例2
cp -r test1 test2
意思是复制test1成为test2
cp是命令本身,-r是选项,test1和test2是参数

2. ls命令

作用:列出目录下的内容

语法格式:

1.格式:ls [-a -l -h] [Linux路径]
        -a -l -h是可选的选项
            -a:表示all的意思,即列出全部文件(包括隐藏的文件/文件夹)
            -l:表示以列表(竖向排列)的形式展示内容,并展示更多信息
            -h:表示以易于阅读的形式,列出文件大小,如K,M,G;且必须搭配-l一起使用
            Linux路径是此命令可选的参数
            注:当不使用选项和参数,直接使用ls命令本体,表示:以平埔的形式列出当前工作目录下的内容
2.语法中的选项是可以组合使用的(表示同时拥有):
如-a和-l的组合(表示同时拥有-l和-a的功能)可以按照ls -a -l 或 ls -la 或 ls -al方式书写
3.语法中的选项组合后还可以和参数一起使用:
如ls -al / 表示以列表的形式展示根目录下的所有(包括隐藏的)文件/文件夹

当前目录?
Linux系统的命令行终端,在启动的时候,默认会加载:
当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容
HOME目录:每个Linux操作用户在Linux系统的的个人账户目录,路径在:/home/用户名
如下图中的Linux用户是tom,其HOME目录是:/home/tom

示例1(无参数和选项)

 示例2(有参数和选项) 

 

3. 目录切换相关命令(cd/pwd)

cd命令来自英文:Change Directory

pwd命令来自英文:Print Work Directory

语法格式:

1.语法:cd [Linux路径]
cd命令无需选项,只有参数,表示要切换到哪个目录下
cd命令直接执行,不写参数,表示回到用户的HOME目录
2.语法:pwd
作用:查看当前所在的工作目录
pwd命令,无选项,无参数,直接输入pwd即可

示例1(用root用户)

示例2(用普通用户zh)

4. 相对路径和绝对路径

相对路径:以根目录位起点,描述路径的一种写法,路径描述以/开头

绝对路径:以当前路径为起点,描述路径的一种写法,路径无需以/开头

示例1(绝对路径)

如果是普通用户的话:cd /home/zh/Desktop

示例2(相对路径)

特殊路径符

. 表示当前目录,比如cd./Desktop表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致

.. 表示上一级目录,比如cd.. 即切换到上一级目录,cd../..切换到上二级的目录

~ 表示HOME目录。比如cd~ 即可切换到HOME目录或cd~/Desktop,切换到HOME内的Desktop目录

示例3

5. 创建目录(文件夹)mkdir

mkdir来自英文:Make Directory

语法格式

mkdir [-p] Linux路径
-p选项可选,表示自动创建不存在的父目录,适用于创建连续的多层级目录
参数必填,表示Linux路径,既要创建的文件夹的路径,相对路径或绝对路径均可

示例1

示例2

 注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要再HOME外操作,因为涉及到权限问题,HOME外无法创建成功。

 6. 文件操作命令1(touch、cat、more)

语法格式

1. touch Linux路径
touch命令无选项,参数必填,表示要创建的文件路径。相对、绝对、特殊路径字符均可以使用
2. cat Linux路径
cat同样没有选项,只有必填参数,参数表示:被查看文件路径。相对、绝对、特殊路径字符均可以使用
3. more Linux路径
more同样没有选项,只有必填参数,参数表示:被查看文件路径。相对、绝对、特殊路径字符均可以使用

2和3的区别
cat是直接将内容全部显示出来
more支持翻页,如果文件内容过多,可以一页一页的展示

示例1 (touch、cat命令的使用)

示例2(more命令的使用)

使用more命令查看路径为:/etc/services的文件

再查看过程中,通过空格翻页;

通过q退出查看

 7. 文件操作命令2(cp、mv、rm)

cp来源于英文单词copy

mv来源于英文单词move

语法格式

1. cp命令复制文件\文件夹 
语法:cp [-r] 参数1 参数2
-r选项,可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制去的地方

2. mv命令
用于移动文件\文件夹
语法:mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹
参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

3. rm命令
用于删除文件\文件夹
语法:rm [-r -f] 参数1 参数2 ...参数N
-r选项,可选,用于删除文件\文件夹
-f表示force,强制删除(不会弹出提示确认信息)
注:普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示,所以一般普通用户用不到-f选项
参数1、参数2...参数N表示要删除的文件或文件夹路径,用空格隔开

4.通配符" * "用来模糊匹配
*表示通配符,即匹配任意内容(包括空)
示例
text*,表示匹配人何以test开头的内容
*test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容

示例1(cp命令的使用)

复制文件

复制文件夹

 示例2(mv命令的使用)

移动文件,移动目标存在

移动文件,移动目标不存在,进行改名

示例3(rm命令的使用)

删除文件

删除文件夹 

示例4

删除所有以test开头的文件夹

注意事项

rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候,请谨慎使用!!!

如下命令,请千万不要在root管理员用户下使用

rm -rf/

rm -rf/*

效果等同于在Windows上执行C盘格式化

8. grep、wc、管道符“ | ”

 grep作用:从文件中通过关键字过滤文件行

语法格式

1. grep命令
语法:grep [-n] 关键字 文件路径
选项 -n,可选,表示在结果中显示匹配的行的行号
关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来
文件路径,必填,表示过滤文件内容的文件路径,可作为内容输入端口

2. wc命令
语法:wc [-c -m -l -w] 文件路径
-c 统计bytes数量
-m 统计字符数量
-l 统计行数
-w 统计单词数量
文件路径,被统计的文件,可作为内容输入端口

3. 管道符|
含义:将管道符左边的结果,作为右边命令的输入

示例1(grep命令的使用)

通过touch命令在HOME目录创建haha.txt,通过图形化页面编辑并保存如下内容

My name is haha.It comes from China. 

Xixi very handsome and smart.

 示例2(wc命令的使用)

 示例3(管道符“ | ”的应用)

 示例4(管道符“ | ”嵌套的应用)

先创建一个文件名为test.txt,通过图形化页面编辑并保存如下内容

Zhang San is a student,he is very smart.

Li Si is a student,he is the monitor.

9. which、find命令

1. which命令
前面的一系列命令,他们的本体其实就是一个个的二进制可执行程序,就像windows系统中的.exe文件,是一个意思,我们可以通过which命令,查看所使用的一系列的程序文件存放在哪里
语法:which 要查找的命令
2. find命令
在图形化中,我们可以通过系统提供的搜索功能,搜索指定的文件
同样,在linux系统中。我们可以同通过find命令去搜索指定的文件
*按照文件名搜索
语法:find 起始路径 -name "被查找文件名"
注:也可以搭配通配符使用
*按照文件大小搜索
语法:find 起始路径 -size + |-n[KMG]
+、-表示大于小于
n表示大小数字
KMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
例
查找小于10kB的文件:find / -size -10k
查找大于100MB的文件:find / -size +100M
查找大于1G的文件:find / -size +1G

为了示例演示,获取最大权限,可以在整个系统完成搜索我们可以切换到root用户
命令:su -root
输入密码:******

 示例1

 示例2

10. echo、tail、重定向符

语法格式

1. echo:在命令行内输出指定内容
语法格式:echo 输出内容
无选项,只有一个参数,表示要输出的内容,复杂内容可以用""包围
注:若输出内容带有空格或\等特殊符号,建议使用双引号包围

2. 反引号`
问题提出:在命令行输入echo pwd输出的时pwd,但我们的本意是想输出当前工作目录
解决方案--->使用反引号(飘号),被`包围的内容会被当作命令去执行
echo `pwd`

3. 重定向符:>和>>
>,将左侧命令的结果,"覆盖"写入到符号右侧指定的文件中
>>,将左侧命令的结果,"追加"写入到符号右侧指定的文件中

4. tail:查看文件尾部内容,跟踪文件的最新更改
语法:tail [-f -num] Linux路径
选项,-f,表示持续跟踪
选项,-num,表示,查看尾部多少行,不填默认是10行

示例1:echo命令的使用

示例2:反引号`的使用

示例3:重定向符

示例4:tail命令的使用

11. vi/vim编译器

概念

vi/vim时visual interface的简称,是Linux中最经典的文本编辑器

同图形化界面中的文本编辑器一样vi是命令行下对文本文件进行编译的绝佳选择

vim是vi的加强版,兼容vi的所有指令,不仅能编辑文本,而且还具有shell编程的功能,可以不同颜色的字体辨别语法的正确性,极大方便了程序的设计和编辑性

vi/vim编辑器的三种工作模式

1)命令模式(Command mode)

命令模式下,所敲的案件编辑器都理解为命令,以命令驱动执行不同的功能

此模式下,可以对文件内容进行文本编辑

2)输入模式(Insert mode)

也就是所谓的编辑模式、插入模式

此模式下,可以对文件内容进行自由编辑

3)底线命令模式(Last line mode)

以:开始,通常用于文件的保存、退出

命令模式下常用快捷键

模式 命令 描述
命令模式 i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置之后进入输入模式
命令模式 I 在当前行的开头,进入输入模式
命令模式 A 在当前行的结尾,进入输入模式
命令模式 o 在当前光标下一行进入输入模式
命令模式 O 在当前光标上一行进入输入模式
输入模式 esc 任何情况下输入esc都能回到命令模式

模式 命令 描述
命令模式 0 移动光标到当前行的开头
命令模式 $ 移动光标到当前行的结尾
命令模式 paguap(pgUp) 向上翻页
命令模式 pangdown(PgDn) 向下翻页
命令模式 / 进入搜索模式
命令模式 n 向下继续搜索
命令模式 M 向上继续搜索

语法格式

语法格式:
vi 文件路径
vim 文件路径
vim兼容全部的vi功能,后续将全部使用vim命令

注:
如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
如果文件路径表示的文件存在,那么此命令用于编辑已有文件

示例

通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是命令模式窗口命令模式是vi编辑器的入口和出口;

进入vi编辑器会进入命令模式,然后通过命令模式输入键盘指令,可以进入输入模式;

最后输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式

步骤

1)使用 vim hello.txt,编辑一个新文件,执行后进入的是命令模式

 按回车键

2)在命令模式内,按键盘i,进入输入模式

3)在输入模式内输入:Hello Linux

4)输入完成后,按esc回退到命令模式

5)在命令模式内,按键盘:进入底线模式

6)在底线模式内输入:wq,保存文件退出vi编辑器

7)查看文件内容

 内容已被写入

三.  Linux的用户和权限

1. Linux的root用户

1.1 概述

1)无论是Windows、MacOS还是Linux均采用多用户的管理模式进行权限管理。

2)在Linux系统中,拥有最大权限的账户名为root(超级管理员),而在前期我们一直用的都是普通用户zh

3)root用户有最大的系统操作权限,而普通用户在很多地方的权限是受阻的

例如,当我们使用普通用户在根目录下创建文件/目录时,会提示我们“权限不够,无法创建文件/目录“

普通用户的权限,一般在其HOME目录内是不受限的

一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

1.2 su和exit命令

su来源于英语单词:Switch User

语法

语法:su [-] [用户名]
-符号是可选的,表示是否在切换用户后加载环境变量(后续将会讲解),建议带上
参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root

切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl+d

注:

1)使用普通用户,切换到其他用户需要输入密码,例如切换到root用户

2)使用root用户切换到其他用户,无需密码,可直接切换(毕竟是超级管理员)

 ​​​​​

1.3 sudo命令

在我们得知root密码时,可以通过su命令切换到root得到最大权限;但是不建议长期使用root用户,避免带来系统损坏。此时我们可以使用sudo命令,为普通用户授权,临时以root身份执行

语法:

语法:sudo 其它命令
在其他命令之前,带上sudo,即可为这一条命令临时赋予root授权
但并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

 为普通用户配置sudo认证:

a. 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers

b. 在文件最后添加:zh ALL=(ALL)        NOPASSWD:ALL

c. 最后通过wq保存

d. 切换回普通用户,在根目录下创建haha文件夹测试

 

可以发现本来只能在超级用户进行的操作,通过使用sudo命令,普通用户也可进行操作

2. 用户和用户组

2.1 用户、用户组

1)Linux系统中可以配置多个用户、用户组(用户可以加入多个用户组中)

2)Linux中关于权限的管理级别有两个级别,分别是:针对用户的权限控制,针对用户组的权限控制;比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。

2.2 用户组管理

1)创建用户组

语法:

groupadd 用户组名

 2)删除用户组

语法

groupdel 用户组名

3)创建用户

语法:

useradd [-g -d] 用户名
选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

4)删除用户

语法:

语法:userdel [-r] 用户名
选项-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

5)查看用户所属组

语法:

id [用户名]
参数:用户名,被查看的用户,如果不提供则查看自身

6)修改用户所属组

语法:

usermod -aG 用户组 用户名,将指定用户加入指定组

3. 查看权限控制信息

3.1 认识权限信息

(1,表示文件、文件夹的权限控制信息;2,表示文件、文件夹所属用户;3,表示文件、文件夹所属用户组)

1)解析序号1,权限细节

权限细节共分为10个槽位:

-表示文件

d表示文件夹

I表示软连接

所属用户权限 所属用户组权限 其它用户权限
-或d或I r或- w或- x或- r或- w或- x或- r或- w或- x或-

注:“ - ”表示无此权限

2)rwx的含义

 r(read),表示读权限

w(write),表示写权限

x(Execute permission),表示执行权限

3)针对文件、文件夹的不同,rwr的含义有细微的差别

rwx 针对文件 针对文件夹
r 可以查看文件内容 可以查看文件夹内容,如ls命令
w 可以修改此文件 可以在文件夹内:创建、删除、改名等操作
x 可以将此文件作为程序执行 可以更改工作目录到此文件夹,即cd进入

4)示例:drwxr-xr-x

1)d,表示这是一个文件夹

2)rwx,表示该文件夹所属用户对该文件有rwx权限,即有读、写、执行权限;

3)r-x(第一个),表示该文件夹所属用户组对该文件有r-x权限,即有读,执行权限;无写权限;

4)r-x(最后一个),表示其他用户对该文件夹的权限是r-x,即有读,执行权限;无写权限;

4. chmod命令

5. chown命令

猜你喜欢

转载自blog.csdn.net/qq_61902168/article/details/128267522