Linux-黑马程序员

csdn推荐

目录

一、前言

二、初识Linux 1、操作系统 (1)硬件和软件

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

一个完整的计算机:

(2)操作系统

操作系统是计算机软件的一种,它主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作。

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

操作系统调动硬件实例:

常见的操作系统:

① PC端:Windows、Linux、MacOS;

② 移动端:Android、IOS、鸿蒙系统

不管是PC操作系统,还是移动操作系统,其功能都是:调度硬件进行工作,充当用户和硬件之间的桥梁

2、Linux

内核是免费、开源的,这也就代表了:任何人都可以获得并修改内核,并且自行集成系统级程序。而提供了内核+系统级程序的完整封装,就称之为Linux发行版。(内核无法被用户直接使用,需要配合应用程序才能被用户使用。在内核之上,封装系统级应用程序,组合在一起就称之为Linux发行版。)

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

不同发行版的基础命令100%是相同的,部分操作不同(如软件安装)

3、虚拟机

通过虚拟化技术在电脑内虚拟出计算机硬件,并给虚拟的硬件安装操作系统,即可得到一台虚拟的电脑,称之为虚拟机。

我们可以通过提供虚拟化的软件来获得虚拟机。如vmware软件。

在cmd命令行窗口输入命令ncpa.cpl可打开网络连接窗口

4、FinalShell

对于操作系统的使用,有两种使用形式(不论是Windows还是Linux亦或是MacOS系统,都是支持这两种使用形式的):

尽管图形化是大多数人使用计算机的第一选择,但是在Linux操作系统上,这个选择被反转了。无论是企业开发亦或是个人开发,使用Linux操作系统,多数都是使用的:命令行。这是因为:

既然决定使用命令行去学习Linux操作系统,那么就必须丰富一下工具的使用。我们使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便,主要是:

我们可以通过第三方软件,FinalShell,远程连接到Linux操作系统之上。并通过FinalShell去操作Linux系统。这样各类操作都会十分的方便。

5、WSL

WSL:Windows Subsystem for Linux,是用于Windows系统之上的Linux子系统。

其作用很简单,就是可以实现在Windows系统中获得Linux系统环境,并完全直连计算机硬件,无需通过虚拟机虚拟硬件。如下图所示:

简而言之,Windows10的WSL功能可以实现 无需单独虚拟一套硬件设备,而是直接使用主机的物理硬件来构建Linux操作系统,同时还不会影响Windows系统本身的运行。

但目前及未来趋势仍会以 在虚拟机下搭建Linux环境 的方式为主进行测试

6、虚拟机快照

在学习阶段我们无法避免的可能损坏Linux操作系统。如果损坏的话,重新安装一个Linux操作系统就会十分麻烦。VMware虚拟机(Workstation(Windows)和Funsion(Mac))支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来,在以后可以通过快照恢复虚拟机到保存的状态。

VMware Workstation操作步骤:

虚拟机快照作用:快照可以保存虚拟机的状态, 当虚拟机出现问题的时候, 可以通过预先制作的快照恢复到制作时候的状态, 用作备份用

三、Linux基础命令 1、Linux的目录结构

Linux的目录结构是一个树型结构。

Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘,如下图所示:

但Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面,如下图所示:

示例:

练习:请根据语言描述,写出对应的Linux路径

(1)在根目录下有一个文件夹test,文件夹内有一个文件hello.txt,请描述文件的路径:/test/hello.txt

(2)在根目录下有一个文件itheima.txt,请描述文件的路径:/itheima.txt

(3)在根目录下有一个文件夹itcast,在itcast文件夹内有文件夹itheima,在itheima文件夹内有文件hello.txt,请描述文件的路径:/itcast/itheima/hello.txt

2、Linux命令入门 (1)Linux命令基础格式

HOME目录和工作目录:

直接输入ls命令,表示列出当前工作目录下的内容(Linux系统的命令行终端在启动的时候,默认会加载当前登录用户的HOME目录(每个Linux操作用户在Linux系统的个人账户目录,路径在:/home/用户名)作为当前工作目录)。

(2)ls命令 ① 基本用法

② 选项&参数 3、目录切换相关命令(cd/pwd) (1)cd命令

当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录。我们可以通过cd命令,更改当前所在的工作目录。

cd命令来自英文:Change Directory

语法:cd [Linux路径]

(2)pwd命令

通过ls来验证当前的工作目录,其实是不恰当的。我们可以通过pwd命令,来查看当前所在的工作目录。

pwd命令来自:Print Work Directory

语法:pwd

4、相对路径、绝对路径和特殊路径符

练习:请根据语言描述,写出对应的路径

(1)当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径:test/hello.txt

(2)在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径:…/test/hello.txt

