Linux入门课程-微课学习

第一章 Linux基础

初识Linux

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux的发行版可以理解为将Linux内核与应用软件打成一个包。

下图罗列了一些较为知名的Linux发行版本。
在这里插入图片描述
目前国内Linux系统更多的应用于服务器中,而Windows则更多用于桌面操作系统
在这里插入图片描述

Linux下载

本小节主要介绍Linux系统安装,基于VMware虚拟机及CentOS-7.7版本

CentOS官方下载地址:http://vault.centos.org/

阿里云镜像下载地址:https://mirrors.aliyun.com/centos/
以下对各个版本的ISO镜像文件,进行区分说明:

CentOS-7.0-x86_64-DVD-1503-01.iso : 标准安装版(推荐)
CentOS-7.0-x86_64-NetInstall-1503-01.iso : 网络安装镜像(从网络安装或者救援系统)
CentOS-7.0-x86_64-Everything-1503-01.iso: 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
CentOS-7.0-x86_64-GnomeLive-1503-01.iso: GNOME桌面版
CentOS-7.0-x86_64-KdeLive-1503-01.iso: KDE桌面版
CentOS-7.0-x86_64-livecd-1503-01.iso : 光盘上运行的系统,类拟于winpe
CentOS-7.0-x86_64-minimal-1503-01.iso : 精简版,自带的软件最少

Linux安装

VMware:15.5 pro版
CentOS:7.7版本
1:安装并开启虚拟机,点击“创建新的虚拟机”
在这里插入图片描述
2:选择 典型(默认选项),对VMware熟悉的可以选择自定义配置,根据自身需求配置
在这里插入图片描述
3:选择已下载好的CentOS安装文件,继续下一步
在这里插入图片描述
4:设置虚拟机名称,选择虚拟机存放位置(默认为C盘目录,建议更改到其他盘中)
在这里插入图片描述
5:分配磁盘容量(CentOS 7 64位最低建议20G,可根据自身设备及需求适当增加,后期可调整)
在这里插入图片描述
6:创建完成(此处可根据自身需求自定义硬件)
在这里插入图片描述
7:启动虚拟机后会出现如下选项:(选择第一项,直接安装)
Install CentOS 7 安装CentOS 7
Test this media & install CentOS 7 测试安装文件并安装CentOS 7
Troubleshooting 修复故障
在这里插入图片描述

选择安装过程中使用的语言,选择英文、键盘选择美式键盘
在这里插入图片描述
8:设置时间
在这里插入图片描述
时区选择上海,确认显示时间与当前无误。点击Done
在这里插入图片描述
9:选择预安装文件
在这里插入图片描述
勾选Server with Gui,点击Done
在这里插入图片描述
10:选择安装位置,在这里可以进行磁盘划分
在这里插入图片描述

选择i wil configure partitioning(我将会配置分区),然后点击done
在这里插入图片描述
如下图所示,点击加号,选择/boot,分配200M给boot分区。最后点击Add
在这里插入图片描述
用上述方法继续添加/与swap分区
在这里插入图片描述
点击AcceptChanges(接受更改),完成磁盘分配
在这里插入图片描述
11:设置主机名与网卡信息
在这里插入图片描述
首先打开网卡,查看是否能获取到IP地址,接着更改主机名后点击Done
在这里插入图片描述
12:最后选择Begin Installation(开始安装)
在这里插入图片描述
13:设置root密码
在这里插入图片描述
设置完后点击Done
在这里插入图片描述
14:点击USER CREATION 创建管理员用户
在这里插入图片描述
输入用户名密码后点击Done
在这里插入图片描述
15:接下来等待系统安装完毕重启系统就大功告成了
在这里插入图片描述
在这里插入图片描述

Linux关机

Linux系统大多数应用于服务器领域,较少进行关机处理,关机将会导致服务器无法正常被访问。

正确的关机流程为:sync > shutdown > reboot > halt

关机指令为:shutdown ,可以通过 man shutdown 来查看帮助文档

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来查看帮助文档。例如你可以运行如下命令关机:

shutdown –h 20 ‘This server will shutdown after 20 mins’ 这个命令告诉大家,计算机将在20分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 10:24 系统会在今天10:24关机

shutdown –h +20 20分钟后关机

shutdown –r now 系统立马重启

shutdown –r +20 系统20分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

在重启或者关闭系统之前,建议运行sync命令,将内存中的数据写入磁盘中,避免数据丢失

关机的命令: shutdown –h now halt poweroff 和 init 0
重启命令: shutdown –r now reboot init 6

在这里插入图片描述

Linux远程登录

Linux系统常作用于服务器搭建,云服务器主机一般统一由提供商统一管理。

若想操作服务器上的Linux系统,则需要通过一些远程登录客户端实现。

Windows系统中常见的远程登录客户端有:Putty,SecureCRT,SSH Secure Shell等(文中以Putty为示例)

Putty下载地址:http://www.putty.org/
XShell下载地址:https://xshell.en.softonic.com/ (支持文件传输,功能更强大)

打开已安装的Putty后,进入连接界面。

Linux系统中是通过ssh服务实现的远程登录功能,默认ssh服务端口号为 22。

于下图第三步骤时填入服务器的外网ip地址即可(外网ip地址可于服务器供应商提供的后台服务器管理列表中获得)
在这里插入图片描述
同时也可以通过设置一个别名将上述配置存储,便于下次使用时快速登录,无需再次填写外网ip地址
在这里插入图片描述
点击Open后即成功登录服务器,接下来提示输入账号(云服务器默认账号名一般为:root)
在这里插入图片描述
接着就是输入密码
在这里插入图片描述
验证密码后成功登录Linux服务器
在这里插入图片描述
在这里插入图片描述

Linux系统目录结构

成功登录Linux系统后,在命令窗口中输入下例命令:

ls / 

默认目录结构如下:
在这里插入图片描述
树状Linux系统目录结构:
在这里插入图片描述
在这里插入图片描述

Linux系统目录文件介绍

/bin:该目录存放着最经常使用的命令。
/boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:该录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:该目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:该目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:这里存放的是系统管理员使用的系统管理程序。

/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:该目录存放一些服务启动之后需要提取的数据。

/sys:该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:这个目录是用来存放一些临时文件的。

/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。(重要目录)

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:该目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:这是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

注意:下列几个目录属于重要目录,日常操作Linux系统再没了解对应操作并做系统备份时避免删除或者随意更改内部文件。

/etc:系统中的配置文件,盲目更改可能会导致系统无法启动。

