day05 Linux基础入门
Linux语法解析
-
如何理解ssh远程连接?如何使用ssh使用远程连接服务?
ssh进也称
远程服务终端
,常见连接方式可以包括windows
和Linux
两种方式
首先咱们使用windows窗口进行连接,这里就采用xshell连接工具来给大家做演示吧!!!!!
首先分析一下ssh语句:这里必填项包括user(用户名)、host(主机名)、port(端口)
# 这里以我vm的虚拟机作为server使用dos进行远程连接服务
ssh root@10.2.53.5 22 #22代表xshell 工具端口,默认可不指定
Linux本机服务的远程访问
通过NAT技术创建了两个本地局域网网卡信息
这里在Linux中指定端口的方式与windows方式会有所不同
ssh root@10.2.53.5 22 #windows中Dos环境下
ssh -p 22 root@10.2.53.5 #Linux中bash环境下
使用exit
可以退回到上一次访问的用户,logout
则是注销本地用户登录,这两者都可以很好的退出本都远程会话。
- 图形化界面和命令行终端概念?
图形化界面好比我们如今使用的windows操作系统,能让我们更直观的操作和使用os;而命令行终端能则是让我们更好的对命令执行批处理操作,网络管理、性能优化,服务搭建。
-
如何对主机名进行修改(hostnamectl)?
1)首先查看一下本机hostname,发现本机hostname默认情况是localhost
2)然后使用命令修改主机名
hostnamectl set-hostname hxd111
操作成功后结果如图所示:
Linux 区别
-
严格区分大小写文件
在windows如果我们创建两个文件名相同的文件而字母大小不同的文件时这时系统就提示我们有重复文件,而在Linux中则刚好与这种情况 恰恰相反,但是在我们严格上来说就需要采用字母小写来给文件命名,一般采用下划线命名法。
-
linux的命令返回结果是通过命令来与客户端进行交互的
思考:
为什么说是Linux命令与客户端是交互呢?
首先我们需要明确的是Linux是运行在bash解释这器上,而bash解释器肯定也是在一个全局域中,那么肯定存在一个类似与PATH环境变量的东西
之后我们通过find命令发现ls命令位于/usr/bin/目录下
由于我们系统自动给我们部署环境了,所以简化了多路径书写情况
诸如此类情况我们还遇到了cat、ls、mkdir、touch...
命令后面都会谈到,使用了这些命令才完成os系统交互效果
-
如何查看网络信息,我们又该如何理解这部分内容
我们要与服务器建立网络通信,必然会涉及到网络连接,那么网络连接方式主要从
桥接模式、NAT模式、仅主机模式
三个方式展开分析。
详细情况可以看看图解:
谈到网卡,就会想到一个常见网卡配置路径vim /etc/sysconfig/network-scripts/ifcfg-ens33
和ifconfig
命令解释
先解释一下ifcfg-enss文件:
再解释一个网卡命令ifconfig
虚拟网卡就是机器上识别网络驱动信息,这里面inet信息就是IP信息,netmask则是子网掩码,主要起到了限制访问设备的作用,就比如这里的255.255.255.0就仅仅是针对局域网内只限制255台设备,后面的b这扇roadcast就是我们的网关,好比一扇通往异世界的大门,我们只有在这个异世界传送区域内我们才可以进入这扇大门
lo(本地回环地址):用与本地机器环境测试、一般情况下只能在宿主机自己的机器环境内访问
- echo命令使用技巧常见注意事项
使用echo命令向文件中追加内容
echo "hello world"> /tmp/a.txt
这里的’>'代表的是追加内容,它有覆盖文本原先内容的效果
,而如果使用‘>>’即代表向文本后内容进行追加
echo还能打印输出语句内容
,我们能通过它打印系统环境内置变量,就好比这里的$LANG我们将其打印出来就是就是系统解释器统一语言
echo还有一个易错点针对双引号和单引号
都有着属于它自己的语法,在双引号
的 情况下,通常会将特殊字符进行转义,而单引号
无论是否含有特殊字符都会以字符串的形式将其结果打印出来,通过使用双引号让最后结果重复了4次
-
针对Linux文件后缀名你如何看待? 常见的后缀有哪些?
Linux文件后缀包括
.png、.mp4、.py、.java、.html、.css、.js、.tar、.tar.gz
文件后缀,这些后缀在Linux看来都是以普通文件的格式存在,在文件表示以-
来表示,在Linux系统内部通常会在系统内置环境中来设置从而进行调整,而文件夹格式的文件通常以d
来表示
如何理解Linux中一切皆文件概念
这里以硬盘为例给大家解释一下,在虚拟物理器件中我们可以清晰的发现该设备有三块硬盘,然而我们在虚拟机os系统通过命令方式查询到了文件系统的相关信息,并且能通过挂载,使得我们更容易使用硬盘来进行文件存储
以下为详细软硬件工作原理图(列举了硬盘、网卡设备进行了分析):
Linux 挂载是什么?我们为何需要挂载?
tips:磁盘分区图解过程(linux分区与目录的绑定、磁盘访问目录、硬盘需要通过分区
、格式化
、挂载
之后才能正常使用)
LINUX磁盘挂载之后,会将分区与目录实现绑定,从而在很大程度上提高了硬盘使用率,使得我们更好的管理好文件系统
绝对路径和相对路径的区别
绝对路径
即一个完整路径(一定是从根目录开始查找该文件)、相对路径
即从你所在目录为相对路径的前提,向上或下去查找你的目标文件,比如我现在位于/tmp目录,那么如果我现在需要去访问该目录下a.txt文件
- 绝对路径: cd /tmp/a.txt 第一个‘/’代表根目录,而第二个以及后面的‘/’都表示目录分隔符
- 相对路径(表示方法很多): cd ./a.txt 、cd …/tmp/a.txt 、cd a.txt 、cd ~/tmp/a.txt
cd ./a.txt | cd …/tmp/a.txt | cd a.txt | cd ~/tmp/a.txt |
---|---|---|---|
以当前目录为根据目录访问下级 下级目录是否存在a.txt文件 | 返回至本目录的上一级目录 然后从tmp目录向下切换到一个 名为a.txt目录下 | 由此时路径已经存在与/tmp目录下,后面只需相对与本路径进行填写下个路径即可 | 这个是绝对路径特殊表达这里的~好比/home目录是等效的 |
补充:下面针对其特殊符号做相关解释
特殊符号 | ~ | - | . |
---|---|---|---|
解释 | /home目录 | 与上个命令实现来回切换 | 本地所处目录 |
常见命令用法
- uname -a、man、history、clear
- 压缩文件(tar、tar.gz、zip)
常见重要目录有哪些?
/root、/etc、/var/log、/home、/opt详细情况如图分析:
Path环境变量作用(which)
which 命令即查看目录存放的原始环境路径(根据$PATH环境变量分析)
which [command]
day06 文件管理操作练习
有关dns域名解析的关系
dns域名解析服务在windows 存放于C:\Windows\System32\drivers\etc\hosts
文件下,默认情况下会先从本机DNS服务中查找是否有与域名解析服务相关的域名,然后再才会从你所配置外外部dns服务商去查外部服务
常见的DNS域名解析服务器有:
国际DNS域名服务商:116.116.116.116
百度DNS:180.76.76.76
阿里DNS(首选DNS:223.5.5.5• 备选DNS:223.6.6.6)
图解过程参考过程如下:
针对文件创建、复制、移动、删除常见命令以及使用注意事项
- 目录创建mkdir (
mkdir
)
1.在文件创建过程中我们可以一次指定多个文件进行创建(
mkdir dir1 dir2
).2.可以混合采用绝对路径和相对路径来创建多个目录,用法同1(只不过将dir1 和dir2换成了文件的路径)
3.如果想要递归创建文件目录需要引用
-p
选项来创建
-
文件创建touch(
touch
)1.语法格式:touch txt1 txt2 …
2.可以递归在多个目录下创建多个文件
-
文件复制
cp
1.cp 语法格式为
【 cp 原文件 目标文件】
,它不仅仅可以完成文件的复制也可以完成目录的复制2.通常情况下如果需要进行文件目录的复制那么就常常需要加入
-R
选项完成目录的复制
-
文件移动
mv
1.mv命令格式为
mv 源文件 目标文件
2.主要分以下几种情况做出具体解释:
如果目标文件存在的前提下,即进行操作就是`重命名并覆盖文件内容`操作 如果目标文件不存在的情况下,那么进行的操作就是`移动`操作 如果目标目录存在的情况下,那么进行的操作就是进行目录`重命名`操作 如果目标目录不存在情况下,那么进行的操作就是移动至该目录的子目录下
- 文件删除
rm
1.删除空目录(rmdir)
rmdir 空目录 #注意:目录下不能有内容否则会报错
2.删除文件也可以删除目录(rm)
rm [-r -f] 文件目录 ### -r 递归文件删除其内容 ### -f 强制删除文件内容(无提示)
- 文件删除
Vim文本编辑器工作原理是什么?有哪些常见的快捷使用方式
vim工作原理如图所示我们所使用的记事本,但在这里面主要分为三块命令模式、编辑模式、底行模式
常见的快捷模式简要概括为复制、删除、block块模式批量选择、文本替换、显示行号、撤销、恢复、向上下两行进行查找内容
复制 | 删除 | block进行批量选择 | 文本搜索 | 文本替换 | 显示行号 | 撤销和恢复 | 向上下两行进行内容查找 |
---|---|---|---|---|---|---|---|
yy(复制文本)—>p(粘贴) | dd | ctrl +v(进入) | /(text内容) | 文本替换s/原内容/替换内容/g ,后面的g内容即代表替换全局内容 | :set nu | 撤销:u,恢复:ctrl +r | 向下n、向上N |
别名命令是什么?应该如何使用
别名的命令为alias、语法采用的是alias 别名目录=命令
,通常情况用于命令快捷查询。
我们通过查看alias命令可以发现默认已经设置别名的命令
这里我自定义了lg别名 ,lg就是输入“ls -l /var/log”命令
alias "lg= ls -l /var/log"
day07 文件的搜索与读取
cat命令
-
cat查看文本文件内容,例再去如
cat a.txt
,这里就不需要我们再使用vim进入目录再去查看了 -
当然如果只知道cat 只能查看内容那样就会显得太片面了,我们如果所想要查看其行号那就要加上-n选项,这里通常需要结合我们正则表达式grep进一步进行解释
cat /usr/local/nginx/conf/nginx.conf | grep '^#'
- echo中有一个文件追加的情况,在cat里面中我们同样也有这种说法,
比如’>‘代表输出内容到文件,如果有内容会覆盖其原内容,’>>‘代表追加
相反来说也有’<‘和’<<‘符号情况
[root@hxd111 ~]# cat >> a.txt << EOF
> HI!!!!!
> 6666
> 追加内容
> EOF
[root@hxd111 ~]# ls a.txt
a.txt
[root@hxd111 ~]# cat a.txt
HI!!!!!
6666
追加内容
tail命令
tail文本末尾追踪符号,命令形式为tail -F 命令
,下面是两个常用的命令项-f,-F,他们效果等效的
-f, --follow[={name|descriptor}]
output appended data as the file grows;
an absent option argument means 'descriptor'
-F same as --follow=name --retry
如果单独来看不加其他选项仅显示末尾后5行内容,而这里的命令tail -n1 a.txt
代表最后一行内容
与之相对的还有一个命令head,它显示的是目录前几行内容,比如haed -n1 a.txt
du命令
简单来说它的英文表达是"dictory usage ",里面会显示要目录占用情况
du -a 【文件目录 || 文件】 #显示文本所有文件信息
du -h 【文件目录 || 文件】 #自动显示文本文件大小信息
wc命令
wc英文名的缩写是’word count‘,它记录了文本文件单词数以及文本文件的行数显示
wc -l
文本文件的总行数
wc -c a.txt || wc -w a.txt
,-c选项代表所有的字符数,而-w选项代表单词数
find命令
find 文件所在地 【-mtime +-(+代表大于符号-代表小于符号)】 【-type d | f】 [-size 指定文件大小] 【-name 搜索文件名】
find / -name a.txt
从根目录开始搜素一个tmp目录下是否一个名为a.xt文件
find / -type d -name b00
,这里-type d指定了只能是目录类型,f指定了普通文件类型
find / -type f -name a.txt -mtime -5 -size -5M
,这个命令表示查看一个名为a.txt的文件,指定的时间范围小于5天,大小要求小于5M,搜索类型为普通文件类型
grep用法以及结合xrags如何使用?
如果说我们需要对我们使用命令搜索结果想要通过xrags 进行查看应该采用何种方式呢?
这里给大家列举两个例子:
需求:我们只是通过find命令搜索到了一个名为a.txt名字的文件,但是并不知道文件占用空间大小的情况
find / -type f -name a.txt -mtime -5 -size -5M | xargs -i du -sh {}
注意:此命令只能针对于文件搜索,而不能去搜索文本信息使用文本信息需要采用grep结合管道符进行搜索,或者我们也可以使用
s/被替换信息/替换信息/g
需求:筛选只位于/tmp目录下的a.txt文件
如何调整和查看文件修改时间状态信息
- touch -d ‘times’ -m ’ file_name’(更改文件时间为创建时的时间)
-d, --date=STRING parse STRING and use it instead of current time
-m change only the modification time
命令格式:touch -d ‘2025-5-20 16:29:55’ -m /tmp/a.txt
-
date -s “timestamp” 更改时间戳
date -s "2025-5-20 5:20:00"
day08 用户管理篇
什么是用户管理?用户相关的配置文件是什么?
-
用户管理:主要分为普通用户(user)和超级用户(root)两类,用户种类主要分为两类用户和用户组,用户useradd ,用户组groupadd
-
管理用户相关配置文件有/etc/paasswd ,/etc/group
具体分析一下见图解
(这是/etc/passwd文件):
(这是/etc/group文件)
用户管理命令有哪些?(用户和用户组修改和删除)如何进行查看以及它的创建过程又是什么样的?
用户管理命令:useradd,userdel,usermod
# 语法
useradd [-gGSu] 用户名
useradd -g[指定gid] -G[指定用户组名] -s【指定shell】 -u[指定uid]
[root@hxd111 ~]# useradd -g 1000 -s "/sbin/nologin " aaa
useradd: Warning: missing or non-executable shell '/sbin/nologin '
[root@hxd111 ~]# id aaa
uid=1001(aaa) gid=1000(hhh111) groups=1000(hhh111)
# 示例
useradd -g 1000 -s "/sbin/nologin " aaa
userdel,usermod(用户删除及修改)这个选项添加与useradd效果一样
usermod -u 【uid】 -g [gid] username
userdel usr1 usr2....
用户查看:id 【指定用户名】
查询的用户主要由uid,gid,groups三部分组成(这里面一方面指明了用户组的关系,另一方面也能指定用户是否创建成功)
用户组管理命令:groupadd,groupdel,groupmod
greoupadd 主要有两个重要选项,-g选项为指定gid,-U选项为指定用户有哪些用户
groupmod 主要用于修改目录组相关信息,这里重点说一下-U选项
用户通常会归为用户组进行管理,这样能更方便的完成后期权限统一管理
用户组中主组和附加组的区别?
主组中如果还有附加组存在,那么直接删除主组会提示删除失败,如果附加组太多那就直接删除其用户,本质上还是并不会影响到其他用户
主组(hhh111),附加值(gp1)
用户的创建过程以及涉及到的配置文件有哪些?
- /etc/passwd:记录了用户相关数据信息
- /etc/shadow:记录了用户密码的数据
- /etc/group:记录了用户名与组相关信息
- /etc/gshow记录了新增群组相关的密码信息
- 自动创建用户家目录,默认在/home 目录下,如/home/user1
新建用户,如果需要设置密码有哪几种方法?
交互式设置密码
passwd username
非交互式设置密码 --stidin
echo "111111" | passwd --stdin username
用户使用记录命令额外补充
whoami 打印当前用户名
显示所在登录用户的用户名
who 显示登录用户的终端信息
-
只有本地终端炼金
-
多终端连接
w 显示系统登录用户信息及负载信息
last近期登录终端信息(last -5)
lastlog 显示关于用户登录记录
sudo提权管理
采用visudo 编辑器是因为它不仅提示检测功能还有语法报错提示
使用命令 vim /etc/sudores
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
指定哪些用户能够sudo权限
wq退出,让其权限在用户中生效
source .bash_profile #设置bash_profile全局环境变量
source .bashrc #设置用户配置变量生效