Linux知识点 – 东凭渭水流

东凭渭水流Blog / 2023-07-21 / 原文

Linux基础篇

1.桥接模式:虚拟系统可以和外部系统相互通讯,但是容易造成ip冲突,只能使用与物理机同一个网段

2.nat模式:NAT模式与外界通话需要经过物理机(的NAT转换),不会多占一个局域网IP,可以与外部系统相互通讯,不会造成ip冲突,但是外部设备也无法访问虚拟设备

3.主机模式:不和外部通讯

4.Linux会把所有硬件映射成文件的形式存储在dev文件夹中

在Linux系统中,一切皆为文件

5.常用目录

/bin   /usr/bin   /usr/local/bin
是binary的缩写,存放着常用指令,比如ls,yum

/sbin    /usr/sbin   /usr/local/sbin
s是super,这里存放的是系统管理员使用的程序或命令

/home
存放普通用户的文件夹

/root
系统管理员root用户的主目录

/lib
系统开机所需要的动态共享库,类似Windows系统的dll文件,几乎所有应用程序都要使用这些共享库

/lost+found 
这个目录一般是空的,当系统非法关机以后就会存放一些文件

/etc
所有系统管理需要的配置文件和子目录,比如安装MySQL数据库的my.conf

/usr
这是一个非常重要的目录,用户安装的程序默认安装在这里,就像windows目录下的program files目录

/boot(不能动)
Linux启动的核心目录,不要动,动了就启动不了

/proc(不能动)
是一个虚拟目录,是系统内存的映射,访问这个目录可以看到系统信息

/srv(不能动)
service的缩写,存放一些服务启动以后需要提取的数据

/sys(不能动)
存放的文件夹系统,sysfs

/tmp
临时文件的存放目录

/dev
类似windows的设备管理器,把所有硬件用文件的形式存储在这里

/media
Linux自动识别的设备,比如U盘,光驱,识别后Linux会把识别到的设备挂载到这个目录

/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录查看里边的内容

/opt
给主机额外安装软件所存放的目录,比如Oracle数据库,默认为空

/usr/local
软件安装完以后,存放的目录,以源码安装的方式安装的程序一般存放在这了

/var
不断扩充的的目录,习惯将经常被修改的目录放在这个目录,包括日志文件

/selinux
类似Linux的杀毒软件
 

6.vim的用法

7.关机开机以及登录注销指令

shutdown -h now立刻进行关机
shutdown1分钟后会关机(等同下面)
shutdown -h 11分钟后会关机
shutdown -r now现在重新启动计算机
halt关机,作用和上面一样
reboot现在重新启动计算机
sync将内存数据同步到磁盘

在执行关机之前一定要先运行一次sync,防止翻车

注销账号:logout,在图形界面下无法使用logout

8.用户操作

通过useradd命令来创建用户,会在/home文件夹下生成一个同名的家目录

useradd -d 可以指定目录

user -d /home/test king

在/home 文件夹下创建一个test目录,test目录属于用户king

passwd 用户名

一定要加用户名,否则是给当前登录的账户设置密码

userdel 用户名

代表删除某个用户,但是并不删除他的家目录

userdel -r 用户名

代表删除某个用户的同时,删除用户的家目录
一定要谨慎
报错**userdel: user xxx is currently used by process xxx**
代表该用户占用了进程,需要先su到目标账户,输入exit退出用户后,再删除
从账号权限高的用户切换到用户权限低的用户不需要输入密码,反之则需要输入密码
退出到原来账号可以用exit/logout命令

查看目前使用的用户可以使用who am i命令

9.用户组

类似于角色,系统可以对有共性(相同的权限)的多个用户进行统一管理

groupadd 组名

用groupadd命令来添加组别

groupdel 组名

用groupdel命令来删除组

useradd -g 组名 用户名

未指定组名会自动创建一个与用户名相同的组名

usermod -g 组名 用户名

usermod 命令可以将某个用户切换到别的组中

10.用户和组相关文件

etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令(X或空白,加密的):用户标识号(uid):组标识号(gid):注释行描述:主目录(用户家目录):登录shell

etc/shadow文件

口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group 文件

组group的配置文件,记录Linux包含的组的信息

每行含义:组名:口令:组标识号:组内用户列表

passwd 用户名

给某个用户指定密码

11.常用命令

运行级别