/bin, /sbin, /usr/bin, /usr/sbin:系统预设的执行文件的放置目录。

/var:大部分系统中运行的程序的日志文件都存储在该目录中。
在这里插入图片描述

Linux文件基础属性

同Windows相似,Linux系统是一种典型的多用户系统,不同用户的权限不同。

Linux对不同用户访问同一文件的权限进行区分,以此来保护系统的安全性。

Linux中可以使用 ll 或者 ls -l 命令来显示文件属性及文件所属的用户和组
在这里插入图片描述
上图中,boot文件的第一个属性为“d”,“d”在Linux中表示该文件为目录文件。同理还有:

d:目录;
-:文件;
l:链接文档;
b:装置文件里面的可供储存的接口设备(可随机存取装置);
c:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

紧接着的字符中,均以“rwx”三个参数为一组的组合。
r:可读(read);
w:可写(write);
x:可执行(execute)。
注意:三个权限的位置不会改变,如果没有权限,则会用“-”(负号)代替
在这里插入图片描述
在这里插入图片描述

Linux文件属主和属组

在这里插入图片描述
每个文件都有特定的归属者,该用户拥有文件的所有权限。

同时,Linux中用户是按组分类,一个用户属于一个或多个组。

Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

上图中罗列的文件夹属主与属组均为root。

对于 root 用户来说,一般情况下,文件的权限对其不起作用
在这里插入图片描述

Linux文件与目录管理

Linux的目录结构为树形结构,其中根目录/为顶级目录。

可以通过挂载与解除挂载将其他目录从目录树中添加或移除。

接下来先了解一下如何区分绝对路径与相对路径。

绝对路径:由根目录/开头,例如:/usr/lib/rpm
相对路径:不由根目录/开头,例如:/usr/lib/rpm 要访问 /usr/lib/locale时,则可以用:cd …/locale

常用于处理目录的命令:
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录,或修改文件与目录的名称
在这里插入图片描述

Linux用户与用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户帐号可以帮助管理员跟踪用户在系统中的操作行为,并控制他们对系统资源的访问。同时也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有唯一的用户名和各自的口令密码。

用户登录时输入正确的用户名和口令密码后,就能进入系统和自己的主目录。

通过以下几个方面,可以实现用户账号的管理:

用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理
在这里插入图片描述
在这里插入图片描述

Linux系统用户账号的管理-添加账号

添加账号

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用

useradd 选项 用户名

选项:

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名: 指定新账号的登录名。

实例:

1:该命令创建了一个用户csc,其中-d和-m选项用来为登录名sam产生一个主目录 /home/csc(/home为默认的用户主目录所在的父目录)

useradd –d  /home/csc -m csc

在这里插入图片描述
2:该命令创建了一个用户mm,该用户通过/bin/sh的Shell登录,它属于group主用户组,同时又属于w3cschool和root两个附加组。

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等

useradd -s /bin/sh -g group –G w3cschool,root mm

(注意:此处涉及两个新组织,创建新组织需要使用: groupadd group及groupadd w3cschool)
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理
在这里插入图片描述

Linux系统用户账号的管理-删除帐号

当账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除账号需要使用userdel命令:

userdel 选项 用户名

选项:

-r:用于把用户的主目录一并删除。

实例:

1:删除用户csc在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录

userdel -r csc

在这里插入图片描述
在这里插入图片描述

Linux系统用户账号的管理-修改帐号

修改用户账号命令可根据需求更改用户有关属性,例如用户号、主目录、用户组、登录Shell等。

修改用户信息可以使用usermod命令,如下:

usermod 选项 用户名

选项: (与useradd相似)

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-l 部分系统可用,指定一个新账号,将原来旧用户名改为新的用户名。

实例:

1:将用户csc的Shell修改为csh,主目录更改为/home/a,用户组更改为developer

usermod -s /bin/csh -d /home/a –g developer csc

在这里插入图片描述

Linux系统用户账号的管理-用户口令管理

用户管理中最为关键的就是用户口令管理。新账号创建时没有口令密码,系统会锁定账号,无法使用,必须先设置口令密码后才能使用,可以设置为空口令。

通过passwd可以修改口令,超级用户有权修改自己和其他用户的口令,普通用户仅能为自己修改口令

passwd 选项 用户名

选项:

-l:锁定口令,即禁用账号。
-u:口令解锁。
-d:使账号无口令。
-f :强迫用户下次登录时修改口令

如果默认不填写用户名,则默认修改当前登录账户

修改口令命令如下:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

普通用户修改口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要输入原口令。(为了安全考虑,建议设置教复杂口令密码)

Linux系统用户组的管理-增加用户组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的增加、删除和修改实际上就是对/etc/group文件的更新。

通过groupadd命令可以增加一个新的用户组

groupadd 选项 用户组

选项:

-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

实例:

1:创建一个新组w3cschool,同时指定该组的标识号为88

groupadd -g 88 w3cschool

在这里插入图片描述

Linux系统用户组的管理-删除用户组

通过groupdel命令可以删除用户组
在这里插入图片描述

groupdel w3cschool

执行上述命令,可将之前创建的w3cschool用户组删除
在这里插入图片描述

Linux系统用户组的管理-修改用户组

通过groupmod命令可以修改用户组属性

groupmod 选项 用户组

选项:

-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字

实例:

1:将w3cschool用户组的标识号改为888,并将组名改为csc

groupmod –g 888 -n csc w3cschool

用户在登录后可以通过newgrp命令来切换用户组,使用其他用户组的权限
2:将当前用户切换至root用户组,前提条件是root组是该用户的主组或者附加组

newgrp root

在这里插入图片描述

账号相关文件

用户与用户组相关的信息都存在于一些系统文件中,如/etc/passwd,/etc/shadow,/etc/group等。

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

上述例子中可以了解到,/etc/passwd每行都记录着一个用户的信息,其中每行以“ : ”(冒号)分隔为7个字段
在这里插入图片描述
1、用户名:是代表用户账号的字符串。

–通常长度不超过8个字符,由大小写字母和/或数字组成。不能有(:)、(.),且不以(-)与(+)开头。

2、口令:系统中,存放着加密后的用户口令。

–虽为加密串,但由于/etc/passwd对所有用户可见,故存于隐患。目前许多Linux系统使用/etc/shadow存放加密口令,而在/etc/passwd中仅存放一个特殊字符。

3、用户标识符:是一个整数,系统内部用它来标识用户。

–标识符通常与用户名相对应,如若几个用户名同时设置相同的标识符,则系统将他们视为同一个用户,但可拥有不同的口令、主目录、登录Shell等。(标识符的取值范围在065535之间,0为超级用户root的标识符、199系统保留为管理帐号,100以后为普通用户)