(3)在HOME目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的路径,需要使用符号:/test/hello.txt

5、创建目录命令(mkdir)

通过mkdir命令可以创建新的目录(文件夹)。

mkdir来自英文:Make Directory

语法:mkdir [-p] Linux路径

注:创建文件夹需要修改权限,若非root用户,请确保操作均在HOME目录内,不要在HOME外操作

练习:请通过命令在HOME目录内,创建如下路径(需使用特殊符号~)itcast/itheima/nice/666:

答:mkdir -p ~/itcast/itheima/nice/666

6、文件操作命令(touch、cat、more、cp、mv、rm) (1)touch命令

可以通过touch命令创建文件。

语法:touch Linux路径

注:touch无法联级创建文件,即如当前目录下无test文件夹,使用 touch test/test.txt 无法正确创建出 test.txt 文件。命令行会提示错误:touch: 无法创建"test/test.txt": 没有那个文件或目录

(2)cat命令

有了文件后,我们可以通过cat命令查看文件的内容。

语法:cat Linux路径

(3)more命令

more命令同样可以查看文件内容,同cat不同的是:

语法:more Linux路径

(4)cp命令

cp命令可以用于复制文件文件夹,cp命令来自英文单词:copy

语法:cp [-r] 参数1 参数2

复制文件:

复制文件夹:

(5)mv命令

mv命令可以用于移动文件文件夹,mv命令来自英文单词:move

语法:mv 参数1 参数2

将某个文件移动至某个文件夹下:

将某个文件移动至另一个不存在的文件中(即,相当于删除源文件,并将源文件内容移至新文件中),如下图所示,目标不存在,则有改名的效果:

将某个文件移动至与其名字一样的文件中(即,相当于删除源文件,并将源文件内容覆盖至目标文件中):

将某个文件夹移动至某个文件夹下:

(6)rm命令

rm命令可用于删除文件、文件夹,rm命令来自英文单词:remove

语法:rm [-r -f] 参数1 参数2 … 参数N

删除文件:

删除多个文件:

删除文件夹,如下图,必须使用-r选项才可以:

强制删除,-f选项:① 通过 su - root,并输入密码临时切换到root用户体验;② 进行操作;③ 输入exit命令,退回普通用户:

注:rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候,请谨慎使用。比如若在root管理员用户下执行命令:rm -rf /、rm -rf /* 效果等同于在Windows上执行C盘格式化

7、查找命令(which、find) (1)which命令

Linux命令本身其实就是一个个的二进制可执行程序,和Windows系统中的.exe文件是一个意思。我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里。

语法:witch 要查找的命令

(2)find命令

在Linux系统中,我们可以通过find命令去搜索指定的文件。

语法:find 起始路径 -name “被查找的文件名”

按文件名查找文件:

同样,find命令支持使用通配符 * 来做模糊查询

语法:find 起始路径 -size +|-n[kMG]

按文件大小查找文件:

查找小于10KB的文件: find / -size -10k

查找大于100MB的文件:find / -size +100M

查找大于1GB的文件:find / -size +1G

练习:

(1)请使用find命令找出:名称中带有centos的文件:find / -name “centos”

(2)请使用find命令找出:/usr 目录内大于100M的文件:find /usr -size +100M

8、grep、wc和管道符 (1)grep命令

可以通过grep命令,从文件中通过关键字过滤文件行。

语法:grep [-n] 关键字 文件路径

过滤itheima关键字:

过滤itcast关键字:

过滤code关键字,并显示行号:

(2)wc命令

可以通过wc命令统计文件的行数、单词数量等。

语法:wc [-c -m -l-w] 文件路径

不带选项,统计文件:

统计字节数:

统计字符数:

统计行数:

统计单词数:

(3)管道符

管道符:| 的含义是:将管道符左边命令的结果,作为右边命令的输入,如下图所示,cat itheima.txt的输出结果(文件内容)作为右边grep命令的输入(被过滤文件):

ls | grep Desktop,过滤ls的结果:

find / -name “test” | grep “/usr/lib64”,过滤结果,只找路径带有/usr/lib64的结果:

cat itheima.txt | grep itcast | grep itheima,可以嵌套使用(① cat itheima.txt的结果给 grep itcast 使用;② cat itheima.txt | grep itcast 的结果给 grep itheima使用):

练习:请使用cat、grep、管道符、wc命令组合,对创建的test.txt进行统计

(1)统计文件中带有itcast关键字的有几行:cat test.txt | grep itcast | wc -l

(2)统计文件中带有itheima关键字的结果中有多少个单词:cat test.txt | grep itheima | wc -w

9、echo、tail和重定向符 (1)echo命令

可以使用echo命令在命令行内输出指定内容。

语法:echo 输出的内容

在终端上显示:Hello Linux:

带有空格或等特殊符号,建议使用双引号包围(因为不包围的话,空格后很容易被识别为参数2,尽管echo不受影响,但是要养成习惯):

(2)反引号`

将命令用反引号(通常也称之为飘号)`包围后,被飘号包围的内容,会被作为命令执行,而非普通字符

(3)重定向符

重定向符:>和>>

echo “Hello Linux” > itheima.txt:

echo “Hello itheima” > itheima.txt,再次执行,覆盖新内容:

echo “Hello itcast” >> itheima.txt,再次执行,使用>>追加新内容:

(4)tail命令

使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改。

语法:tail [-f -num] Linux路径

查看/var/log/vmware-network.log文件的尾部10行:tail /var/log/vmware-network.log:

查看/var/log/vmware-network.log文件的尾部3行:tail -3 /var/log/vmware-network.log:

练习:

(1)使用echo并配合反引号,输出内容:我当前的工作目录是:`具体的工作目录路径`,并结合重定向符,将输出结果覆盖写入work.txt文件:echo “我当前的工作目录是:`pwd`” > work.txt

(2)请使用echo输出任意内容并追加到work.txt文件中,通过tail命令持续跟踪文件内容更改:echo “内容” >> work.txt、tail -f work.txt

10、vi编辑器

vivim是visual interface的简称, 是Linux中最经典的文本编辑器。同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

vivim编辑器的三种工作模式:

① 命令模式(Command mode):命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。

② 输入模式(Insert mode):输入模式也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。

③ 底线命令模式(Last line mode):以:开始,通常用于文件的保存、退出。

如下图所示,命令模式是vi编辑器的入口和出口,通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口。① 进入vi编辑器会进入命令模式;② 通过命令模式输入键盘指令,可以进入输入模式;③ 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式。

如果需要通过vi/vim编辑器编辑文件,请通过如下命令(vim兼容全部的vi功能,后续全部使用vim命令):

语法:vi 文件路径

语法:vim 文件路径

快速体验:

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

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

3.在输入模式内输入:itheima and itcast.

4.输入完成后,按esc回退会命令模式

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

6.在底线命令内输入:wq,保存文件并退出vi编辑器

命令模式快捷键

编辑模式快捷键

编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已。唯一需要记住的是:通过esc,可以退回到命令模式。

底线命令模式快捷键

在命令模式内,输入: ,即可进入底线命令模式,支持如下命令:

通过 :set paste 命令可以设置为粘贴模式,此时再进入到插入模式时,插入模式将变为 插入(粘贴)模式,如下图所示,此时可以确保我们在从外部进行复制粘贴时,复制时是什么样,粘贴过来就是什么样,不会产生格式的错乱(主要用于从外部复制内容)

11、查看命令帮助和手册

大多数手册都是全英文的,如果阅读吃力,可以通过重定向符:man ls > ls-man.txt,输出手册到文件后通过翻译软件翻译内容查看

四、Linux用户和权限 1、认识root用户

无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(超级管理员)。

root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的(普通用户的权限,一般在其HOME目录内是不受限的,一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限)。

(1)su和exit命令

su命令就是用于账户切换的系统命令,其来源英文单词:Switch User

语法:su [-] [用户名]

补充:

① 使用普通用户,切换到其它用户需要输入密码,如切换到root用户;

② 使用root用户切换到其它用户,无需密码,可以直接切换

(2)sudo命令

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

语法:sudo 其它命令

为普通用户配置sudo认证

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

② 在文件的最后添加(其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码):

③ 最后通过 :wq 保存

④ 切换回普通用户

⑤ 执行的命令,均以root运行

2、用户、用户组管理

Linux系统中可以:

Linux中关于权限的管控级别有2个级别,分别是:

(1)用户组管理

以下命令需root用户(或sudo命令)执行:

创建用户组语法:groupadd 用户组名

删除用户组语法:groupdel 用户组名

(2)用户管理

以下命令需root用户(或sudo命令)执行:

创建用户语法:useradd [-g -d] 用户名

查看用户所属组:id [用户名]

修改用户所属组(将指定用户加入指定用户组,指定的用户和用户组都必须是已存在的,否则会报错):usermod -aG 用户组 用户名

补充:在Linux中当前用户属于多个组并创建了个文件,在执行 ls -lh 命令时为什么只显示一个组?

答: 在 Linux 中,每个文件都关联一个所有者(用户)和一个组。然而,一个用户可以是多个组的成员。当你创建一个文件时,该文件的所有者会被设置为创建文件的用户,而文件的组通常会被设置为该用户的主要组(或称为初始组),除非在创建文件时显式地指定了其他组

(3)getent命令

查看当前系统中有哪些用户语法:getent passwd

共有7份信息,分别是:

用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

查看当前系统中有哪些用户组语法:getent group

包含3份信息,分别是:

组名称:组认证(显示为x):组ID

3、查看权限控制

通过ls -l 可以以列表形式查看内容,并显示权限细节

序号1,权限细节:权限细节总共分为10个槽位,如下图所示:

rwx(针对文件、文件夹的不同,rwx的含义有细微差别):

4、修改权限控制 (1)chmod命令

我们可以使用chmod命令,修改文件、文件夹的权限信息。注意,只有文件、文件夹的所属用户或root用户(或sudo命令)可以修改。

语法:chmod [-R] 权限 文件或文件夹

示例(其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限):

● chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwxr-x–x

● chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x–x

除了如上的表示方式,权限还可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。

数字的细节如下:r记为4,w记为2,x记为1,可以有:

● 0:无任何权限, 即 —

● 1:仅有x权限, 即 --x

● 2:仅有w权限 即 -w-

● 3:有w和x权限 即 -wx

● 4:仅有r权限 即 r–

● 5:有r和x权限 即 r-x

● 6:有r和w权限 即 rw-

● 7:有全部权限 即 rwx

练习:

(1)将hello.txt的权限修改为: r-x–xr-x,数字序号为:chmod 515 hello.txt

(2)将hello.txt的权限修改为: -wx-w-rw-,数字序号为:chmod 326 hello.txt

(3)序号123代表的权限是:–x-w–wx

(2)chown命令

使用chown命令,可以修改文件、文件夹的所属用户和用户组。普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户(或sudo命令)执行。

语法:chown [-R] [用户]:[用户组] 文件或文件夹

示例:

● chown root hello.txt,将hello.txt所属用户修改为root

● chown :root hello.txt,将hello.txt所属用户组修改为root

● chown root:itheima hello.txt,将hello.txt所属用户修改为root,用户组修改为itheima

● chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则

五、Linux实用操作 1、各类小技巧(快捷键) (1)ctrl + c 强制停止 (2)ctrl + d 退出或登出

注:不能用于退出vi/vim编辑器

(3)历史命令搜索 (4)光标移动快捷键 (5)清屏 2、软件安装

操作系统安装软件有许多种方式,一般分为:

(1)yum命令

在Linux命令行内使用”应用商店”方式安装,可以采用yum命令安装软件。yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。(简单来说,yum是一个联网的程序,即:联网自动化安装软件的工具)

语法:yum [-y] [install | remove | search] 软件名称

注:yum命令需要root权限,可以su切换到root,或使用sudo提权;yum命令需要联网

示例:

● yum [-y] install wget, 通过yum命令安装wget程序

● yum [-y] remove wget,通过yum命令卸载wget命令

● yum search wget,通过yum命令,搜索是否有wget安装包(-y选项在该命令中不影响结果)

(2)apt命令 - 扩展

前面学习的各类Linux命令,都是通用的。 但是软件安装,CentOS系统和Ubuntu是使用不同的包管理器。CentOS使用yum管理器,Ubuntu使用apt管理器

语法:apt [-y] [install | remove | search] 软件名称

示例,用法和yum一致,同样需要root权限:

● apt install wget,安装wget

● apt remove wget,移除wget

● apt search wget,搜索wget

3、systemctl

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启。能够被systemctl管理的软件,一般也称之为:服务。换句话说,软件要想被systemctl管理,需要本身就是个服务或用户手动将其注册为一个服务。

语法:systemctl start | stop | status | enable | disable 服务名

系统内置的服务比较多,比如:

● NetworkManager,主网络服务

● network,副网络服务

● firewalld,防火墙服务

● sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)

除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。

示例:

● yum install -y ntp,安装ntp软件(可以通过ntpd服务名,配合systemctl进行控制)

● yum install -y httpd,安装apache服务器软件(可以通过httpd服务名,配合systemctl进行控制)

补充:部分软件安装后没有自动集成到systemctl中(即,没有自动注册为一个服务),此时我们可以手动添加

4、软连接

在系统中创建软链接,可以将文件、文件夹链接到其它位置。类似Windows系统中的《快捷方式》

语法:ln -s 参数1 参数2

示例:

● ln -s /etc/yum.conf ~/yum.conf

● ln -s /etc/yum ~/yum

5、日期、时区 (1)date命令

通过date命令可以在命令行中查看系统的时间。

语法:date [-d] [+格式化字符串]

示例:

● 使用date命令本体,无选项,直接查看时间

我们还可以通过格式化字符串自定义显示格式:

文章来源:https://blog.csdn.net/weixin_53063457/article/details/139473522



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容