0 关机
1单用户(用于找回密码)
2多用户状态没有网络服务(一般不用)
3多用户状态有网络服务(用的最多,不带图形界面)
4系统未使用保留给用户(不用)
5图形界面
6系统重启
常用运行级别3和5

可以用init命令来切换运行级别

systemctl get-default利用查看当前运行级别

利用systemctl set-default切换默认运行级别

12.帮助命令

man获取帮助信息

基本语法:man [命令或配置文件] (功能:获取帮助信息)

例如man ls

linux隐藏文件以 . 开头,如果文件起名为 . 开头会变成隐藏文件

选项可以组合使用,如 ls -la

help获得shell命令的帮助信息

基本用法:help 命令,如help cd

13.文件指令

pwd指令
基本语法:pwd  (显示当前工作文件夹的绝对路径)

ls指令
基本语法:ls [选项] [目录或是文件]
常用选项
-a 显示当前目录所有文件和目录。包括隐藏文件
-i 以列表的形式显示信息
-h 将单位转化为适合人看的

cd指令
基本语法:cd [参数] (功能描述:切换到指定目录)
cd~  或者cd   回到自己的家目录
cd.. 回到当前目录的上一级目录

mkdir指令
mkdir用于创建目录
基本语法:mkdir[选项]要创建的目录
常用选项
-p创建多级目录
例如:mkdir -p /home/cat/tiger

rmdir指令
rmdir指令删除空目录
基本语法:
rmdir [选项] 要删除的空目录
使用细节:
rmdir删除的是空目录,如果目录下有内容时无法删除
如果要删除非空目录需要使用rm -rf(小心谨慎,慎用)

touch指令
touch指创建一个空文件
基本语法:
touch 文件名称

cp指令
cp指令拷贝文件到指定目录
基本语法
cp [选项] 文件名 要拷贝的位置
常用选项
-r:递归复制整个文件夹
实例:
cp hello.txt bbb/
cp -r bbb/ /opt/
使用细节:
强制覆盖不提示的方法:\cp
\cp -r bbb/ /opt/
 
rm指令
移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
-r :递归删除整个文件夹
-f :强制删除不提示
rm hello.txt
rm -rf ddd

mv指令
mv指令移动文件与目录或重命名
基本语法
mv 旧名字 新名字
mv /旧目录/ /新目录/
mv /home/hello1.txt /home/ddd (移动文件)
mv hello.txt hello1.txt(重命名)

cat指令
cat查看文件内容,但是无法修改
基本语法:
cat [选项] 要查看的文件
常用选项:
-n:显示行号
使用细节
cat只能浏览文件,不能修改文件,为了浏览方便一般带上管道命令|more(把前面得到的结果,交给下一个命令进行处理)
cat -n/etc/profile | more[进行交互]

more指令
more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本内容,more命令中内置的若干快捷键,详见操作说明
基本语法:
more 要查看的文件

操作功能说明
空格键(space)代表向下翻一页
enter代表向下翻一行
q代表立刻离开more,不再显示该文件内容
CTRL+F向下滚动一屏
CTRL+B返回上一屏
=输出当前页行号
:f输出文件名和当前行的行号

操作说明,如上图

less指令
less指令用来分屏查看文件内容,他的功能与more类似,但是比more指令更强大,支持各种显示终端,less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大文件时具有更高的效率
基本语法
less 要查看的文件


操作功能说明
空白键向下翻动一页
pagedown向下翻动一页
pageup向上翻动一页
/字串向下搜寻[字串]的功能;n:向下查找;N:向上查找
?字串向上搜寻[字串]的功能;n:向上查找;N:向下查找
q离开less这个程序

操作说明

echo指令
echo输入内容到控制台
基本语法
echo [选项] [输出内容]
实例:
使用echo指令输出环境变量,比如输出$PATH
echo $PATH
使用echo输出hello,world
echo hello,world

head指令
head用于显示文件开头部分的内容,默认情况下head指令显示文件的前十行内容
基本语法
head 文件名 (查看某个文件的前十行内容)
head -n 5 文件名 (查看某个文件的前五行内容)

tail指令
tail用于显示文件尾部内容,默认情况下tail显示文件后十行
基本语法
tail 文件名 (查看文件后十行内容)
tail -n 5 文件名 (查看文件后五行内容)
tail -f 文件 (实时追踪该文档的所有更新)
实例
实时监控mydate.txt,看看文件有变化时,是否能看到,实时追加日期