4、组标识号:记录用户所属的用户组。

–对应着/etc/group文件中的一条记录。

5、注释性描述:记录着用户的一些个人情况。

–记录着用户的真实姓名、电话、地址等信息,没有统一的格式,较无实际性用途。

6、主目录:用户的起始工作目录。

–用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

7、Shell:用户登录后,启动的进程,负责将用户的操作传给内核。

–Shell是用户与Linux系统之间的接口。

–系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

–用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

“伪用户”这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

常见的为用户如下:

bin: 拥有可执行的用户命令文件
sys: 拥有系统文件
adm: 拥有帐户文件
uucp: UUCP使用
lp: lp或lpd子系统使用
nobody: NFS使用

/etc/shadow中的记录行与/etc/passwd中的类似,它由pwconv命令根据/etc/passwd中的数据自动产生。

同样也是通过“:”隔开
在这里插入图片描述
1、登录名:
与/etc/passwd文件中的登录名相一致的用户账号。

2、口令:
字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。

3、最后一次修改时间:
表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。

4、最小时间间隔:
指的是两次修改口令之间所需的最小天数。

5、最大时间间隔:
指的是口令保持有效的最大天数。

6、警告时间:
字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

7、不活动时间:
表示的是用户没有登录活动但账号仍能保持有效的最大天数。

8、失效时间:
字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

9、标志

一个组中可以有多个用户,一个用户也可以属于不同的组。(多对多关系)

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组信息存放于/etc/group文件中。同/etc/passwd类似,由冒号“:”分隔
在这里插入图片描述
1、组名:
用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

2、口令:
字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。

3、组标识号:
与用户标识号类似,也是一个整数,被系统内部用来标识组。

4、组内用户列表:
是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组
在这里插入图片描述

第二章 Linux常用命令

ls命令

ls命令为list的缩写。通过ls命令可以查看Linux文件夹中包含的文件及其文件权限(包括目录、文件夹、文件权限)、目录信息等等

ls [选项] [目录/文件]

-a :列出目录所有文件,包含以.开始的隐藏文件
-A :列出除.及…的其它文件
-r :反序排列
-t :以文件修改时间排序
-S :以文件大小排序
-h :以易读大小显示
-l :除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
本章后继提及的命令均可以通过下列几个通用选项参数查看命令相关信息。

–help 查看该命令的帮助文档

–version 显示版本信息

实例:
按大小反序显示文件详细信息

ls -lrS

列出当前目录中所有以"s"开头的目录的详细内容

ls -l t*

ls -l命令也可以直接使用 ll 命令查看,效果相同

cd命令

cd命令用于实现目录跳转

cd [目录名]

实例:

1:进入根目录

cd /

2:入 “home” 目录

cd ~

3:把上个命令的参数作为cd参数使用

cd !$

4:进入上一次工作路径

cd -

5:返回上一级目录

cd ..

在这里插入图片描述

pwd命令

pwd命令用于查看当前工作目录路径。

实例:

1:查看当前路径

pwd

2:查看当前目录的绝对路径 (注意大写P)

pwd -P

在这里插入图片描述

mkdir命令

mkdir命令用于创建文件夹

mkdir [选项] [参数]

选项:

-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录

实例:

1:当前工作目录下创建名为 csc 的文件夹

mkdir csc

2:在 tmp 目录下创建路径为 user/csc 的目录,若不存在,则创建

mkdir -p /tmp/user/csc

3: 当前工作目录下创建名为 w3cschool 的文件夹,并设置只有文件主拥有读、写和执行权限,其他人无权访问

mkdir -m 700 w3cschool

在这里插入图片描述

rm命令

删除一个目录中的一个或多个文件或目录。

如果使用 rm 来删除文件,通常仍可以将该文件恢复原状

rm [选项] [文件]

选项:

-d: 删除可能仍有数据的目录 (只限超级用户)
-f : 略过不存在的文件,不显示任何信息
-r : 同时删除该目录下的所有目录层
-v :详细显示进行的步骤
-i : 进行任何删除操作前必须先确认,同时删除多个文件时每个文件都会提醒确认操作。
-I : 同时删除多个文件(大于3个)时,只提醒一次。

实例:

1:删除任何.log格式的文件,-i 删除前逐一提醒确认操作

rm -i *.log

在这里插入图片描述
2:删除csc目录中的子目录及子目录中所有的档案

rm -r csc

3:删除csc目录中的子目录及子目录中所有的档案,并且不用逐一确认

rm -rf csc

4:删除以 -r 开头的文件(下列用法可避免-r被识别为选项,同理可应用于其他场景)

rm -- -r*

在这里插入图片描述

rmdir命令

从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限

注意:不能删除非空目录

rmdir [选项] [目录]

选项:

-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除

实例:

1:当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除:

rmdir -p parent/child/boy

在这里插入图片描述

mv命令

mv命令使用方法比较特殊。

1:将源文件名改为目标文件名(改名)

mv [文件名] [文件名]

2:将文件移动到目标目录(移动文件)

mv [文件名] [目录名]

3:目标目录已存在,将源目录移动到目标目录,目标目录不存在则改名。(移动目录或者改名)

mv [目录名] [目录名]

实例:

1:将文件 test.log 重命名为 test1.txt

mv test.log test1.txt

2:将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中

mv log1.txt log2.txt log3.txt /test3

3:将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖

mv -i file1.txt file2.txt

4:移动当前文件夹下的所有文件到上一级目录

mv * ../

cp命令

将源文件复制至目标文件,或将多个源文件复制至目标目录

注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

cp [选项] [参数]

选项:

-i:提示
-r:复制目录及目录内所有项目
-a:复制的文件与原文件时间一样

实例:

1:复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖

cp -ai a.txt test

2:为 a.txt 建议一个链接(快捷方式)

cp -s a.txt link_a.txt

在这里插入图片描述

df命令

显示磁盘空间使用情况。

获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。

默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

df [选项] [参数]

选项:

-a,–all:包含所有的具有 0 Blocks 的文件系统
-B,–block-size={SIZE}: 使用 {SIZE} 大小的 Blocks
-h,–human-readable:使用人类可读的格式(预设值是不加这个选项的…)
-H,–si:很像 -h,但是用 1000 为单位而不是用 1024
-i,–inodes:列出 inode 资讯,不列出已使用 block
-k,–kilobytes:就像是 --block-size=1024
-l,–local:限制列出的文件结构
-m,–megabytes:就像 --block-size=1048576
-P,–portability:使用 POSIX 输出格式
-t,–type=TYPE:限制列出文件系统的 TYPE
-T,–print-type:显示文件系统的形式
-x,–exclude-type=TYPE:限制列出文件系统不要显示 TYP

