admin管理员组文章数量:1794759
详解Linux(基础篇)
文章目录
- 详解Linux---基础篇
- 1. Linux入门
- 1.1 Linux介绍
- 1.2 VM和CentOS的安装
- 1.3 虚拟机克隆
- 1.4 虚拟机快照
- 1.5 Linux目录结构
- 2. Linux基本操作
- 2.1 远程登录操作
- 2.2 Vi和Vim编辑器
- 2.3 开关机,用户注销
- 3. 用户管理
- 3.1 基本指令
- 3.2 用户组
- 4. 实用指令
- 4.1 运行级别
- 4.2 找回root密码
- 4.3 帮助指令
- 4.4 文件目录类指令
- 4.5 时间日期类指令
- 4.6 搜索查找类指令
- 4.7 压缩和解压指令
- 5. 组和权限
- 5.1 组的管理
- 5.2 权限的管理
- 5.3 练习巩固
本篇博客详细介绍了Linux的基础知识,从CentOS 7.6 的手把手安装,到用户组和权限的管理,每一步都有非常详细的截图和理论解释。适合新手快速入门Linux,也适合老手用来复习巩固。整理不易,望您支持。🤞🤞 本文是基于CentOS 7.6 版本讲解的,至于文中代码截图中出现的 CentOS68,只是我将这台Linux命名为 CentOS 68,并不是6.8版本,至于为什么这么命名,各位脑补吧🤦♂️。害~ 不出意外,这篇博客就是2020年的最后一篇了。心疼这一年中那些离我而去的秀发。😢
关注✨✨博主 详解Linux(进阶篇)
配套学习资料的获取方法在文末
1. Linux入门
(1)学习 linux 流程为:
- 第 1 阶段:linux 环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod, chown) 编辑工具 使用(vi vim)linux 用户管理(useradd userdel usermod)等
- 第 2 阶段:linux 的各种配置(环境变量配置,网络配置,服务配置)
- 第 3 阶段:linux 下如何搭建对应语言的开发环境(大数据,JavaEE, Python 等)
- 第 4 阶段:能编写 shell 脚本,对 Linux 服务器进行维护。
- 第 5 阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优。
- 第 6 阶段:深入理解 Linux 系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各 个环节的部署和维护方法。
(2)Linux学习方法:
1、Linux是一款操作系统,免费、开源、安全、高效、稳定、稳定、处理高并发强悍。
2、Linux是基于Unix开发的,Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。
3、Linux的历史:
- Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds由于自己不满意教学中使用的MINIX操作系统,所以在1990年底由于个人爱好设计出了Linux系统核心。
- 后来发布于芬兰最大的ftp服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来,之后Linux在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统。
4、Linux创始人:Linus Torvalds
5、Linux吉祥物:
6、Linux主要发行版:
7、Linux和Unix的关系:
1)两个创始人:
- 肯尼斯·蓝·汤普森(英语:Kenneth Lane Thompson,1943年2月4日-),小名为肯·汤普森(英语:Ken Thompson),生于美国新奥尔良。为美国计算机科学学者与软件工程师,任职于贝尔实验室Entrisphere, IncGoogle Inc。与丹尼斯·里奇同为1983年图灵奖得主。他与丹尼斯·里奇设计了B语言、C语言,创建了Unix和Plan 9操作系统,编程语言Go的共同作者。
- 丹尼斯·麦卡利斯泰尔·里奇(英语:Dennis MacAlistair Ritchie,1941年9月9日- 2011年10月12日),美国计算机科学家。骇客圈子通常称他为“ dmr”。 C语言的创造者,Unix作业系统的关键开发者,对计算机领域产生了深远影响,并与肯·汤普逊同为1983年图灵奖得主。
2)Linux发展历程
收费与否 | 收费且很贵 | 免费开源 |
软件与支持 | 大部分为收费软件 | 软件开源免费 |
安全性 | 不安全 | 安全 |
使用习惯 | 图形化界面 | 图像化和命令行 |
可定制性 | 封闭,不可定制 | 开源,可定制 |
应用场景 | 桌面操作系统 | 服务器 |
学习 Linux 需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个 Centos 系统来学习。
第一步:先安装虚拟机软件,VM
第二步:通过VM软件创建一个虚拟机空间。
第三步:在创建好的虚拟机空间上安装CentOS系统。
第四步:学习使用CentOS。
CentOS下载地址:www.centos/download/
下载DVD版本即可。
(1)安装VM。
默认安装即可。
虚拟机的网络连接有三种模式:桥接、NAT、主机模式。
- 桥接:和母机在同一个网段下,可能会造成IP冲突。
- NAT:网络地址转化,Linux可以访问外网,但外网不可访问Linux主机,不会造成IP冲突。
- 主机模式:Linux是一个独立的主机,不可访问外网。
(2)安装Linux系统
在安装之前呢,建议先拜一拜Linus Torvalds,祈祷安装顺利……😁😁
1、创建虚拟机空间。
2、使用向导,创建典型即可。
3、选择稍后安装操作系统。现在只是创建一个虚拟机空间。
4、选择对应版本。
5、给虚拟机起个好听的名字,这个并不是主机名,只是在VMware中标识这个虚拟机的名字。并选择安装位置,建议安装在非系统盘。(家里有矿的随意……)
6、指定磁盘容量。
7、编辑硬件,网卡,内存,处理器等
- 这里需要根据自己电脑的配置,自定义内存大小,处理器处理。
- 查看本机处理器数量。
- 打开电脑的 “任务管理器”
- 点击 “性能”
- 选择最下面的 “打开资源监视器”
- 再点击 “CPU”,查看右侧CPU数量。
- 查看本机处理器数量。
- 网络适配器建议选择 NAT。上面已经说了理由。
8、编辑虚拟机,挂载镜像文件。
9、选择下载的镜像文件
10、开启虚拟机,正式安装CentOS 7.6
11、鼠标在这个界面点一下,并使用上下键选择。
正在安装,稍等片片刻。
12、选择语言
13、自定义安装,选择我们需要的软件。
- 这里默认是最小安装,即:没有图形化界面的Linux系统,因为我们是刚开始学习Linux,建议还是装一个图形界面。
14、选择以下内容,点击完成,退出这个界面之后,系统会检查软件依赖关系,需要等一会。建议不要乱点,防止机器卡死。
15、编辑磁盘分区。
Linux创建分区,最少需要创建三个分区:
16、创建分区。
- 划分引导分区,/boot
- 确定分区类型为“标准分区”,文件系统为“ext4”。
- 划分swap分区。
- 确定分区类型为“标准分区”,文件系统为“ext4”。
- 将剩下的17G,都划分为根分区。/
- 接受更改。
17、配置网络连接
18、开始安装
19、设置root用户密码,创建普通用户。
然后就是漫长的等待过程了……。🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️
20、安装完成之后,重启,完成最后的配置即可。
21、接受许可
22、完成最后的配置
- 会创建一个普通用户
- 设置密码(这里的密码只能设置复杂一点,不然无法继续)
至此,大功告成。
欣赏一下吧,美丽的Linux。
23、在桌面右键,打开终端,查看IP地址。
(3)安装vmtools工具
-
介绍:
- 可以直接粘贴命令在 windows 和 centos 系统之间
- 可以设置 windows 和 centos 的共享文件夹
-
安装vmtools
- .进入 centos
- 点击 vm 菜单的->install vmware tools
- centos 会出现一个 vm 的安装包
- 点击右键解压, 得到一个安装文件
- 进入该 vm 解压的目录 ,该文件在 /root/桌面/vmware-tools-distrib/下
- 安装 ./vmware-install.pl
- 全部使用默认设置即可
- 需要 reboot 重新启动即可生效
-
在Windows母机和Linux之间设置共享文件夹
共享文件夹会默认放在Linux的 /mnt/hgfs/下。
问题:CentOS的hgfs中没有出现共享文件夹。
解决:
提示错误:无法挂载文件系统,没有这样的设备。那现在就不可以用mount工具进行挂载,那我们用vmhgfs-fuse,但是需要安装工具包,下面的命令为下载安装包。
注意:如果使用的CentOS 6 ,在上面安装过程中会报错:
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt Error: Cannot find a valid baseurl for repo: base
原因:CentOS 6 yum源停止更新。
解决:换源。
在终端中输入:
wget -O /etc/yum.repos.d/CentOS-Base.repo file.kangle.odata/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo file.kangle.odata/repo/epel-6.repo yum makecache 1.3 虚拟机克隆如果你已经安装了一台 linux 操作系统,你还想再更多的,比如想做一个集群,则必要再重新安装,你只需要克隆就可。
如果在使用虚拟机系统的时候(比如 linux),想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware 也提供了这样的功能,就叫快照管理。
在VMware左侧的虚拟机处右键,拍摄快照。
选择一个快照,转到。切换快照时,虚拟机会重启。
1.5 Linux目录结构linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此 目录下再创建其他的目录。
在Linux中,一切皆是文件。
Linux文件目录结构图 具体的目录结构:
- /bin:存放二进制可执行文件,即存放最经常使用的命令
- /sbin:s就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。即:管理员使用的指令。
- /home:存放普通用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录是以用户的账号命名的。执行完 useradd tom 指令之后,该目录下就会多一个 tom 文件。
- /root:该目录为系统管理员的主目录。
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。
- /proc:该目录是一个虚拟的目录,它是系统内存的一个映射
- /srv:serveice的缩写,该目录存放一些服务启动之后需要提取的数据。
- /sys:这是Linus2.6 内核的一个很大的变换。该目录下安装了2.6 内核中出现的一个文件系统。(以上这三个目录 proc、srv,sys,都跟Linux内核相关)
- /tmp:这个目录是存来存放一些临时文件的。
- /dev:存放设备文件。类似于Windows的设备管理器,把所有的硬件用文件的形式存储。
- /media:Linux系统会自动识别一些设备,例如:U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供给用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容。例如:我们刚才设置的共享文件。
- /opt:这是给主机额外安装软件所摆放的目录,例如:可以将MySQL数据库放在该目录下。不是安装过后的软件。
- /usr/local:这是另外一个给主机额外安装软件的目录。一般是通过编译源码方式安装的程序。安装过后的软件
- /var:这个目录下存放这不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
- /selinux[security-enhanced linux] :是一种安全子系统,它能控制程序只访问特定文件。类似于360。
- /usr:user shared resources,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files 目录。即:装软件的目录。
- /etc:存放系统配置文件和子目录。
- /lib:存放系统开机所需要的最基本的动态链接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
总结:
Linux中的目录只有一个根目录,/
Linux的各个目录存放的内容是规定好的,我们不能随意放置。
Linux系统中,一切皆是文件。
(1)Xshell
-
Xshell 是目前最好的远程登录到 Linux 操作的软件,流畅的速度并且完美解决了中文乱码的问题, 是目前程序员首选的软件。
-
Xshell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的TELNET 协议。
-
Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
特别说明:如果希望安装好 XShell 就可以远程访问 Linux 系统的话,需要有一个前提,就是Linux 启用了 SSHD 服务,该服务会监听 22 号端口。
在Linux终端中输入:setup
选择“系统服务”
查看已经启动的服务,标星号的表示已经启动。
XShell官网
(2)XFtp
XFtp是一个基于 windows 平台的功能强大的 SFTP、FTP 文件传输软件。使用了 Xftp 以后,windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。
这里使用 SFTP 协议。
登录成功之后显示如图:
2.2 Vi和Vim编辑器(1)介绍
-
所有的 Linux 系统都会内建 vi 文本编辑器。
-
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
(2)vi 和 vim 的三种常见模式
正常模式
编辑模式
命令行模式
三种模式的相互转换:
(3)Vi和Vim的快捷键
拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)。在正常模式下。
删除当前行 dd , 删除当前行向下的 5 行 5dd
在文件中查找某个单词,在命令行下输入 /关键字 , 回车 查找 , 输入 n 就是查找下一个。
设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu
编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。
在一个文件中输入 “hello” ,然后又撤销这个动作,再正常模式下输入 u
将光标移动到 第 20 行 shift+g
第一步:设置行号,set nu
第二步:在正常模式下输入:20 再按 Shift+g
2.3 开关机,用户注销 # 表示立即关机 shutdown -h now # 表示 1 分钟后关机 shutdown -h 1 # 立即重启 shutdown -r now # 就是直接使用,效果等价于关机 halt # 直接重启系统 reboot # 把内存的数据同步到磁盘,即:将没有保存的东西保存一下,以防关机丢失。(目前的 shutdown/reboot/halt 等命令均已经在关机前进行了 sync) sync注意:当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失。
可以利用普通用户登录,登录后再用 su 用户名 命令来切换成系统管理员身份。
在提示符下输入 logout 即可注销用户
使用细节: logout 注销指令在图形运行级别无效,在 运行级别 3 下有效。
3. 用户管理Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个 账号,然后以这个账号的身份进入系统
3.1 基本指令1、添加一个用户
useradd 用户名创建用户之后,默认会在 /home/ 下创建一个和用户同名的目录。例:/home/Tom 。
使用该用户登录的话,会默认进入该目录。
2、给用户指定密码
passwd 用户名3、指定用户目录
useradd -d 指定目录 用户名会在 /home/ 下创建一个指定的目录。
4、删除用户
# 不删除用户目录 userdel 用户名 # 删除用户的同时删除用户目录 userdel -r 用户名5、切换用户
# 使用 - 会显示上次登录的时间,如果不写 - 就不显示上次登录时间。 su - 用户名注意:低权限用户切换到高权限用户时,要输入密码,反之,则不需要。
当需要返回到原来用户时,使用 exit/logout 指令。
6、查询用户信息
id 用户名7、查询当前登录用户
who am i这条指令显示第一次登陆到这个系统的用户,例如:使用root登陆到系统,然后又使用 su - 用户名 ,这时使用 who am i 显示的仍然是root的信息。
3.2 用户组定义:类似于角色,系统可以对有共性/权限的多个用户进行统一的管理。可以将多个用户划分到一个组,然后给这个组授予某权限,那么这一组中的所有用户都将拥有该权限。
初始组合附加组:
-
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
-
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
如果在创建用户的时候,没有创建组,则默认会创建一个和用户同名的组,并把该用户归于该组下。
1、新增一个组
groupadd 组名2、删除一个组
groupdel 组名3、创建用户时将其归于某个组
useradd -g 组名 用户名4、修改用户的组
usermod -g 组名 用户名用户和组相关的文件
(1)/etc/passwd 文件
- 用户的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
-
第1字段:用户名称
-
第2字段:密码标志
-
第3字段:UID(用户ID)
- 0: 超级用户(root不一定是管理员,但UID为0的一定是管理员)
- 1-499: 系统用户(伪用户),系统命令会调用这些用户。
- 500-65535: 普通用户(centos7 从1000开始计算)
-
第4字段:GID(用户初始组ID)[不推荐修改初始组]
-
第5字段:用户说明
-
第6字段:家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
-
第7字段:登录之后的Shell
用户在XShell中发起指令:cd /home ,Linux内核是无法识别的,需要一个翻译官,这个翻译官就是Shell,常用的Shell是Bash。
(2)/etc/shadow 文件
口令的配置文件 ,九个字段
-
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
第1字段:用户名
-
第2字段:加密密码
- 加密算法升级为SHA512散列加密算法
- 如果密码位是“!!”或“*”代表没有密码,不能登录
-
第3字段:密码最后一次修改日期。时间戳
- 使用1970年1月1日作为标准时间,每过一天时间戳加1
-
第4字段:两次密码的修改间隔时间(和第3字段相比)
-
第5字段:密码有效期(和第3字段相比)
-
第6字段:密码修改到期前的警告天数(和第5字段相比)。(密码到期之后会禁止登陆)
-
第7字段:密码过期后的宽限天数(和第5 字段相比)
- 0:代表密码过期后立即失效
- -1:则代表密码永远不会失效。
-
第8字段:账号失效时间
- 要用时间戳表示
-
第9字段:保留
-
时间戳换算:
(3)/etc/group 文件
- 组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
- 第一字段:组名
- 第二字段:组密码标志
- 第三字段:GID
- 第四字段:组中附加用户
(4)用户相关的文件
用户的家目录
用户的邮箱,用户之间传递邮件。
用户模板目录
(1)运行级别说明:
- 0 :关机
- 1 :单用户【找回丢失密码】
- 2:多用户状态没有网络服务
- 3:多用户状态有网络服务
- 4:系统未使用保留给用户
- 5:图形界面
- 6:系统重启
常用运行级别是 3 和 5 ,也可以指定默认运行级别。
在 centos7 以前,运行级别是在/etc/inittab 文件中设置的。
使用init 指令切换运行级别。
init 0 :表示关机(2)指定运行级别:
1、运行级别
# 运行级别3 multi-user.target # 运行级别5 graphical.target2、查看当前默认的运行级别:
systemctl get-default3、设置默认的运行级别(重启后生效)
systemctl set-default xxx.target 4.2 找回root密码每个版本的指令有所差异,这里以CentOS 7.6为例。
具体步骤如下:
1、先重启系统,进入开机界面后(这里一定要快,在这个界面只有5秒的时间就会切换到用户登录界面),在开机界面中按 e 进入编辑模式。
2、 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以 Linux16开头内容所在的行数,在行的最后面输入:init=/bin/sh。
3、输入完成后,直接按快捷键:Ctrl+x 启动系统,进入单用户模式
4、接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图
5、然后输入 passwd ,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可( 密码长度最好8位以上,但不是必须的),密码修改成功后,会显示passwd…的样式,说明密码修改成功。(注意:这里不能使用小键盘的数字键!!!)
6、接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)
7、 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效了。
8、然后使用修改后的密码登录到系统,可以选择使用指令 passwd root 修改刚才改好的密码,改为好记的。
4.3 帮助指令在Linux中,隐藏文件是以 . 开头的。
# 列出所有文件,包括隐藏文件 ls -a指令可以组合使用:
# 单列显示所有文件,等同于 ll ls -l # 单列显示所有文件,包括隐藏文件。 ls -al 或 ls -la # 查看指定目录下的内容 ls /root -al # 加个选项 h 表示显示的时候按人类便于阅读的方式展示 ls -lhman 指令获得帮助信息
# 查看 ls 指令的帮助信息 man lshelp 指令,获得 shell 内置命令的帮助信息(英文显示)
help cd 4.4 文件目录类指令1、显示当前工作目录的绝对路径
pwd- 绝对路径:总是从跟路径 / 出发。
- 相对路径:从当前目录出发。
2、切换目录指令,cd
# 切换到自己的家目录 cd ~ # 回到当前目录的上一层 cd .. # 使用绝对路径切换到 root 目录 cd /root 案例 # 使用相对路径到/root 目录, 比如在 /home/tom cd ../../root3、创建目录指令,mkdir
# mkdir 不加参数,默认只能创建一个mul。 mkdir 目录 例:mkdir /home/dog :在home目录下创建dog目录 # 创建多级目录 mkdir -p 目录 例:mkdir -p /home/animal/dog :在home下创建animal,再再animal下创建dog目录。4、删除空目录
# 删除空目录,如果不是空目录,则不能使用该指令 rmdir [选项] 目录 # 删除非空目录,rf 表示递归强制删除 rm -rf 目录5、创建空文件,touch
touch 文件名称 例:touch A.txt6、拷贝指令,cp
# source代表拷贝的是哪个文件。 dest代表把文件拷贝到哪个地方。 # -r 选项表示递归复制整个文件夹 cp [选项] source dest 例:cp A.txt test/ : 表示将A.txt 文件复制到test目录下 例:cp -r test test01 :表示将当前目录下的test目录和test目录中的所有内容拷贝到 当前目录下的test01目录下。 # 强制覆盖不提示的方法:\\cp \\cp -r test test017、删除文件或目录指令,rm
# -r 递归删除整个文件夹 # -f 强制删除不提示 rm [选项] 目录或文件8、移动或重命名文件或目录,mv
# 重命名。(同一目录下) mv oldFileName newFileName 例:mv A.txt AA.txt # 移动文件(剪切) mv 源路径 目的路径 例: mv AA.txt ../test : 将当前目录下AA.txt文件移动到和当前目录同级的test目录下。 例:mv B.txt ../test01/BB.txt : 移动并且重命名9、查看文件内容,cat
# -n 显示行号 cat [选项] 文件管道命令,将前一个指令的结果,再交给下一个指令去处理。格式 前一个指令 | 指令 。
# 将 cat -n /etc/profile 指令的处理结果,再交给 more去处理 cat -n /etc/profile | moremore 指令:
- 是一个基于VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
- more 指令中内置了若干快捷键(交互的指令)。如下:
space | 向下翻页 |
q | 立刻离开more,不再显示文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
Enter | 向下翻一行 |
:f | 输出文件名和当前行的行号 |
10、查看大文件内容,less。
less 文件-
less 指令用来分屏查看文件内容,它的功能与more 指令类似,但是比more 指令更加强大,支持各种显示终端。
-
less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
-
基本语法如下:
space | 向下翻页 |
pagedown | 向下翻页 |
pageup | 向上翻页 |
/字串 | 向下搜索 字串 的功能;n:向下查找。N:向上查找 |
?字串 | 向下搜索 字串 的功能;n:向上查找。N:向下查找 |
q | 离开当前程序 |
11、输出指令,echo。
echo [选项] [输出内容] # 输出 Hello,Linux 到控制台 echo "Hello,Linux" # 输出内容到文件 echo "Hello,Linux" > test.txt # 输出环境变量 echo $PATH # 输出主机名 echo $HOSTNAME12、查看文件开头,head指令
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
# 语法 head [选项] 文件 # 查看指定行数的文件,比如:查看前5行 head -n 5 /etc/profile # 查看 /etc/profile 文件的前10行 head /etc/profile13、tail 指令
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
# 语法,默认查看文件尾 10 行内容 tail 文件 # 查看文件尾5行 tail -n 5 文件实时监控该文档的所有更新
tail -f 文件14、输出重定向> 和 追加 >> 指令
# echo 指令本来是将内容输出到终端,使用重定向指令 > ,之后,就可以将内容重定向输出到文件 MyFile.txt 中。 如果指定文件不存在就会先创建该文件。 echo "Hello,World" > MyFile.txt指令 > 是覆盖写,指令 >> 是追加写。
# 将列表的内容重定向写入文件中 ls -l > 文件 例:ls -l > a.txt # 列表的内容追加到文件的末尾 ls -l >> 文件 例:ls -l >> a.txt # 将文件 1 的内容覆盖到文件 2,可以实现文件的复制粘贴 cat 文件1 > 文件2 # 显示当前日历显示到终端 cal15、软链接指令,ln。
ln,软链接也称为符号链接,类似于windows 里的快捷方式,主要存放了链接其他文件的路径。
创建软链接:
# 给原文件创建一个软链接 ln -s [原文件或目录] [软链接名] 例:ln -s /root myRoot删除软链接:(后面不要写 / ,否则会认为它是一个目录)
rm /home/myRoot16、查看历史执行指令,history
# 查看历史执行的所有文件(默认显示所有) history # 只查看最近的 10 条记录 history 10 # 执行曾经执行过的指令 !指令序号 4.5 时间日期类指令1、显示或设置日期
# 显示当前时间 date # 显示当前年份 date +%Y # 显示当前月份 date +%m # 显示当前是一月中的哪一天 date +%d # 显示年月日时分秒 date "+%Y-%m-%d %H:%M:%S" # 设置时间 date -s 字符串时间 例:date -s “2020-11-03 20:02:10” # 显示日历,不加选项,显示本月日历 cal [选项] # 显示 2020 年日历 cal 2020 4.6 搜索查找类指令1、find指令
find 指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。
可以使用通配符。
# find [搜索范围] [选项]选项:
-name | 按照指定的文件名查找模式查找文件 |
-user | 按照属于指定用户查找模式查找文件 |
-size | 按照指定文件大小查找模式查找文件 |
2、locate 指令
locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。
Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更 新 locate 时刻。
由于 locate指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb指令创建 locate数据库。
locate 要查询的文件 # 查看某个指令在哪个目录下,比如 ls 指令在哪个目录 which 指令 例:which reboot3、grep指令和管道符号 |
grep 过滤查找。
管道符 |,表示将前一个命令的处理结果输出传递给后面的命令处理。
# 语法 grep [选项] 查找内容 源文件选项:
-n | 显示匹配行及行号 |
-i | 忽略字母大小写进行匹配 |
1、gzip/gunzip 指令
- gzip:压缩
- gunzip:解压
2、zip/unzip 指令
- zip:用于压缩文件或目录。
- unzip: 用于解压的。
3、tar指令
# 打包文件或目录,压缩后的文件格式是 xxx.tar.gz, tar [选项] xxx.tar.gz 要打包的文件或目录(多个文件用空格隔开)选项:
-c | 产生 .tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压 .tar 文件 |
在 linux 中的每个用户必须属于一个组,不能独立于组外。
在 linux 中每个文件有所有者、所在组、其它组的概念。
- 所在组:文件所在的组就是所在组
- 其他组:非所在组对于该文件来说就是其他组。
- 所有者:一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
1、查看文件所有者:
2、修改文件或目录所有者,chown
chown 用户名 文件名 # 修改所有者和所属组 chown 用户:组名 文件或目录 # 递归修改目录下的所有文件的所有者 chown -R 用户 目录3、创建组
groupadd 组名 useradd -g 组名 用户用户创建文件之后,这个文件的所在组就是该用户的所在组。
4、修改组
# 改变文件或目录的所在组 chgrp 组名 文件/目录 # 递归修改目录的所有文件的所属组 chgrp -R 组名 目录5、改变用户所在组。
注意:使用root用户改变用户的组之后,用户再已登录的情况下,并不能立即拥有改变后组的权限。该用户退出重新登录,即可拥有修改后组的权限。
# 改变用户所在组 usermod -g 新组名 用户 # 改变用户登录的是初始目录(默认用户登录时会进入自己的组目录),前提是用户需要有进入到新目录的权限 usermod -d 目录名 用户 # 查看某个组是否存在 cat /etc/group | grep 组名 5.2 权限的管理1、权限介绍
ll 显示信息如下:
这一列共有10位,每一位都有其含义:
- 0位:确定文件类型
- i:表示链接,相当于Windows中的快捷方式。
- d:表示目录,相当于Windows中的文件夹。
- c:表示字符设备,比如:鼠标,键盘。
- b:表示块设备,比如:硬盘。
- -:表示是普通文件。比如:txt 文件。
- 1-3位:确定文件的所有者对该文件的权限。—User
- 4-6位:确定所在组的其他用户对该文件的权限。—Group
- 7-8位:确定其他用户拥有对该文件的权限。—Other
2、rwx 权限详解
-
作用到文件
- r:read,可读。
- w:write,可修改,但不代表可以删除。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
- x:execute,可执行。
-
作用到目录:
- r:read,可读。ls 查看目录内容。
- w:write,可修改,可以在目录内创建、删除文件和重命名目录。
- x:execute,可进入该目录。
-
rwx 也可以用数字来表示:r=4,w=2,x=1
- 这三个数字刚好可以组合出唯一的权限,比如:6只能是r+w,3只能是w+x,等。
-
文件的读写权限和目录的读写权限独立。
- 即:如果一个目录只有 x 权限,而目录下文件有 rw 权限,则用户可以进入该目录,但不能使用 ls 之类的指令列出文件列表,但是可以读和写目录下的文件。
3、其他说明
- 红色:
- 如果是普通文件,这个数字就是1
- 如果是目录,这个数字就是该目录下的文件和子目录的总数。
- 黄色:文件大小,单位是字节。如果是目录,则显示 4096。
- 粉色:修改日期。
4、修改权限
- 第一种方式:使用 +、- 修改权限
- u:user,属主。
- g:group,属组。
- o:other,其他用户。
- a:all,所有人。相当于 u+g+o
- 第二种方式:使用数字修改权限。
- r=4
- w=2
- x=1
(1)练习权限相关指令
1、使用 cat 登录,创建一个文件,file.txt,并写入:”I am cat"
2、查看 fruitFile.txt 的权限。
可以看到权限为:
- User:读写
- Group:读
- Other:读
3、现在将该文件的写权限给 dog 。即:给同组用户赋予 w 权限。
4、dog登录,尝试写file.txt 文件。
- 先要进入到 /home/cat 目录,因为file文件是cat创建的,自然就在 cat 的家目录下,也就是 /home/cat 目录下。
- 但是现在dog是无法进入 /home/cat 目录的,我们看一下 /home/cat 目录的权限:
- 可以看到,同组用户是没有任何权限的。
- 我们将 /home/cat 目录的 x 权限赋予同组用户。
- 可以看到,这时 dog 可以进入 /home/cat 目录,但是无法使用 ls 之类的指令列出目录下的内容,这是因为我们并没有给 同组用户 r 的权限。
6、现在再次使用 cat 或root 用户,赋予 /home/cat 目录同组用户的 r 权限。
7、dog用户可以使用 ll 指令展示目录下的内容。并且可以修改 /home/cat 目录下的 file.txt 文件。
8、dog 用户尝试在 /home/cat 目录下创建文件 dogFile.txt。
- 无法创建,原因是 dog 用户只拥有对该目录的 rx,权限,并没有 w 权限。
- 只有 w 权限才可以在目录中创建、删除文件。
9、再次赋予 dog 用户 w 的权限。
10、dog 用户现在可以创建 dogFile.txt 文件。
11、apple用户尝试进入 /home/cat 目录,发现并不能进入。
- 因为 /home/cat 目录对其他组用户没有赋予任何权限。
12、现在将 apple 用户修改组到 animal组中,尝试进入 /home/cat 目录,修改 file.txt 文件。
- 发现修改用户组之后, apple还是无法进入 /home/cat 目录。
- 原因:我们修改组的时候,apple用户处于登录状态,他的组信息已经是确定了的。
- 解决:暂时的解决方案apple用户是重新登录。
- apple用户重新登录,可以进入 /home/cat 目录。
(2)验证文件和目录的权限的独立性
1、查看 /home/cat 目录和该目录下 file.txt 文件的权限。
2、修改 /home/cat 目录对同组用户的权限仅为 x。file.txt文件的权限不变。
3、dog 用户登录,并进入到 /home/cat 目录。
- dog用户虽然没有对 /home/cat 目录的 rw 权限,但是却不影响它查看和修改 file.txt 文件。
这便是文件和目录的权限的独立性
✨✨学习资料获取✨✨ 关注公众号 “程序小哥”,回复关键字“Linux”获取。
【系列文章】 1. 详解Linux(进阶篇) 2. Git&GitHub(基础) 3. Git&GitHub(进阶) 4. java多线程 5. JavaScript 总结 6. SpringMVC(一) 7. SpringMVC(二) ……
关注博主🤞🤞
版权声明:本文标题:详解Linux(基础篇) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686945852a121167.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论