>指令和>>指令
>为输出重定向(echo hello输出到终端,用>重定向后可输入到文件中,如txt,log文件,>为覆盖)
>>为追加(为追加)
基本语法
ls -l > 文件名 (列表的内容覆盖进文件里)
ls -la >> 文件名(列表的内容追加进文件的末尾)
cat 文件1>文件2 (将文件1的内容覆盖到文件2)
echo"内容">>文件 (echo打印的内容追加进文件末尾)

ln指令
软连接,也叫符号链接,类似windows里的快捷方式,主要存放了链接其他文件的路径
基本语法
ln -s [原文件或目录] [软链接名] (给原文件创建一个软连接)
在home文件夹下创建一个root的软连接
ln -s /root /home/myroot
删除软连接
rm /home/myroot
在软连接目录中使用pwd,看到的是myroot的路径,不是root的

history指令
查看曾经执行过的命令,也可以执行历史命令
基本语法
history(查看已执行过历史命令)
查看最近10个命令
history 10
执行编号5的指令
!5

14.时间日期类指令

date指令-显示当前日期
基本语法
date (显示当前时间)
date+%y(显示当前年份)
date+%m (显示当前月份)
date+%d (显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S" (显示年月日时分秒)

date指令-设置日期
基本语法
date -s 字符串时间
实例
设置系统时间,比如2021-11-11 11:22:22
date -s "2021-11-11 11:22:22"

cal指令-查看日历的指令
基本语法
cal [选项] (不加选项,显示本月日历)
实例
显示2020年日历
cal 2020 

14.查找指令

find指令
find指令将从指定目录向下递归的遍历各个子目录,将满足条件的文件或目录显示在终端
基本语法
find [搜索范围] [选项]
选项说明
选项功能
name<查询方式>按照指定的文件名查找模式查找文件
user<用户名>查找属于指定用户的所有文件
size<文件大小>按照指定文件大小查找文件
查找/home目录下的hello.txt文件
find /home -name hello.txt
查找/opt目录下的,用户名为root的文件
find /opt -user root
查找整个Linux下大于200mb的文件(+n 大于 -n小于 n等于)(单位 K M G)
find / -size +200M

locate指令
locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度快,为了保证查询结果准确度,管理员必须定期更新locate时刻
特别说明
由于locate指令基于数据库进行查询,所以第一次运行之前,必须使用updatedb创建locate数据库
基本语法
locate 文件名
实例
用locate查询hello.txt
updatedb
locate hello.txt

which指令
可以查看某个指令在哪个目录下
比如ls
which ls 

grep指令和管道符号 |
grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法
grep [选项]查找内容 源文件
常用选项
-n 显示匹配行及行号
-i 忽略字母大小写
实例
在hello.txt文件中,查找yes所在行,显示行号
cat /home/hello.txt | grep "yes"
grep -n "柳" /opt/杂文.txt |more

15.压缩和解压类

gzip/gunzip指令
gzip用于压缩文件,gunzip用于解压文件
实例
gzip压缩bbb文件夹下hello.txt文件
gzip /home/bbb/hello.txt /home/bbb/hello2.txt
解压hello2文件
gunzip hello2.txt.gz

zip/unzip指令
zip用于压缩目录,unzip用于解压目录,在项目打包发布时很有用
基本语法
zip [选项] 目录名.zip 压缩文件和目录的命令
unzip [选项] 目录名.zip 解压缩文件

zip常用选项
-r 递归压缩
unzip常用选项
-d<目录>:指定解压后文件存放目录
实例
将ddd下所有文件压缩成ddd.zip
zip -r ddd.zip /home/ddd/ (将ddd目录和他包含的子文件夹都压缩)
将ddd.zip解压到/opt/tmp文件夹中
unzip -d /opt/tmp /home/ddd.zip

tar指令
tar指令是打包指令,最后打包的文件是tar.gz文件
基本语法
tar [选项] XXX.tar.gz 打包的内容 (打包目录,格式为XXX.tar.gz )
选项说明
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
实例
压缩多个文件,将/home/pig.txt 和 /home/cat.txt压缩成pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 
将/home 压缩成myhome.tar.gz文件
tar -zcvf pc.tar.gz /home/
将pc.tar.gz解压到当前目录,(先切换到opt)
tar -zxvf pc.tar.gz
将pc.tar.gz解压到opt/tmp文件夹
tar -zxvf /home/pc.tar.gz -C /opt/tmp/

15.Linux组

在Linux中每个用户必须属于一个组,不能独立于组外,在Linux中每个文件有所有者,所在组,其他组的概念。

1.所有者
一般文件的创建者,谁创建了文件,谁就是文件的所有者
查看文件所有者
ls -ahl

修改文件所有者
chown 用户名 文件名
将apple.txt的所有者改为baize
chown baize apple.txt

2.组的创建
基本指令
groupadd 组名
应用实例
创建一个组monster
groupadd monster
创建一个用户fox,把他放在monster中
useradd -g monster fox

3,文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组
查看文件/目录所在组
ls -ll
用fox创建一个文件,看看该文件的所在组
-rw-r--r--. 1 fox monster 0 7月  16 16:55 1.txt

修改文件的所在组
基本指令
chgrp 组名 文件名
实例
用root创建一个文件,看看文件的所在组,再将文件修改到组fruit
-rw-r--r--. 1 root  root   0 7月  16 16:58 orange.txt
chgrp fruit orange.txt

4.其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限也可以改变某个用户的所在组
改变用户所有组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户的初始目录  特别说明:用户需要有进入新目录的权限
实例
将zwj从原来的组改到wudang组
cat /etc/group //看目前系统拥有的所有组
cat /etc/group |grep wudang //可以用grep过滤只查看wudang
usermod -g wudang zwj

16.linux权限

ls -l中显示的内容如下
-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
0123456789
1.第0位确定文件类型(d,-,l,c,b)
l是链接,相当于windows的快捷方式
d是目录,相当于Windows的文件夹
c是字符设备文件,如鼠标键盘
b是块设备,比如硬盘
2.第1-3位确定所有者(该文件的所有者)拥有的文件权限--user
3.第4-6位确定所有者所属组拥有该文件的权限--group
4.第7-9位确定其他用户拥有该文件的权限==other

rwx作用到文件
r表示可以读取(read),查看
w表示可写(write)可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在目录有读写权限,才能删除该文件
x表示可以被执行(execute)

rwx作用到目录
r表示可以读取(read),可以读取。ls查看文件内容
w表示可写(write)可以修改,对目录内创建+删除+重命名目录
x表示可以被执行(execute),可以进入该目录

ls -l中显示的内容如下:
-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
1.第0位确定文件类型(d,-,l,c,b)
2.其余字符每3个一组(rwx)读(r)写(w)执行(x)
3.
第一组rwx:文件拥有者的权限是读,写和执行
第二组rw-:与文件拥有者同一组的用户的权限是读写,但是不能执行
第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
4.可用数字表示为:r=4,w=2,x=1.所以rwx=4+2+1=7

其他说明
1 文件:硬连接数(如果是文件就1) 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096字节
feb 2 16:40 最后修改时间
apple.txt 文件名

权限修改
基本说明:
通过chmod指令,可以修改文件或者目录的权限
第一种方式:+ - =变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
1.chmod u=rwx g=rx o=x 文件/目录名
2.chmod o+w 文件/目录名
3.chmod a-x 文件/目录名
实例
给文件赋予所有者读写执行权限,给文件赋予所在组读写执行权限,给文件赋予其他组读写执行权限
chmod u=rwx,g=rwx,o=rwx apple.txt 
给文件所有者除去执行权限
chmod u-x apple.txt
给文件所有者加上执行权限
chmod u+x apple.txt

通过数字变更权限
r=4 w=2 x=1 rwx=7
chmod u=rwx g=rx o=x 文件/目录名相当于chmod 751 文件名/目录名
实例
将文件权限改为rwxr-xr-x
chmod 755 apple.txt

修改文件所有者
chown 新拥有者 文件/目录 改变所有者
chown 新拥有者:新所在组 文件/目录改变所有者和所在组
-R递归改变子文件夹和目录
实例
请将abc.txt所有者改为baize
chown baize abc.txt 
将bbb下所有文件和目录都改为zwj wudang
chown -R zwj:wudang /home/bbb

修改文件所在组
chgrp 新的组 文件/目录 改变所在组
请将abc文件所在组改为shaolin
chgrp shaolin abc.txt 
请将bbb文件夹下所有文件都改为shaolin
chgrp -R shaolin bbb