实例:

1:显示文件系统的磁盘使用情况统计数据:

df

在这里插入图片描述
第一列指文件系统的名称;第二列指该文件系统的总内存(以1K为单位);第三列为已用内存;第四列为可用内存;第五列为内存已使用量百分比;最后一栏指该文件系统的挂载点(所在目录)
2:查看总量统计信息

df --total 

在这里插入图片描述
注意最后一行出现了一条总量统计信息
3:显示所有磁盘空间占用情况

df -h

在这里插入图片描述
可见原先以K为单位的计量变为了更易读的G、M、K单位

4:将 /etc 底下的可用的磁盘容量以易读的容量格式显示

df -h /etc

在这里插入图片描述
在这里插入图片描述

du命令

du命令用于显示目录或文件的大小。

du会显示指定的目录或文件所占用的磁盘空间

du [选项] [文件或目录名称]

选项:

-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-c :除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

实例:

1:只列出当前目录下所有文件夹容量(包含隐藏文件夹):

du

在这里插入图片描述
显示所有目录占用空间,包括以 . 开头的隐藏文件,最后一行显示该目录总的空间占用量
2:检测根目录下每个目录占用容量(以G/M/K显示容量)

du -smh /*

在这里插入图片描述

fdisk命令

fdisk用于创建和维护分区表,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表

fdisk [必要参数][选择参数]

必要参数:

-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
选择参数:

-s<分区编号> 指定分区
-v 版本信息
菜单操作选项:

m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能

实例:

1:列出所有分区信息

fdisk -l

在这里插入图片描述
2:找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息(组合使用,注意图片中的细节提示)
在这里插入图片描述
通过输入m,可以查看菜单命令介绍。(上方也有罗列介绍)
在这里插入图片描述
如果要退出可以输入 q,则退出并不保存应用。反之如果输入 w 则退出且保存并应用操作。
在这里插入图片描述

chgrp命令

chgrp命令用于变更文件或目录的所属群组。

Linux系统中,文件或目录权限的掌控由拥有者及所属群组来管理。

可以使用chgrp指令去变更文件与目录的所属群组,参数以群组名称或群组识别码皆可

chgrp [选项] [属组名] [文件名]

选项:

-c或–changes :效果类似"-v"参数,但仅回报更改的部分。
-f或–quiet或–silent :不显示错误信息。
-h或–no-dereference :只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或–recursive :递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose :显示指令执行过程。
–reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

实例:

1:改变文件的群组属性,将csc文件由root组改为bin组。(可通过ll命令查看文件属性)

chgrp -v bin csc

在这里插入图片描述
2:根据指定文件改变文件的群组属性(将w3cschool目录的所属组改为跟csc目录一致)

chgrp --reference=csc w3cschool

在这里插入图片描述
在这里插入图片描述

chown命令

chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件以空格分开的要改变权限的文件列表,支持通配符。

一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限

chown [选项] [user][:[group]] [文件]

选项:

-c :显示更改的部分的信息
-f :忽略错误信息
-h :修复符号链接
-v :显示详细的处理信息
-R :处理指定目录以及其子目录下的所有文件
参数:

user :新的文件拥有者的使用者 ID
group :新的文件拥有者的使用者组(group)

实例:

1:将文件 csc 的属主设置为 boy,属组设置为 bin :

chown boy:bin csc

在这里插入图片描述
在这里插入图片描述

chmod命令

Linux的文件调用权限分为三级 : 属主、属组、其他访问者。chmod 可以调整文件的访问权限

chmod [选项] [文件]

在这里插入图片描述
主要选项:

[ugoa...][[+-=][rwxX]...][,通过逗号隔开可设置多组权限...]

u:表示该文件的拥有者; g:表示与该文件的拥有者属于同一个群体(group)者; o:表示其他以外的人; a:表示这三者皆是。
+:表示增加权限; -:表示取消权限; =:表示唯一设定权限。
r:表示可读取; w:表示可写入; x:表示可执行; X:表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他选项:

-c:若该文件权限确实已经更改,才显示其更改动作
-f:若该文件权限无法被更改也不要显示错误讯息
-v:显示权限变更的详细资料
-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

实例:

1:chmod也可以使用数字来表示权限。

chmod 777 csc

777三位数分别表示属主、属组、及其他人的权限。

其中 r = 4, w = 2, x = 1。三种权限均开启则r+w+x=7
在这里插入图片描述
2:将csc目录设置为所有人都可写入

chmod ugo+w csc

可以发现ugo+r与a+r实现的效果是一样的
在这里插入图片描述
3:将csc与w3cschool目录的写入权限设置为,属主与属组均有权限,其他人不可写入

chmod ug+w,o-w csc w3cschool

在这里插入图片描述
在这里插入图片描述

cat命令

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。

cat [选项] [文件]

选项:

-n 或 --number:由 1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 --show-ends:在每行结束处显示 $。

-T 或 --show-tabs:将 TAB 字符显示为 ^I。

-A 或 --show-all:等价于 -vET。

-e:等价于"-vE"选项;

-t:等价于"-vT"选项;

实例:

1:【创建文件用法】使用cat命令创建test1.txt文件,并写入内容

cat>test1.txt<<EOF

上述命令使用后即可开始输入内容,最后另启一行,使用EOF结束。

EOF为结束字符,可以更改为其他字符,但是注意大小写,且结束输入必须依靠该字符
在这里插入图片描述
2:【查看文件】查看test1.txt的内容,并带上行号

cat -n test1.txt

在这里插入图片描述
3:【追加文件】将 test1.txt 的内容加上行号写入 a1.txt 中,覆盖原来的内容,文件不存在则创建它

cat -n test1.txt>a1.txt

cat -n test1.txt>a1.txt 中的 > 为覆盖原来的内容
cat -n test1.txt>>a1.txt 中的 >> 为不覆盖原来的内容

在这里插入图片描述
在这里插入图片描述

more命令

more 命令类似 cat ,不过会以分页的形式显示,更方便使用者逐页阅读。

而最基本的指令就是按空白键(space)就往下一页显示;

按 b 键就会往回(back)一页显示;

使用中的说明文件,请按 h 。

more [选项] [文件]

选项:

+n :从笫 n 行开始显示
-n :定义屏幕大小为n行
+/pattern :在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c :从顶部清屏,然后显示
-d :提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l :忽略Ctrl+l(换页)字符
-p :通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s :把连续的多个空行显示为一行
-u :把文件内容中的下画线去掉

常用操作命令:

Enter :向下 n 行,需要定义。默认为 1 行
Ctrl+F :向下滚动一屏
空格键 :向下滚动一屏
Ctrl+B :返回上一屏
= :输出当前行的行号
:f :输出文件名和当前行的行号
V :调用vi编辑器(vi编辑器将会在下一章节介绍)
!命令 :调用Shell,并执行命令
q :退出more

实例:

1:显示文件中从第2行起的内容。(可以使用cat命令将a1.txt多写入一些内容)

more +2 a1.txt

在这里插入图片描述

less命令

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

less [选项] [文件] 

选项:

-b:<缓冲区大小> 设置缓冲区的大小
-e:当文件显示结束后,自动离开
-f:强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g:只标志最后搜索的关键词
-i:忽略搜索时的大小写
-m:显示类似more命令的百分比
-N:显示每行的行号
-o :<文件名> 将less 输出的内容在指定文件中保存起来
-Q:不使用警告音
-s:显示连续空行为一行
-S:行过长时间将超出部分舍弃
-x:<数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b:向后翻一页
d:向后翻半页
h:显示帮助界面
Q:退出less 命令
u:向前滚动半页
y:向前滚动一行
空格键:滚动一页
回车键:滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

实例:

1:查看文件(按 q 可以退出less操作)

less a1.txt

2:ps查看进程信息并通过less分页显示

ps -ef |less

在这里插入图片描述

head命令

head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。

选项:

-n<行数> 显示的行数(行数为复数表示从最后向前数)
-c<字节> 显示的字节

实例:

1:显示 a1.txt 文件中前 20 行

head a1.txt -n 2

在这里插入图片描述

tail命令

tail 命令可用于查看文件的内容,通过-f选项可以用于查阅正在变动的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容

tail [选项] [文件]  

选项:

-f:循环读取
-q:不显示处理信息
-v:显示详细的处理信息
-c<数目>:显示的字节数
-n<行数>:显示文件的尾部 n 行内容
–pid=PID:与-f合用,表示在进程ID,PID死掉之后结束
-q , --quiet , --silent:从不输出给出文件名的首部
-s , --sleep-interval=S:与-f合用,表示在每次反复的间隔休眠S秒

实例:

1:该命令会一直刷新test.log的内容,直到按下快捷键(Ctrl+C)中止命令

tail -f test.log

在这里插入图片描述

which命令

which命令用于查找文件。

which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

which [选项] [文件]

选项:

-n<文件名长度>:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w :指定输出时栏位的宽度。

实例:

通过which命令查看bash的绝对路径。

which bash

在这里插入图片描述
在这里插入图片描述

find命令

find命令用来在指定目录下查找文件。

任何位于参数之前的字符串都将被视为欲查找的目录名。

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find   path  -option   [ -print ]   [ -exec -ok |xargs |grep ] [command  {} \;]

参数说明:

path:要查找的目录路径。
:表示$HOME目录
. :表示当前目录
/ :表示根目录
print:表示将结果输出到标准输出。

exec:对匹配的文件执行该参数所给出的shell命令。 ( 形式为command {} ;,注意{}与;之间有空格 )

ok:与exec作用相同。(区别在于,在执行命令之前,都会给出提示,让用户确认是否执行)

|xargs:与exec作用相同 ,起承接作用。(区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等)

options :表示查找方式。

options选项:

-name filename: 查找名为filename的文件

-perm :按执行权限来查找

-user username:按文件属主来查找

-group groupname:按组来查找

-mtime -n +n :按文件更改时间来查找文件,-n指n天以内,+n指n天以前

-atime -n +n :按文件访问时间来查找文件,-n指n天以内,+n指n天以前

-ctime -n +n :按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-nogroup :查无有效属组的文件,即文件的属组在/etc/groups中不存在

-nouser :查无有效属主的文件,即文件的属主在/etc/passwd中不存

-type b/d/c/p/l/f:查是块设备、目录、字符设备、管道、符号链接、普通文件

-size n[c] :查长度为n块[或n字节]的文件

-mount :查文件时不跨越文件系统mount点

-follow :如果遇到符号链接文件,就跟踪链接所指的文件

-prune :忽略某个目录

实例:

1:按文件名查找。

find ~ -name '*.txt' -print

在这里插入图片描述
2:在当前目录及子目录中查找不是a1开头的txt文件

find . -name "a1*" -prune -o -name "*.txt" -print

在这里插入图片描述
3:在当前目录除csc之外的子目录内搜索 txt文件

find . -path "./csc" -prune -o -name "*.txt" -print   

在这里插入图片描述

ln命令

ln 命令非常重要,它的功能是为某一个文件在另外一个位置建立一个同步的链接(类似于快捷方式)。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用 ln 命令链接(link)它就可以,不必重复的占用磁盘空间

ln [选项] [源文件/目录] [目标文件/目录]

选项:

-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

软链接:不可以删除源文件,删除源文件导致链接文件找不到,出现文件红色闪烁

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接 硬链接:可以删除源文件,链接文件可以正常打开
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

实例:

1:对文件创建软连接

ln -s php.txt linkphp

在这里插入图片描述
2:对文件创建硬连接

ln php.txt lnphp

在这里插入图片描述

grep命令

grep 命令用于查找文件里符合条件的字符串。

grep [选项] [规则] [目录/文件]

常用选项:

-A<显示行数> 或 --after-context=显示行数:显示匹配字符后n行
-B<显示行数> 或 --before-context=显示行数:显示匹配字符前n行
-C<显示行数> 或 --context:显示匹配字符前后n行
-c 或 --count:计算符合样式的列数
-i:忽略大小写
-l:只列出文件内容符合指定的样式的文件名称
-f:从文件中读取关键词
-n:显示匹配内容的所在文件中行数
-R:递归查找文件夹

grep的规则表达式:

^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
$  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
.   #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。  
*  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.*       #一起用代表任意字符。  
[]       #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 
[^]    #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。  
\(..\)  #标记匹配字符,如'\(love\)',love被标记为1。   
\<     #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>     #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}     #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 
x\{m,\}    #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。  
x\{m,n\}  #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。  
\w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。  
\W   #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。  
\b    #单词锁定符,如: '\bgrep\b'只匹配grep

实例:

1:在当前目录中查找后缀包含txt并且其中包含World字符串的文件,并且打印出文件中对应行的内容。(查找条件注意大小写区分)

grep World *txt

在这里插入图片描述
2:在当前目录中查找并显示包含 H 或者 C 字符的内容行

grep -E 'H|C' a1.txt

在这里插入图片描述
在这里插入图片描述

date命令

date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记

date [选项] [+格式]date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

选项:

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间

格式:

时间部分:

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00~23)
%I : 小时(01~12)
%k : 小时(0~23)
%l : 小时(1~12)
%M : 分钟(00~59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00~61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期部分:

%a : 星期几 (Sun~Sat)
%A : 星期几 (Sunday~Saturday)
%b : 月份 (Jan~Dec)
%B : 月份 (January~December)
%c : 直接显示日期与时间
%d : 日 (01~31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001~366)
%m : 月份 (01~12)
%U : 一年中的第几周 (00~53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0~6)
%W : 一年中的第几周 (00~53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00~99)
%Y : 完整年份 (0000~9999)

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
当不需要增加多余的0(例如2020/01/01…),则可以在标记中插入 - 符号,例如 date ‘+%-H:%-M:%-S’,则会获得2020/1/1…
当使用root身份更改系统时间,需要配合clock -w 命令将系统时间写入CMOS中,这样下次重新开机时才会保持正确值

实例:

1:显示当前时间在这里插入图片描述
在这里插入图片描述

cal命令

cal用于显示公历(阳历)日历

cal [选项] [参数]

选项:

-3:显示前一月,当前月,后一月三个月的日历
-m:显示星期一为第一列
-j:显示在当前年第几天
-y:[year]显示当前年[year]份的日历

参数:

如果一个参数,则表示年份。 两个参数,则表示月份与年份。

实例:

1:显示制定年月日期

cal 12 2019

在这里插入图片描述
2:将星期一作为第一列,显示前中后三个月

cal -3m

在这里插入图片描述

ps命令

ps命令用于显示当前进程 (process) 的状态

ps [options]

选项:

-A:显示所有进程
a:显示所有进程
-a:显示同一终端下所有进程
c:显示进程真实名称
e:显示环境变量
f:显示进程间的关系
r:显示当前终端运行的进程
-aux:显示所有包含其它使用的进程

ps 工具标识进程的5种状态码:

D:不可中断
R:运行
S:中断
T:停止
Z:僵死

实例:

1:显示当前所有进程

ps -A

在这里插入图片描述
2:与grep联用查找某进程

ps -aux | grep bash

在这里插入图片描述

kill命令

kill命令用于删除执行中的程序或工作。

kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。

若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数:

-l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号>  指定要送出的信息。
[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

PID可以通过ps命令查看
实例:

1:杀死进程

kill 123

2:强制杀死进程

kill -KILL 123

3:彻底杀死进程

kill -9 123

free命令

free命令用于显示内存状态。

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等

free [选项] [-s <间隔秒数>]

选项:

-b :以Byte为单位显示内存使用情况。
-k :以KB为单位显示内存使用情况。
-m :以MB为单位显示内存使用情况。
-h :以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:B = bytes、K = kilos、M = megas、G = gigas、T = teras。
-o :不显示缓冲区调节列。
-s<间隔秒数> :持续观察内存使用状况。
-t :显示内存总和列。

实例:

1:显示内存使用情况

free

在这里插入图片描述
在这里插入图片描述

yum命令

yum是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令

yum [选项] [要进行的操作] [操作对象]

yum常用命令:

yum check-update:列出所有可更新的软件清单命令
yum update:更新所有软件命令
yum install <package_name>:仅安装指定的软件命令
yum update <package_name>:仅更新指定的软件命令
yum list:列出所有可安裝的软件清单命令
yum remove <package_name>:删除软件包命令
yum search :查找软件包 命令
清除缓存命令:

yum clean packages:清除缓存目录下的软件包
yum clean headers:清除缓存目录下的
headersyum clean oldheaders:清除缓存目录下旧的
headersyum clean, yum clean all (= yum clean packages; yum clean oldheaders):清除缓存目录下的软件包及旧的headers

实例:

1:安装 pam-devel

yum install pam-devel

在这里插入图片描述

第三章 VIM

什么是vim

vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vim键盘图:
在这里插入图片描述

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下不会输入字符内容,只能执行命令。

常用命令:

i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: (英文冒号) 切换到底线命令模式,以在最底一行输入命令。

输入模式:

在命令模式下按下 i 就进入了输入模式。

在输入模式中,可以使用以下按键:

字符按键以及Shift组合:输入字符(正常的字符输入)
ENTER:回车键,换行
BACK SPACE:退格键,删除光标前一个字符
DEL:删除键,删除光标后一个字符
方向键:在文本中移动光标
HOME/END:移动光标到行首/行尾
Page Up/Page Down:上/下翻页
Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
ESC:退出输入模式,切换到命令模式

底线命令模式:

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有:

q:退出程序
w:保存文件
按ESC键可随时退出底线命令模式。
在这里插入图片描述

vi/vim使用实例

1:首先进入csc目录,通过下列命令在vim中打开a1.txt文件

vim a1.txt

在这里插入图片描述
2:按下 i 进入输入模式,通过方向键控制光标对错误单词进行修改
在这里插入图片描述
3:更改完文本后按ESC键退出输入模式,重新进入命令模式。
在这里插入图片描述
4:在命令模式中按下 : (冒号)进入底线命令模式,并输入wq保存并退出vim编辑器

移动光标的方法

基础光标移动:

h 或 向左箭头键(←):光标向左移动一个字符 (常用)。
j 或 向下箭头键(↓) :光标向下移动一个字符 (常用)。
k 或 向上箭头键(↑) :光标向上移动一个字符 (常用)。
l 或 向右箭头键(→):光标向右移动一个字符 (常用)

可以通过输入数组后再加上上述命令,实现一次性移动n行的效果。例如“10j”或“10↓”可一次性向下移动10行

[Ctrl] + [f] :屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)。

[Ctrl] + [b]:屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)。

[Ctrl] + [d]:屏幕『向下』移动半页。

[Ctrl] + [u]:屏幕『向上』移动半页。

+:光标移动到非空格符的下一行。

  • :光标移动到非空格符的上一行。

n< space>: n 表示【数字】,例如 20< space> 光标会向后面移动 20 个字符距离。

0 或功能键[Home] :移动到这一行的最前面字符处 (常用)。

$ 或功能键[End] :移动到这一行的最后面字符处 (常用)。

H :光标移动到这个屏幕的最上方那一行的第一个字符。

M:光标移动到这个屏幕的中央那一行的第一个字符。

L :光标移动到这个屏幕的最下方那一行的第一个字符。

G :移动到这个档案的最后一行(常用)。

n :n为数字,移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行。

gg:移动到这个档案的第一行,相当于 1G (常用)。

n< Enter>:n 为数字,光标向下移动 n 行 (常用)。

删除、复制与粘贴

【删除】

x与X :x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 退格键) (常用)。
n< x>:n为数字,表示连续向后删除n个字符。例如10x,则连续向后删除10个字符。
dd:删除光标所在的那一整行 (常用)。
ndd:n为数字。删除光标所在的向下n行,例如 20dd,则是删除光标向下 20 行 (常用)。
d1G:删除光标所在到第一行的所有数据。
dG:删除光标所在到最后一行的所有数据。
d$:删除光标所在行的最后一个字符。
d0:删除光标所在行的第一个字符

【复制与粘贴】

yy:复制光标所在的那一行 (常用)。
nyy:复制光标所在的向下 n 行。例如 20yy,则是复制 20 行 (常用)。
y1G:复制光标所在行到第一行的所有数据
yG:复制光标所在行到最后一行的所有数据
y0:复制光标所在的那个字符到该行行首的所有数据
y$:复制光标所在的那个字符到该行行尾的所有数据

p与P:p将已复制的数据在光标下一行粘贴,P 则为贴在光标上一行粘贴 (常用)。
J :将光标所在行与下一行的数据结合成同一行(合并行)。
c :重复删除多个数据。例如向下删除 10 行,[ 10cj ](注意大小写,不要与上面的J混淆)
u:复原前一个动作(撤销操作) (常用)。

[Ctrl]+r:重做上一个动作 (常用)。

.(就是一个点) :重复前一个动作 (常用)

快捷键需要在命令模式中操作使用

进入输入模式的按钮说明

i,I 进入输入模式:i 从当前光标所在处输入; I 从当前光标所在行的第一个非空格处开始输入。 (常用)

a,A 进入输入模式:a 从当前光标所在的下一个字符处开始输入; A 从光标所在行的最后一个字符处开始输入。(常用)

o,O 进入输入模式:o 从目前光标所在的下一行处插入新的一行并开始输入; O 为在目前光标所在处的上一行插入新的一行。(常用)

r,R 进入取代模式:r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止。(常用)

使用上述按键时,vim界面左下角会出现[–INSERT–]或[–REPLACE–]的字样,表示进入输入模式
[Esc]:退出编辑模式,回到一般模式中。 (常用)

:w :将编辑的数据写入硬盘档案中。(常用)
:w!:若文件属性为[只读]时,强制写入该档案。(依然受账号权限限制)
:q :离开 vi。(常用)
:q!:强制退出,若曾修改过档案,又不想储存直接退出,可以使用该命令。
:wq:储存后离开,若为 :wq! 则为强制储存后离开。 (常用)
ZZ :若档案没有改动,则不储存离开;若档案已经被更动过,则储存后离开。
:w [filename]:将编辑的数据储存成另一个档案。(类似另存为)
:r [filename] :在编辑的数据中,读入另一个档案的数据。亦即将 [filename] 这个档案内容追加到光标所在行后面

! 在vim中常用作强制操作

行号的显示与关闭

代码编辑常需要使用到对行号的定位。

通过下列按钮可以实现行号的开启与关闭。

:set nu :显示行号,设定之后,会在每一行的前缀显示该行的行号。
:set nonu:取消行号显示

第四章 LinuxPHP环境搭建

准备工作-预备安装包

所需安装包:

nginx:nginx-1.8.0.tar.gz
php:php-7.1.1.tar.gz
mysql:mysql-5.6.21.tar.gz
libxml2:libxml2-2.9.1.tar.gz
openssl:openssl-1.0.1e.tar.gz
zlib:zlib-1.2.3.tar.gz
pcre:pcre-8.36.tar.gz

安装包下载链接:https://pan.baidu.com/s/1KDwBIikBJtQHTZHqm0AKCA

提取码:cxy5

本章节主要通过PHP环境安装来加深对Linux的基础命令的使用。

课程中仅提供基础环境搭建,如需搭建线上项目运行环境,建议可以在课程学习之余了解更多的相关环境搭建详情及对应的权限部署等知识。

如果对这方面知识尚未较全面掌握,但是又急需搭建线上环境,建议可以下载使用第三方提供的一键安装包。

例如PHP一键环境:

lnmp 宝塔面板 云服务器用户也可以用平台提供的第三方镜像

准备工作-连接工具

前面章节中都是通过Putty连接服务器。

接下来我们需要将已下载好的安装包上传到Linux系统中。

我们将会通过rz/sz命令行工具配合Xshell连接工具实现文件上传至Linux系统。

1:在Linux系统中安装rz/sz命令行工具。

安装命令:

yum install lrzsz

在这里插入图片描述
2:打开Xshell连接工具,并连接Linux服务器后,执行rz命令
在这里插入图片描述
选择对应文件后即开始上传文件到Linux中。(依此方法将前面提及的预备安装包上传至Linux中)
在这里插入图片描述
在这里插入图片描述
MySQL的安装包较大,需要较长的上传时间,建议可以晚上电脑挂机上传。(该文件建议单独上传)
不建议一次性上传太多文件,会导致上传失败。如若失败可通过Ctrl+c中断命令

准备工作-解压安装包

1:首先创建 /www/web 用于存入程序代码; /www/source 环境的安装目录; /www/lnmp 用于存放安装软件。

通过如下命令创建:

mkdir -p /www/{lnmp,source,web}

2:并将之前的安装包移动到/www/lnmp文件夹中。

mv libxml2-2.9.1.tar.gz mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz nginx-1.8.0.tar.gz openssl-1.0.2u.tar.gz pcre-8.36.tar.gz php-7.4.1.tar.gz zlib-1.2.3.tar.gz /www/lnmp

在这里插入图片描述
3:进入lnmp文件夹,使用find命令解压文件

cd /www/lnmp/
find ./*.tar.gz -exec tar zxvf {} \;

解压完后的目录。
在这里插入图片描述
准备工作-安装工具
通过yum安装编译过程中需要的编译工具和小程序。如:gcc、gd库、cmake等等。

通过如下命令:

yum install -y gcc gcc-c++ make sudo autoconf libtool-ltdl-devel gd-devel \
        freetype-devel libxml2-devel libjpeg-devel libpng-devel \
        openssl-devel curl-devel patch libmcrypt-devel \
        libmhash-devel ncurses-devel bzip2 \
        libcap-devel ntp sysklogd diffutils sendmail iptables unzip cmake

在这里插入图片描述

准备工作-创建用户

接下来我们创建2个用户,分别用来启动MySQL和Nginx。

通过如下命令创建用户,并给予权限

groupadd mysql
useradd -r mysql -g mysql
groupadd www
useradd -r www -g www

在这里插入图片描述

安装Nginx

安装Nginx之前,需要先安装3个依赖包。

pcre:在使用 nginx 的 rewrite 模块的时候,需要有pcre库的支持。
openssl:在使用ssl功能时,需要有 openssl库的支持。
zlib:在使用gzip模块时,需要有zlib库的支持。
1:安装pcre

cd /www/lnmp/pcre-8.36
./configure
make
make install

初次安装切记, ./configure 之后需要按一下“回车”,等待配置,配置后再输入make,然后再次“回车”,等待编译,最后输入make install
2:安装 openssl

cd /www/lnmp/openssl-1.0.2u
./config
make
make install

3:安装 zlib

cd /www/lnmp/zlib-1.2.3
CFLAGS="-O3 -fPIC" ./configure
make && make install

4:安装 Nginx

Nginx安装过程中参数较多,教程中我们以最简化安装。进入Nginx目录中可以使用 ./configure --help命令查看参数。以下介绍几个常用的命令。

–prefix=PATH:要安装到的目录
–sbin-path=PATH:指定Nginx二进制文件的路径,没指定的话这个路径依赖 --prefix 选项
–conf-path=PATH:如果在命令行未指定配置文件,那么将会通过 --prefix 指定的路径去查找配置文件
–error-log-path=PATH:错误文件路径,Nginx写入错误日志文件地址
–pid-path=< path>:Nginx master进程pid写入的文件位置,通常在var/run下
–user=< user>:worker进程运行的用户
–group=< group>:worker进程运行的组
–with-http_ssl_module:开启 ssl 模块
–with-zlib=DIR:设置 zlib 的源码目录
–with-openssl=DIR:设置 openssl 的源码目录
–with-pcre=DIR:设置 pcre 的源码目录

接下来继续Nginx安装步骤

cd /www/lnmp/nginx-1.8.0

./configure --user=www --group=www --prefix=/www/source/nginx --with-pcre=/www/lnmp/pcre-8.36 --with-zlib=/www/lnmp/zlib-1.2.3 --with-openssl=/www/lnmp/openssl-1.0.2u

make && make install

安装成功后通过ls /www/source 命令查看,发现有nginx,证明安装成功
在这里插入图片描述

安装 MySQL

1:将已上传的安装包复制到/usr/local,并解压后将目录名改为mysql

cd /www/lnmp
mv mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz /usr/local
cd /usr/local
tar -xzvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.46-linux-glibc2.12-x86_64 mysql

2:在/usr/local/mysql目录下创建data目录

mkdir /usr/local/mysql/data

3:创建mysql用户组和用户

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql

4:设置权限

chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

5:编译安装并初始化MySQL

此处可以先检查是否有安装链接库文件等小工具

rpm -qa|grep libaio

如若未安装可通过如下命令安装:

yum install  libaio-devel.x86_64
yum -y install numactl

开始初始化

cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

初始化成功
在这里插入图片描述
6:编辑配置文件my.cnf (标注区域,记住将#号去掉,并填入对应参数)
在这里插入图片描述
7:启动MySQL服务器

/usr/local/mysql/support-files/mysql.server start

启动成功
在这里插入图片描述
8:添加软连接,重启MySQL服务

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart

9:登录MySQL,修改密码(默认为空,直接回车)

mysql -u root -p
输入密码:为空回车
set password for root@localhost = password('w3cschool');

在这里插入图片描述

安装PHP

1:安装依赖包libxml2。

cd /www/lnmp/libxml2-2.9.1
./configure --with-python=no
make && make install

先介绍一下PHP常用的编译参数:

–prefix:安装到的目录
–enable-fpm:开始 fpm 模式,nginx 下必需开启
–enable-fpm-user:fpm 的启动账户
–enable-fpm-group:fpm 的启动账户组
–with-openssl:开启 openssl
–with-libxml-dir:开启 libxml
–with-zlib:开启 zlib
–enable-mbstring:开启 mbstring
–with-mysqli=mysqlnd:开启 mysqli
–with-pdo-mysql:开启 pdo mysql
–with-gd:开启gd库
–enable-sockets:开启 sockets
–with-curl:开启 curl
–enable-maintainer-zts:开启 maintainer zts,以后安装多线程的话,这个必须开启

2:配置命令:

cd /www/lnmp/php-7.4.1

./configure --prefix=/www/source/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-libxml-dir --with-zlib --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=/usr/local/mysql/ --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-sockets --with-curl --enable-maintainer-zts

如若遇到下列问题,可根据解决方法处理后再次运行配置步骤 error: Package requirements (sqlite3 >
3.7.4) were not met

error: Package requirements (sqlite3 > 3.7.4) were not metNo package
‘sqlite3’ found

解决方案,运行命令:yum install libsqlite3x-devel -y

error: Package requirements (oniguruma) were not met

error: Package requirements (oniguruma) were not metNo package
‘oniguruma’ found

解决方案,运行命令:yum install oniguruma-devel -y

3:配置无误后即可运行make进行编译

make

4:运行测试命令。

make test

在这里插入图片描述
该步骤会让你输入邮箱

4:编译通过后,先停止PHP-FPM服务

systemctl stop php-fpm

5:然后使用make install 进行安装

make install

环境配置

1:PHP配置

cd /www/source/php/
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
cp /www/lnmp/php-7.1.1/php.ini-production lib/php.ini

2:启动 php-fpm

/www/source/php/sbin/php-fpm

3:Nginx配置

cd /www/source/nginx/conf/
vim nginx.conf

将 nginx.conf 中的 server 保存成如下

server {
    listen       80;
    server_name  localhost;
 
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
 
    root    /www/web;
    index   index.html index.php;
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
 
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
 
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /www/web$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
 
        include        fastcgi_params;
    }
}

4:启动 Nginx

/www/source/nginx/sbin/nginx

测试环境

1:在 /www/web/ 目录下创建一个index.php,并写入如下内容

cd /www/web/
vim index.php
<?php
phpinfo();

在这里插入图片描述
2:修改 index.php 所属组

chown -R www:www /www/web/

3:查看localhost页面

本地搭建的同学可以直接浏览器访问localhost。

服务器搭建的同学可以通过curl localhost访问,不过在命令行中页面会被以文本的形式呈现

curl  localhost

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值