linux-note-summary
linux-note-summary
本文相当于linux的参考文档,相关内容相比于网课更加详细。
本文转载于:Linux操作系统学习笔记整理 - 知乎 (zhihu.com) ,用于记录作用,防丢失。
一、Linux介绍
1.Linux简单简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、oracle linux等。
2.Linux发展简史
Linux操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:Unix操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。
3.Linux的应用
与Windows操作系统软件一样,Linux也是一个操作系统软件。但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linux应用领域已趋于广泛。
1、IT服务器Linux系统应用领域
如今的IT服务器领域是Linux、UNIX、Windows三分天下,Linux系统可谓是后起之秀,尤其是近几年,服务器端Linux操作系统不断地扩大着市场份额,每年增长势头迅猛,并对Windows及UNIX服务器市场的地位构成严重的威胁。
Linux作为企业级服务器的应用十分广泛,利用Linux系统可以为企业构架WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器(透明网关)、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性。
随着Linux在服务器领域的广泛应用,从近几年的发展来看,该系统已经渗透到了电信、金融、政府、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux操作系统。这一切都在表明,Linux在服务器市场的前景是光明的。大型、超大型互联网企业(腾讯、淘宝、百度、新浪等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的几乎都是Linux系统,Linux已经逐步渗透到各个领域的企业里。
2、嵌入式Linux系统应用领域
由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活,而且具有极大的伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙、负载均衡器等)到专用的控制系统(自动售货机、手机、PDA、各种家用电器等),Linux操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。例如,在智能手机领域,Android Linux已经在智能手机开发平台牢牢地占据了一席之地。
3、个人桌面Linux应用领域
所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统, 例如: Windows XP、Windows 7、MAC等。华为荣耀magicbookpro Linux版搭载的国产的深度操作系统deepin也是基于Linux开发的,Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家用需求,例如:
浏览器上网浏览(例如:Firefox浏览器)。
办公室软件(OpenOffice,兼容微软Office软件)处理数据。
收发电子邮件(例如:ThunderBird 软件)。
实时通信(例如:QQ 等)。
文字编辑(例如:vi、vim、emac)。
多媒体应用。
虽然Linux个人桌面系统的支持已经很广泛了,但是在当前的桌面市场份额还远远无法与Windows系统竞争,这其中的障碍可能不在于Linux桌面系统产品本身,而在于用户的使用观念、操作习惯和应用技能,以及曾经在Windows上开发的软件的移植问题。
二、Linux系统的安装
目前安装操作系统方式主要有3种:真机安装、虚拟机安装、VPS虚拟服务器安装。
如果是学习或者测试使用,建议使用虚拟机安装方式和VPS服务器安装方式。
1.真机安装方式
使用真实的电脑进行安装,像安装Windows操作系统一样,真机安装的结果就是替换掉当前的Windows操作系统。
2.虚拟机安装方式
虚拟机目前有2个比较有名的产品:vmware出品的vmware workstation、oracle 出品的virtual Box。
通过一些特定的手段,来进行模拟安装,并不会影响当前计算机的真实操作系统。
安装参考教程:VMware虚拟机上安装Linux_CentOS 8系统
3.Linux云服务器安装方式
VPS(Virtual Private Server 虚拟专用服务器)可选配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。
一般情况下,VPS服务器都安装的Linux系统(包括Ubuntu、Debian、CentOS等),直接购买VPS服务器,安装Linux,可以用SSH工具进行远程连接登录使用。
安装参考教程:
Bandwagon搬瓦工VPS注册、购买和连接SSH登录教程
三、SSH客户端使用
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。
工欲善其事,必先利其器。需要通过SSH工具远程登录服务器,那么高效地使用SSH连接工具就很有必要。
1.Linux的SSH用户登录
Linux使用ssh登录需要IP、ssh端口、用户名和对应的密码。
**IP:**内网可以使用内网IP、外网必须使用公网IP;
**端口:**通常是22端口,也可以是其他端口;
**用户名:**可以是管理员root,也可以是其他用户;
**密码:**与用户对应的密码。
2.Linux的ssh登录参考教程:
2.SSH终端常用快捷键
SSH是可以说是每一台Linux电脑的标准配置。随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用,下面是一些常用的SSH快捷键。
Ctrl+a 光标移动到行首
Ctrl+e 光标移动到行尾
Ctrl+c 终止当前程序
Ctrl+d 删除光标前的字符,或者推出当前中断
Ctrl+l 清屏
Ctrl+u 剪切光标之前的字符
Ctrl+k 剪切光标之后的字符
Ctrl+y 复制u/k操作中的内容
Ctrl+r 查找最近用过的命令
Ctrl+shift+c 复制
Ctrl+shift+v 粘贴
tab 补全命令或路径
键盘↑和↓键切换使用过的命令
这些快捷键是可以更改的,但是不建议更改,一般保持默认就好。
四、Linux系统的文件
1、文件与文件夹(目录)
什么是文件?
一般都是一个独立的东西,可以通过一些特定的工具进行打开,并且其中不能在包含除了文字以外的东西。
什么是文件夹?
可以在其中包含其他文件的东西。
为什么先讲文件?
Linux一切皆文件。
1.Linux使用过程中,有近一半以上的工作内容精力其实都是对文件的操作。
2.Linux 本身也是一个基于文件形式表示的操作系统。
①在Windows是文件的,在Linux下同样也是文件;
②在Windows不是文件的,在Linux下也是以文件的形式存储的;
日常学习中和日常工作中,对于文件的操作的都有哪些种类?
创建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件、恢复文件。
注意:Linux中文件是没有扩展名(后缀名)这一说的,只是用来识别文件。
2、Linux系统的文件目录结构
目录结构:
**bin:**全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。
dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。
**etc:**该目录主要存储一些配置文件。
home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。
**proc:**process,表示进程,该目录中存储的是Linux运行时候的进程。
**root:**该目录是root用户自己的家目录。
**sbin:**全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。
**tmp:**表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
**usr:**存放的是用户自己安装的软件。类似于windows下的program files。
**var:**存放的程序/系统的日志文件的目录。 Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
3、Linux的文件类型
1.普通文件类型
Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
2.目录文件
就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrw]
3.块设备文件
就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
4.字符设备
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
5.套接字文件
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型.
6.管道文件
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
7.链接文件
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrw]
五、Linux的文件管理
**一般命令格式:**命令 [-选项] [参数]
1、pwd命令
用法:#pwd (print working directory,打印查看当前工作目录)
2、ls命令
用法1:#ls
含义:列出当前工作目录下的所有文件/文件夹的名称
用法2:#ls 路径
含义:列出指定路径下的所有文件/文件夹的名称
关于路径(重要):
路径可以分为两种:相对路径、绝对路径。
**相对路径:**相对首先得有一个参照物(一般就是当前的工作路径);
相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“…/”【上一级目录下】。
**绝对路径:**绝对路径不需要参照物,直接从根“/”开始寻找对应路径;
用法3:#ls 选项 路径
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
选项解释:
-l:表示list,表示以详细列表的形式进行展示
-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
-h:以可读性较高的形式显示文件大小
选项可以一起用,与顺序无关。
常见的语法:
#ls -l 路径
#ls -la 路径
#ls -lh 路径
**说明1:**表中的第一列字符表示文档的类型,其中“-”表示改行对应的文档类型为文件,“d”表示文档类型为文件夹,以“.”开头一般都是隐藏文档。
**说明2:**ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色(或白色)的表示文件,绿色的其权限为拥有所有权限(读、写、执行)。
3、mkdir命令
指令:mkdir(make directory,创建目录)
语法1:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
案例1:在当前路径下创建出“f1”目录(文件夹)
案例2:在指定路径(/tmp/)下创建出一个文件夹“f1”
语法2:#mkdir -p 路径
含义:一次性创建多层目录,添加-p参数,否则会报错
语法3:#mkdir 路径1 路径2 路径3 …. 【表示一次性创建多个目录】
案例3:再当前用户家目录下创建f1/f2/f3/f4/f5多层目录
4、touch命令
指令:touch
作用:创建文件
语法:#touch 文件路径 【路径可以是直接的文件名也可以是路径】
案例1:使用touch来在当前路径下创建一个文件,命名为Linux.txt
案例2:使用touch在当前目录同时创建多个文件Linux1.txt、Linux2.txt、Linux3.txt
案例3:使用touch在/root/f1指定目录中创建文件Linux.txt
注意:以“.”开头创建的文件名为隐藏文件。
5、cp命令
指令:cp(copy,复制)
作用:复制文件/文件夹到指定的位置
语法:#cp 被复制的文档路径 文档被复制到的路径
案例1:使用cp命令来复制用户家目录下的Linux.txt到/tmp/目录
注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
**提示:**Linux中后缀名只是为了识别,无其他意义
案例2:使用cp命令来复制用户家目录下的Linux.txt到/tmp/目录,并重命名为Linux13.txt
案例3:使用cp命令来复制/root/目录下的f1文件夹到/tmp目录下
注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略。
6、mv命令
指令:mv(move,移动,剪切)
作用:移动文档到新的位置
语法:#mv 需要移动的文档路径 需要保存的位置路径
案例1:使用mv命令移动一个文件 把Linux.txt移动到/root/f1/目录下
确认:移动之后原始的文件还在不在原来的位置?原始文件是不在原始位置的
案例2:使用mv命令移动一个文件夹 将/root/f1目录下的f2文件夹运动到/root/目录下
补充:在Linux中重命名的命令也是mv,语法和移动语法一样。
案例3:使用mv命令将/root/f1目录下的f2文件夹重命名为f3
7、rm命令
指令:rm (remove,移除、删除)
作用:移除/删除文档
语法:#rm 选项 需要移除的文档路径
选项:
-f:force,强制删除,不提示是否删除
-r:表示递归
案例1:删除一个文件 用相对路径删除/root/目录下的Linux1.txt
在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入“y/yes”,否则输入“n/no”按下回车。
注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项“-f”,表示force(强制)。
案例2:强行删除多个文档 相对路径强行删除/root/目录下的Linux2.txt和Linux2.txt
案例3:要删除一个目录 相对路径强行递归删除/root/目录下的f1文件夹
注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除确认询问,所以移除目录的时候一般需要使用-rf选项。
案例4:要删除一个目录下有公共特性的文档,例如都以Linux开头的文件和文件夹
其中*称之为通配符,意思表示任意的字符,Linux*,则表示只要文件以Linux开头,后续字符则不管。
案例5:要删除一个目录下所有文档,例如删除/tmp/目录下的所有文件的文件夹
8、zip/unzip命令
作用:以zip格式将文件打包压缩或解压zip
zip是Windows和Linux默认都支持的格式,兼容性好。
案例1:打包压缩/root/frp_0.33.0_linux_amd64 打包压缩后文件名为f3.zip
#zip f3.zip frp_0.33.0_linux_amd64
案例2:把frp_0.33.0_linux_amd64删除后,解压f3.zip
#unzip f3.zip
9、tar命令
作用:以gzip打包压缩或解压文件
案例1:打包压缩/root/frp_0.33.0_linux_amd64 打包压缩后文件名为f5.tar.gz
案例2:把frp_0.33.0_linux_amd64删除后,解压f5.tar.gz
参数含义:
-x 解包
-v 显示详细信息
-f 指定文件名
-z 解压缩
说明:gzip格式是Linux中常用的压缩格式,在网上下载的程序包一般都是这个格式,一般名字为XXX.tar.gz
10、wget命令
作用:下载远程文件到Linux主机
**命令格式:**wget [参数] [URL地址]
案例:下载frp内网穿透程序包(下载地址是:https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz )
11、find命令
作用:文件搜索
**命令格式:**find [搜索范围] [匹配条件]
案例1:在/etc目录下根据名字在搜索 init
#find /etc -name init
案例2:在/etc目录下根据名字在搜索 init,不区分大小写
#find /etc -iname init
案例3:在/etc目录下根据文件大小在搜索大于1M的文件
#find /etc -size +2048
单位换算1M=1024KB=2048数据块
案例4:在/etc目录下搜索文件大于1M,小于2M的文件
#find /etc -size +2048 -a -size -4096
案例5:在/etc目录下搜索文件大于1M或者以文件名为init开头的文件
#find /etc -size +2048 -o -name init*
-a (all)表示多个条件同时满足
-o (or)表示多个条件满足一个
注意:搜索过程中可以用通配符*、?
六、Linux文件权限设置
总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner(所有者)、group(所属组)、others(其他),且3种身份各有read(读)、write(写)、execute(执行)等权限。
1、权限介绍
什么是权限?
在多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。
在Linux中分别有读、写、执行权限:
读权限(r):
对于文件夹来说,读权限影响用户是否能够列出目录结构
对于文件来说,读权限影响用户是否可以查看文件内容
写权限(w):
对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档
对于文件来说,写权限影响用户是否可以编辑文件内容
执行权限(x):
一般都是对于文件来说,特别脚本文件。
2、身份介绍
Owner身份(文件所有者,默认为文档的创建者)
由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。
例如某个MM给你发了一封Email情书,你将情书转为文件之后存档在自己的主文件夹中。为了不让别人看到情书的内容,你就能利用所有者的身份去设置文件的适当权限,这样,即使你的情敌想偷看你的情书内容也是做不到的。
Group身份(与文件所有者同组的用户)
与文件所有者同组最有用的功能就体现在多个团队在同一台主机上开发资源的时候。例如主机上有A、B两个团体,A中有a1,a2,a3三个成员,B中有b1,b2两个成员,这两个团体要共同完成一份报告F。由于设置了适当的权限,A、B团体中的成员都能互相修改对方的数据,但是团体C的成员则不能修改F的内容,甚至连查看的权限都没有。同时,团体的成员也能设置自己的私密文件,让团队的其它成员也读取不了文件数据。在Linux中,每个账户支持多个用户组。如用户a1、b1即可属于A用户组,也能属于B用户组【主组和附加组】。
Others身份(其他人,相对于所有者)
这个是个相对概念。打个比方,大明、二明、小明一家三兄弟住在一间房,房产证上的登记者是大明(owner所有者),那么,大明一家就是一个用户组,这个组有大明、二明、小明三个成员;另外有个人叫张三,和他们三没有关系,那么这个张三就是其他人了。
同时,大明、二明、小明有各自的房间,三者虽然能自由进出各自的房间,但是小明不能让大明看到自己的情书、日记等,这就是文件所有者(用户)的意义。
Root用户(超级用户)
在Linux中,还有一个神一样存在的用户,这就是root用户,因为在所有用户中它拥有最大的权限 ,所以管理着普通用户。
3、Linux的权限查看
要设置权限,就需要知道文件的一些基本属性和权限的分配规则。在Linux中,ls命令常用来查看文件的属性,用于显示文件的文件名和相关属性。
#ls -l 路径 【ls -l 等价于 ll】
Linux中存在所有者、用户组和其他人概念,各自有不同的权限,对于一个文档来说,其权限具体分配如下:
十位字符表示含义:
**第1位:**表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”等等;
**第2-4位:**表示文档所有者的权限情况,第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,w表示可写,-表示不可写,第4位表示执行权限的情况,取值有x、-。
**第5-7位:**表示与所有者同在一个组的用户的权限情况,第5位表示读权限的情况,取值有r、-;第6位表示写权限的情况,w表示可写,-表示不可写,第7位表示执行权限的情况,取值有x、-。
**第8-10位:**表示除了上面的前2部分的用户之外的其他用户的权限情况,第8位表示读权限的情况,取值有r、-;第9位表示写权限的情况,w表示可写,-表示不可写,第10位表示执行权限的情况,取值有x、-。
权限分配中,均是rwx的三个参数组合,且位置顺序不会变化。没有对应权限就用 – 代替。
4、权限设置
语法:#chmod 选项 权限模式 文档
注意事项:
常用选项:
-R:递归设置权限 (当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
注意点:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
4.1、字母形式
给谁设置:
u:表示所有者身份owner(user)
g:表示给所有者同组用户设置(group)
o:表示others,给其他用户设置权限
a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限字符:
r:读
w:写
x:表示执行
-:表示没有权限
权限分配方式:
+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】
例如:需要给frp_0.33.0_linux_amd64.tar.gz文件(-rw-r–r–.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。
答案:
①#chmod u+x,g+rx,o+r frp_0.33.0_linux_amd64.tar.gz
②#chmod u=rwx,g=rx,o=r frp_0.33.0_linux_amd64.tar.gz
提示:当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。
#chmod ug=rwx 形式,如果有两部分权限一样则可以合在一起写的
例如:如果frp_0.33.0_linux_amd64.tar.gz文件什么权限都没有,可以使用root用户设置所有人都有执行权限,则可以写成
①#chmod +x frp_0.33.0_linux_amd64.tar.gz
②#chmod a=x frp_0.33.0_linux_amd64.tar.gz
③#chmod a+x frp_0.33.0_linux_amd64.tar.gz
4.2、数字形式
经常会在一些技术性的网页上看到类似于**#chmod 777 a.txt** 这样的一个权限,这种形式称之为数字形式权限(777)。
读:r 4写:w2执行:x1没有任何权限0
例如:需要给frp_0.33.0_linux_amd64.tar.gz设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
全部权限(u):读+写+执行=4+2+1=7
读和执行(g):读+执行=4+1=5
读权限(o):读=4
由上得知权限为:754
#chmod 754 frp_0.33.0_linux_amd64.tar.gz
思考:用超级管理员设置文档的权限命令是#chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?
拥有者:7=4+2+1=读+写+执行
同组用户:3=2+1=写+执行
其他用户:1=1=执行
注意:在写权限的时候千万不要设置类似于上面的这种“奇葩权限”。如果一个权限数字中但凡出现2与3的数字,则该权限有不合理的情况。
4.3、注意事项
使用root用户创建一个文件夹(/oo),权限默认,
需要在oo目录下创建文件(oo/xx.txt),需要给777权限:
切换到test用户(不是文档所有者,也不是同组用户,属于other部分):
问题1:test用户是否可以打开oo/xx.txt文件?【能打开】
问题2:test用户是否可以编辑oo/xx.txt文件?【可以】
问题3:test用户是否可以删除oo/xx.txt文件?【不可以,同样还不允许创建文件/文件夹、移动文件、重命名文件】
在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。
5、修改所有者和所属组
属主:所属的用户(文件的主人)
属组:所属的用户组
前面的那个root就是属主
后面的那个root就是属组
这两项信息在文档创建的时候会使用创建者的信息(用户名、用户所属的主组名称)。
如果有时候去删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改。
5.1、chown(重点)
作用:更改文档的所有者
语法:#chown -R username 文档路径
案例:将刚才root用户创建的oo目录,所有者更改为test
#chown test oo/
5.2、chgrp
作用:更改文档的所属组
语法:#chgrp -R groupname 文档的路径
案例:将root用户创建的oo目录,所有者更改为test,并且将所属组也改为test
#chgrp test oo/
思考,如何通过一个命令实现既可以更改所有者,也可以修改所属组呢?
答:可以实现的,通过chown命令
语法:#chown -R username:groupname 文档路径
案例:要求只使用chown指令,将oo目录的所属用户和用户组改回成root,并且包含其子目录
七、vim编辑器
普通用户对文件编辑需要有文件的写权限。
1、vi介绍
Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,Vi也是Linux中最基本的文本编辑器,学会它后,我们将在Linux的世界里畅行无阻,尤其是在终端中。
2、关于vim
vi和vim都是Linux中的编辑器,不同的是,vim功能更强,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding(写代码的)。
Vim重点是光标的移动,模式切换,删除,查找,替换,复制,粘贴,撤销命令的使用。
3、vim的三种模式
Vim中存在三种模式:命令模式、编辑模式、末行模式。
**命令模式:**在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
**编辑模式:**在该模式下可以对文件的内容进行编辑;
**末行模式:**可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
Vim的打开文件的方式(4种,要求掌握的就前三种):
#vim 文件路径 作用:打开指定的文件
#vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
#vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
#vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
注意:先复制出一个/etc/passwd文件,复制当前家目录下(千万不要在etc下直接修改!!!)
后续一切vim命令都是基于/root/passwd文件进行操作。
退出方式:输入:q按下回车即可
4、命令模式
注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)
案例1:进入vim命令模式 打开/etc/passwd文件
最好先复制出一个/etc/passwd文件,复制当前家目录下(千万不要在etc下直接修改!!!)
进入命令模式可以在下面进行下面这些操作:
光标移动
①光标移动到行首
按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)
②光标移动到行尾
按键:shift + 4 或 $(R字母的左上角的4,不是小键盘的4)
③光标移动到首行
按键:gg
④光标移动到末行
按键:G
⑤翻屏
向上翻屏:按键ctrl + b (before) 或 PgUp
向下翻屏:按键ctrl + f (after) 或 PgDn
复制操作
①复制光标所在行
按键:yy
粘贴:在想要粘贴的地方按下p键
②以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字yy
③可视化复制
按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓← →方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴
剪切/删除
①剪切/删除光标所在行
按键:dd (删除之后下一行上移)
注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
②剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
按键:数字dd (删除之后下一行上移)
③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)
④可视化删除
按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块
撤销/恢复
撤销:输入:u (不属于命令模式) 或者 u (undo)
恢复:ctrl + r 恢复(取消)之前的撤销操作
扩展1:光标的快速移动
①快速将光标移动到指定的行
按键:数字G
②以当前光标为准向上/向下移动n行
按键:数字↑,数字↓
③以当前光标为准向左/向右移动n字符
按键:数字←,数字→
④末行模式下的快速移动方式:移动到指定的行
按键:输入英文“:”,其后输入行数数字,按下回车
5、编辑模式
在命令模式下按【i】键可以进入编辑模式。其实还有很多键也可以,这里只需要记住这个就行了。
重点看前2个进入方式:i(insert)、a(after)。
退出方式:按下esc键 回到命令模式
6、末行模式
进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入
退出方式:
a. 按下esc
b. 连按2次esc键
c. 删除末行全部输入字符
①保存操作(write)
输入:“:w” 保存文件
输入:“:w 路径” 另存为
②退出(quit)
输入:“:q” 退出文件
③保存并退出
输入:“:wq” 保存并且退出
④强制 (!)
输入:“:q!” 表示强制退出,刚才做的修改操作不做保存
⑤调用外部命令
输入:“:!外部命令”
例如:
当外部命令执行结束之后按下任意键回到vim编辑器打开的内容
⑥搜索/查找
输入:“/关键词”
例如:我想在passwd文件中搜索“sbin”关键词
在搜索结果中切换上/下一个结果:N/n (next)
如果需要取消高亮,则需要输入:“:nohl”【no highlight】
⑦替换
😒/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
😒/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
%表示整个文件
g表示全局(global)
⑧显示行号(临时)
输入:“*:set nu*”[number]
如果想取消显示,则输入:“:set nonu”
⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件
查看当前已经打开的文件名称:“:files”
在%a的位置有2种显示可能
%a:a=active,表示当前正在打开的文件;
#:表示上一个打开的文件
切换文件的方式:
a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”
b. 可以通过其他命令来切换上一个文件/下一个文件
输入:“:bn”切换到下一个文件(back next)
输入:“:bp”切换到上一个文件(back prev)
7、实用功能
代码着色
案例:首先创建简单的c语言程序
如何控制着色显示与否?
显示:“:syntax on” syn
tax:语法
关闭显示:“:syntax off”
vim中计算器的使用
当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim自身集成了一个简易的计算器。
a. 进入编辑模式
b. 按下按键“ctrl + R”,然后输入“=”,此时光标会变到最后一行
c. 输入需要计算的内容,按下回车
8、vim的配置文件
Vim是一款编辑器,编辑器也是有配置文件的。
Vim配置有三种情况:
a. 在文件打开的时候在末行模式下输入的配置(临时的)
b. 个人配置文件(~/.vimrc,如果没有可以自行新建)
c. 全局配置文件(vim自带,/etc/vimrc)
①新建好个人配置文件之后进入编辑
②在配置文件中进行配置
比如显示行号:set nu
配置好之后vim打开文件就会永远显示行号
问题:如果某个配置项,在个人配置文件与全局配置文件产生冲突的时候应该以谁为准?
测试步骤:在两个配置文件中针对同一个配置项设置不同的值
①先在全局的配置中设置不显示行号,在个人的配置文件中设置显示行号,观察结果
最后显示行号:说明以个人为准
②先在全局中配置显示行号,在个人中设置不显示行号,观察结果
最后的显示是不显示行号,说明以个人为准
结论:如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。
9、vim异常退出
什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可
#rm -f .文件名.swp
交换文件的文件名:.文件名.swp 和原来的文件在同一个目录,且为隐藏文件
10、vim退出方式
回顾:之前vim中退出编辑的文件可以使用“:q”或者“:wq”。
除了上面的这个语法之外,vim还支持另外一个保存退出方法“:x”。
说明:
①“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
因此建议以后使用“:x”来进行对文件的保存退出。
但是:小写的x,不要使用大写X,大写X表示对文件进行加密操作。
八、常用命令
1、passwd命令
作用:修改用户密码
语法:passwd [用户名]
案例:更改自己的用户密码
注意:
1.管理员root可以改所有人的密码,密码没有长度要求;
2.普通用户可以改自己密码,密码最小8位;
3.敲密码的时候不会显示任何字符,输入完成后直接回车。
2、man命令
作用:manual,手册(包含了Linux中全部命令手册)查询命令的用法
语法:#man 命令
案例:通过man命令查询ls指令的用法
#man ls
按空格键翻页查看,上下键滚动查看,退出按下q键。
3、history命令
语法:#history
作用1:查看历史指令
案例1:查看历史指令
作用2:执行历史指令
语法:![number数字] 直接执行执行过的命令
案例2:执行历史指令中的ls -l (对应的数字是:110)
4、clear命令
作用:清除终端中已经存在的命令和结果(信息)。
效果和快捷键Ctrl + L是一样的。
语法:clear
需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
5、reboot命令
作用:重新启动计算机
语法1:#reboot 重启
语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
执行指令后,连接断开,等待计算机重启完成后可以重新连接。
6、ps -ef命令
作用:主要是查看服务器的进程信息
指令:ps
选项含义:
-e:等价于“-A”,表示列出全部的进程
-f:显示全部的列(显示全字段)
执行结果:
列的含义:
UID:该进程执行的用户id;
PID:进程id;
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
C:Cpu的占用率,其形式是百分数;
STIME:进行的启动时间;
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间;
CMD:该进程的名称或者对应的路径;
案例:(100%使用的命令)在ps的结果中过滤出想要查看的进程状态
#ps -ef|grep [进程名称]
例如查看bash的进程:
7、kill命令
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
语法:#kill [进程PID] (PID可以用上面的ps -ef命令查看)
与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall
语法:#killall [进程名称]
8、df命令
作用:查看磁盘的空间
语法:#df -h -h表示以可读性较高的形式展示大小
9、su命令
作用:切换用户
语法:su [用户]
案例1:从root管理员切换到test用户
#su test
案例2:从test切换到root管理员用户
#su root
注意:从root用户切换到普通用户不需要密码,注意观察root的命令是“#”开头,普通用户是“$”开头。
10、管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。“|”符号前面的内容输出作为“|”后面的内容的输入,然后输出结果。
**①过滤案例:**需要通过管道查询出根目录下包含“y”字母的文档名称。
#ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;
②grep指令:主要用于过滤
②特殊用法案例:通过管道的操作方法来实现less的等价效果
之前通过less查看一个文件,可以#less 路径
现在通过管道还可以这么:#cat 路径|less
③扩展处理:请使用学过的命令,来统计某个目录下的文档的总个数?
答:#ls / | wc -l
10、ping命令
作用:测试网络的连通性
语法:ping [选项] [IP地址或者域名]
11、ifconfig命令
作用:查看网卡信息
语法:#ifconfig
12、last命令
作用:列出目前与过去登入系统的用户信息
语法:#last
**补充:**还有一个#lastlog命令,可以自己试一下。
13、netstat命令
作用:显示网络相关信息
语法:netstat [选项]
选项
-tlun 查看本机监听的端口
-an 查看本机所有的网络连接
-rn 查看本机路由表
14、shutdown命令
作用:关机或重启
语法:shutdown [选项] 时间
选项
-c 取消前一个关机命令
-h 关机
-r 重启
案例1、立即重启 #shutdown -r now
案例2、立即关机 #shutdown -h now
注意:Linux服务器不要关机!!!
15、logout命令
作用:退出登录 防止别人误操作
语法:logout
软件安装
九、软件安装
Linux的软件安装主要有三种方法:源码包安装、rpm二进制包安装、yum网络源安装和脚本安装包安装。源码包安装、rpm二进制包安装太麻烦,讲一下yum网络源安装和脚本安装包安装。
1、源码包安装
优点:开源,如果有足够的能力,可以修改源代码
编译安装,更加适合自己的系统,稳定高效
缺点:安装步骤较多,容易出错
编译过程时间较长
2、二进制包(rpm)
优点: 包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载
缺点: 经过编译,不再可以看到源代码
3、网络yum源安装
网络yum源安装的实质跟二进制包(rpm)安装原理是一样的,只是自动化了。
优点: 安装简单,快捷,解决了网络的依赖性
缺点: 完全丧失了自定义性
注意:如果不更改软件来源的情况下,是需要联网才能使用yum的。
常用的yum指令:
#yum list [installed] 列出当前已经装的和可以装的软件(全部)#yum search [包名]搜索指定的关键词的包#yum -y install [包名]安装指定的包(-y表示允许不再确认)#yum -y update [包名] 更新指定的包,不指定包则更新全部软件#yum -y remove [包名] 卸载指定的包
案例1:安装PHP
4、脚本安装包安装
脚本安装包并不是独立的软件包类型, 常见安装的是源码包。是人为把安装过程写成了自动安装的脚本,只要执行脚本, 定义简单的参数, 就可以完成安装。非常类似于Windows 下软件的安装方式。
这种方法通常在云服务器VPS上使用,软件下载–安装一气呵成。
实例:安装BT宝塔面板
安装脚本:
1 | yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh |
输入:y
浏览器里面输入面板地址就可以使用了。
- Title: linux-note-summary
- Author: Charles
- Created at : 2023-02-05 09:32:58
- Updated at : 2023-11-05 21:36:18
- Link: https://charles2530.github.io/2023/02/05/linux-note-summary/
- License: This work is licensed under CC BY-NC-SA 4.0.