今天带来Linux入门的一些基础的笔记,科班出身的同学们,Linux已经成为了必修课了,下面我带来关于Linux的相关入门知识以及Linux简单的介绍!

Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux概述

1.1 Unix历史

我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!

Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?

大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,

也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:

而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,

而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。

后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了

在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。

虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统

源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。

1.2 Linux历史

UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,

当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。。不幸的是,从那时候开始,

UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的

操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。

可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。

他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果

通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处,

但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新

问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。得注意的是Linux并没有包括Unix源码,

它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

命令格式: 命令 [选项] [参数]

ls -a -l -lh -ld

Linux操作系统

快捷键

ctrl shift +

ctrl -

ctrl shift c

ctrl shift v

ctrl l / clear

ctrl shift t

alt 1

ctrl alt ←

ctrl c

ctrl d

ctrl z





ctrl w 删除前面单词

ctrl d 删除后面字母

ctrl alt f1 //切换图形化

ctrl alt f2-f6 //切换字符



su,su -

[centos@localhost ~]$ su user1

Password:

[user1@localhost centos]$

[centos@localhost ~]$ su - user1

Password:

Last login: Tue Sep 14 00:51:14 PDT 2021 on pts/0

[user1@localhost ~]$



前导符

[root@loaclhost~] #

root:用户名

@:间隔符

loaclhost:主机名

:表示当前工作目录,表示家目录

:当前用户身份,#代表管理员,$代表普通用户

tab

命令补全,常用tab键,如果按一次出不来就按两次,此时表示命令不唯一,如果超过两次还没有出来就表示命令错误。

man

man + 命令 ----- man ls

history

history

!num ---- !60

!cmd ---- !rm

alias

[root@localhost ~]# alias wk='pwd'



[root@localhost ~]# alias

alias cp='cp -i'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

alias wk='pwd'



[root@localhost ~]# wk

/root



[root@localhost ~]# pwd

/root

作业:将自己名字(全称拼音)设置成history,并查看

基本命令

ls

Linux下一切皆文件



命令格式:

ls

ls //显示当前路径下的文件



命令格式:

ls [OPTION]

ls -a //显示所有文件(包含以.或..开头的隐藏文件)

ls --all

ls -l //长格式显示文件信息

-rw-------. 1 root root 2770 Sep 7 01:36 anaconda-ks.cfg

文件类型:

-:普通文件(黑色)

d:目录/文件夹(蓝色)

l:链接文件(天蓝色)

rw-------:文件权限

1:节点数

root:用户名

root:组名

2770:文件大小

Sep 7 01:36:最后一次修改时间

anaconda-ks.cfg:文件夹

ls -lh 人性化显示文件大小,必须配合-l使用

ls -ld 显示自身属性,必须配合-l使用





命令格式:

ls [选项]... [FILE]

查看文件和文件夹的长格式信息(文件夹的长格式信息要多加一个d)

[root@localhost ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 2770 Sep 7 01:36 anaconda-ks.cfg

[root@localhost ~]# ls -l Documents

total 0

[root@localhost ~]# ls -ld Documents

drwxr-xr-x. 2 root root 6 Sep 14 22:32 Documents

pwd(print working directory) 打印当前工作目录

绝对、相对路径

绝对:从/开始,具有唯一性

湖北省武汉市洪山区光谷广场

相对:从半路开始

洪山区光谷广场

cd 更改目录

cd (change directory)

cd /etc/sysconfig/network-scripts/

cd .. 返回上一层目录

cd /tmp

cd /var

cd /etc

cd - 返回上一次进入的目录(相当于遥控器的返回键)

1 115 117

/tmp /var /etc cd

cd 返回到家目录

cat、more、less 查看文件内容

cat 只适合查看短文件

命令格式:cat [选项] 文件名

cat /etc/passwd



命令格式:more 文件名

more 只能下翻,不能上翻

more /etc/passwd



命令格式:less 文件名

less 既可上翻,又可下翻

less /etc/passwd

head、tail 查看文件内容

命令格式:head [选项] 文件名

head /etc/passwd

 # head  -n 3/etc/passwd

命令格式:tail [选项] 文件名

tail /etc/passwd

 # tail -n /etc/passwd

touch:1.创建文件;2.刷新时间戳

命令格式:touch 文件名

[root@localhost ~]# touch 1.txt

[root@localhost ~]# ls -l 1.txt

-rw-r--r--. 1 root root 0 Sep 15 01:37 1.txt



[root@localhost ~]# touch 1.txt

[root@localhost ~]# ls -l 1.txt

-rw-r--r--. 1 root root 0 Sep 15 01:39 1.txt

mkdir:创建文件夹

(建议创建在/下面)

命令格式: mkdir [选项] 目录名

mkdir /test2

mkdir /test2/test20

ls -ld /test2/test20/

mkdir /test3/test30 || no

echo $?

mkdir -p /test3/test30 || yes

rmdir:删除空文件夹

命令格式:mkdir 文件名

[root@localhost /]# ls /test2/test20/

[root@localhost /]# ls /test3/test30/

[root@localhost /]# ls /test40/

[root@localhost /]# rmdir /test2

rmdir: failed to remove ‘/test2’: Directory not empty

[root@localhost /]# rmdir /test2/test20/

[root@localhost /]# rmdir /test40

rm

-r 递归

-f 强制

命令格式:rm [选项] 文件名

[root@localhost ~]# ls /test3/test30

[root@localhost ~]# rm /test3

rm: cannot remove ‘/test3’: Is a directory

[root@localhost ~]# rm -f /test3

rm: cannot remove ‘/test3’: Is a directory

[root@localhost ~]# rm -r /test3

rm: descend into directory ‘/test3’? y

rm: remove directory ‘/test3/test30’? y

rm: remove directory ‘/test3’? ^C

[root@localhost ~]# rm -rf /test3/

[root@localhost ~]# echo $?

0

date

[root@localhost ~]# date

Wed Sep 15 01:40:00 PDT 2021



date 月日时分年点秒

[root@localhost ~]# date 091516412021.50

Wed Sep 15 16:41:50 PDT 2021

[root@localhost ~]# date

Wed Sep 15 16:41:55 PDT 2021

dd

案例1:cpu爆满

[root@localhost ~]# dd if=/dev/zero of=/dev/null

[root@localhost ~]# top

案例2:制作指定大小的文件

[root@localhost ~]# dd if=/dev/zero of=4M bs=2M count=2

6M(bs大小)  8M(数量) 10M

[root@localhost ~]# dd if=/dev/zero of=6M bs=6M count=1

[root@localhost ~]# dd if=/dev/zero of=8M bs=4M count=2

[root@localhost ~]# dd if=/dev/zero of=10M bs=5M count=2

echo回显

[root@localhost ~]# echo "123"

123

[root@localhost ~]# echo "456"

456

[root@localhost ~]# echo 456

cp (copy)复制

默认复制文件

命令格式:

cp [选项] 源文件 目标文件

[root@localhost ~]# cp 2M /tmp/

[root@localhost ~]# cp test1 /mnt/

cp: omitting directory ‘test1’

[root@localhost ~]#

[root@localhost ~]# cp -r test1 /mnt/



[root@localhost ~]# echo "123456" > 1.txt

[root@localhost ~]# echo "456" > 2.txt

[root@localhost ~]# cat 2.txt

456

[root@localhost ~]# cp 1.txt 2.txt

cp: overwrite ‘2.txt’? y

[root@localhost ~]# cat 2.txt

mv(remove)

命令格式:

mv 源文件 目标文件

[root@localhost ~]# mv 2M /mnt

[root@localhost ~]# ls

1.txt Desktop original-ks.cfg test1

2.txt Documents Pictures Videos

4M Downloads Public

anaconda-ks.cfg Music Templates



[root@localhost ~]# ls

1.txt Desktop original-ks.cfg test1

2.txt Documents Pictures Videos

4M Downloads Public

anaconda-ks.cfg Music Templates

[root@localhost ~]# mv 4M /mnt/10M

破解密码

1.重启虚拟机

2.按↑↓键暂停到启动界面吗,按e进入启动程序

3.找到linux16,并按end跳到行尾,添加rd.break

4.按ctrl x进入系统

5.mount -o remount,rw /sysroot //以读写方式重新挂载系统

6.chroot /sysroot //切换到/sysroot

7.echo "123456" | passwd --stdin root //设置root的密码为123456

8.touch /.autorelabel //给selinux打上下文关系标签

9.exit //退出

10.reboot //重启

|(管道符):将左边的执行结果传到右边

wc统计

命令格式:wc [选项] 文件名

-l 统计行数

-c 统计字符数

-w 统计单词

grep:过滤

命令格式:grep 关键字 文件名

[root@localhost ~]# grep root /etc/passwd

root0:0:root:/root:/bin/bash

operator11:0:operator:/root:/sbin/nologin

[root@localhost ~]# grep ^root /etc/passwd

root0:0:root:/root:/bin/bash

[root@localhost ~]# grep bash$ /etc/passwd

root0:0:root:/root:/bin/bash

centos1000:1000:Centos7:/home/centos:/bin/bash

  1. vim 1.txt
  2. i
  3. 输入内容
  4. esc
  5. :wq

原文件:

[root@localhost ~]# cat 1.txt

123 we r tt uy u

root

root

ROOT

-i 忽略大小写

[root@localhost ~]# grep root 1.txt

root

root

[root@localhost ~]# grep -i root 1.txt

root

root

ROOT

-v 取反

[root@localhost ~]# grep -v root 1.txt

123 we r tt uy u

ROOT

^$ 过滤空行

[root@localhost ~]# grep ^$ 1.txt


[root@localhost ~]# grep -v ^$ 1.txt

123 we r tt uy u

root

root

ROOT

[root@localhost ~]# grep -v "$|#" 1.txt

123 we r tt uy u

root

root

ROOT

[root@localhost ~]# grep -Ev "^\(|^#" 1.txt
123 we r tt uy u
root
ROOT
1.关键字
2.^关键字
3.关键字\)

4.-i

5.-v

6.^$ -v

作业:

1.统计root家目录下有多少文件
[root@localhost ~]# ls | wc -l
11

​ 2.统计anaconda-ks.cfg文件有多少单词和字符

[root@localhost ~]# wc -w anaconda-ks.cfg

283 anaconda-ks.cfg

[root@localhost ~]# wc -c anaconda-ks.cfg

2770 anaconda-ks.cfg

​ 3.过滤出/etc/shadow文件下带centos的行

[root@localhost ~]# grep centos /etc/shadow

centos:\(1\)c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::

​ 4.过滤出/etc/shadow文件下以centos开头的行

[root@localhost ~]# grep ^centos /etc/shadow

centos:\(1\)c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::

基本命令作业

1.将环境的主机名改为你的姓名,如wangke

2.进入/tmp目录并显示当前工作目录

3.查看/etc/group文件的前3行和后5行

4.在/root下创建10.txt和100.txt,并用长格式显示文件信息

5.修改系统时间,与windows时间保持一致

6.创建文件夹qwer,并在qwer下创建qaz的文件夹

7.在/qwer/qaz下面创建xinchuang20303-4的文件

8.删除qwer目录

9.创建wangke文件夹,并删除

10.将/root下的10.txt复制到/tmp下

11.将/root下的100.txt3到/mnt下并重命名为200.txt

12.过滤出/etc/login.defs的空行和注释行

13.破解密码,将系统密码改为qwer,(把输入的命令截图)

参考答案

cd

head -n 3 /etc/group

tail -n 5 /etc/group

pwd

touch {10,100}.txt

ls

ls -l 10.txt

ls -l 100.txt

date

date 100613532021.45

date

mkdir /qwer/qaz

mkdir -p /qwer/qaz

touch /qwer/qaz/xinchuang20303-4

cd /qwer/qaz/

ls

rm -rf /qwer/

cd

mkdir /wangke

rmdir /wangke/

ls

ls | grep 10/txt

ls | grep 10.txt

cp 10.txt /tmp/

cd /tmp/

ls | grep 10.txt

cd

mv /root/100.txt /mnt/200.txt

pwd

ls | grep 100.txt

cd /mnt/

ls | grep 200.txt

cd

grep "$|#" /etc/login.defs

grep -E "$|#" /etc/login.defs

grep -E -v "$|#" /etc/login.defs

history -a

通配符

*:匹配一个或多个任意字符

[root@wangke mnt]# ls

1.txt a.txt b.txt

ab.txt A.txt B.txt

[root@wangke mnt]# ls *.txt

1.txt a.txt b.txt

ab.txt A.txt B.txt

?:匹配单个字符

[root@wangke mnt]# ls ?.txt

1.txt A.txt B.txt

a.txt b.txt

[root@wangke mnt]# ls ??.txt

ab.txt

[]:匹配[]内的任意单个字符

[root@wangke mnt]# ls [abc].txt

a.txt b.txt

[^]、[!]:不匹配[]的任意单个字符

[root@wangke mnt]# ls

1.txt a.txt b.txt

ab.txt A.txt B.txt

[root@wangke mnt]# ls [ac].txta.txt

[root@wangke mnt]# ls [!ac].txt

1.txt A.txt b.txt B.txt

[root@wangke mnt]# ls [^ac].txt

1.txt A.txt b.txt B.txt

{}

{a..f}:a到f

[root@wangke mnt]# touch {a..f}.txt

[root@wangke mnt]# ls

a.txt b.txt c.txt d.txt e.txt f.txt

{A,C}:A和C

[root@wangke mnt]# touch {A,C}.txt

[root@wangke mnt]# ls

a.txt b.txt C.txt e.txt

A.txt c.txt d.txt f.txt

vim:创建、查看、编辑文件

vi和vim的区别

vim的vi的升级版

vim有高亮显示

vim的三种模式

命令模式:直接用vim打开文件就是命令模式,标识符:1.光标闪动,2.左下角有文件名、行数、字符数

输入模式:按aio任意字符即可进入输入模式,标识符:输入/中,insert/英文

末行模式:最后一行输入保存退出内容,标识符:”:(冒号)“

三种模式的切换

命令模式 aio ---->输入模式

<-----Esc

命令模式 :------>末行模式

<------Esc

aio

命令模式

a:光标所在字符后面输入

A:光标所在行行尾输入

I:光标所在行行首输入

i:光标所在字符前面输入

o:光标所在行下一行输入

O:光标所在行上一行输入

保存、退出

末行模式

w(保存)

q(退出)

wq/x(保存退出)

!表示强制

命令模式

ZZ(大写)(保存退出)

光标的移动

vim /etc/passwd

命令模式

h:左

j:下

k:上

l:右

上下左右方向键

行内跳转

命令模式

^/home:到行首

$/end:到行尾

w:单词跳转

行间跳转

命令模式

gg:跳转到首行

G:跳转到尾行

3gg:跳转到第3行

末行模式

:20:跳转到到第20行

:%:跳转到最后一行

页面跳转

pageup:向上翻页

pagedown:向下翻页

复制

命令模式

yy:复制光标所在行

2yy:复制光标所在的2行,包含光标所在行

yw:复制单词

末行模式

:3,6y:复制3到6行

:%:复制全文

:7y:复制第7行

粘贴

命令模式

p(小写):光标下一行粘贴

P(大写):粘贴到光标上一行

apache网站

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32

:set nu

G

ww

dw

a

将ONBOOT=NO改为ONBOOT=yes

[root@localhost ~]# systemctl restart network

1.ping通百度

2.安装软件

[root@localhost ~]# yum repolist

[root@localhost ~]# yum install -y httpd

3.关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service

4.关闭selinux

[root@localhost ~]# setenforce 0

5.开启服务

[root@localhost ~]# systemctl restart httpd

6.自定义网站

[root@localhost ~]# echo 123456 > /var/www/html/index.html

删除

命令模式

dd:删除光标所在行

dw:删除单词

5dd:删除5行(包含光标所在行)

x/del:删除光标所在字符

D:删除光标所在行后半部分的字符(包含光标所在字符)

dgg:删除光标之前的所有行

dG:删除光标之后的所有行

末行模式:

:4d:删除第4行

:1,9d:删除1到9行

:%d:删除全文

撤回

命令模式

u:一步步撤回

查找

命令模式

/root:查找root

n:往下查找

N:往上查找

?root:

n:往上查找

N:往下查找

行号

末行模式

:set nu

:set nonu

:noh:取消高亮

替换

末行模式

:s/root/qq 将光标所在行的第一个root替换为qq

:s/root/qq/g 将光标所在行的所有root都替换为qq

:1,3s/root/qq/g 将1到3行的所有root都替换为qq

:%s/root/qq/g

批量注释

1.Ctrl v 进入可视化块模式

2.选中你要注释的行

3.按I(大写)

4.按#

5.esc(两下)

取消批量注释

1.ctrl v

2.选中你要取消注释的行

3.按d

读入、写入

末行模式

:r /etc/hosts 将/etc/hosts文件的内容读入当前文件里面光标所在行下一行

:w /tmp/2.txt 将此文件内容另存为到/tmp/2.txt文件里面

vim练习

1.创建1.txt并在里面写上两行内容(自定义)

2.将/etc/hosts文件内容读入此文件

3.将此文件另存为到/mnt/qq.txt

自动设置行号

1.vim /etc/vimrc

2.G

3.o

添加set number

管理本地用户和组

1.用户分类

root:0

普通用户

RHEL6:500

RHEL7:1000

系统用户(程序用户)

1.UID1000

2。home

shell

useradd:创建用户

root0:0:root:/root:/bin/bash

root:用户名

x:密码占位符

0:uid

0:gid

root:描述信息

/root:家目录

/bin/bash:登录shell(/bin/bash允许用户登录,/sbin/nolgin不允许用户登录)

命令格式:

useradd [选项] 用户名

[root@localhost ~]# useradd user1

[root@localhost ~]# tail -n 1 /etc/passwd

user11001:1001::/home/user1:/bin/bash

user21002:1002::/home/user2:/bin/bash

-u 指定uid

localhost ~]# useradd -u 1010 user3

user31010:1010::/home/user3:/bin/bash

-d 指定家目录

[root@localhost ~]# useradd -d /home/qq user4

[root@localhost ~]# tail -n 3 /etc/

user21002:1002::/home/user2:/bin/bash

user31010:1010::/home/user3:/bin/bash

user41011:1011::/home/qq:/bin/bash

-s 指定登录shell

[root@localhost ~]# useradd -s /sbin/nologin user5

[root@localhost ~]# tail -n 1 /etc/passwd

user51012:1012::/home/user5:/sbin/nologin

验证:

[root@localhost ~]# su - user5

This account is currently not available.

-c 指定描述信息

[root@localhost ~]# useradd -c testuser user6

[root@localhost ~]# tail -n 1 /etc/passwd

user61013:1013:testuser:/home/user6:/bin/bash

-g 将用户加入到主组(1个)

id 查看用户信息

[root@localhost ~]# groupadd group1

[root@localhost ~]# groupadd group2

[root@localhost ~]# useradd -g group1 user7

[root@localhost ~]# id user7

uid=1014(user7) gid=1014(group1) 组=1014(group1)

[root@localhost ~]# id user6

uid=1013(user6) gid=1013(user6) 组=1013(user6)

[root@localhost ~]#

-G 将用户加入到附加组

[root@localhost ~]# useradd -G group2 user8

[root@localhost ~]# id user8

uid=1015(user8) gid=1016(user8) 组=1016(user8),1015(group2)

useradd里面的-u是指定uid,-g将用户加入到主组,-G将用户加入到附加

groupadd里面的-g才是指定gid

练习题目

创建组sysadm

创建用户harry,natasha,tom

要求harry,natasha的附加组为sysadm

要求tom用户的登陆shell为非交互式shell

三个用户的密码为redhat

创建用户user100

1.描述信息为ptyh

2.家目录为/home/wx

3.uid为6666

4.登录shell为/sbin/nologin

[root@localhost ~]# useradd -c ptyh -d /home/wx -u 6666 -s /sbin/nologin user100

[root@localhost ~]# tail -n 1 /etc/passwd

user1006666:6666:ptyh:/home/wx:/sbin/nologin

usermod:修改用户

[root@localhost ~]# usermod -c testc -u 1515 -d /qwer c

[root@localhost ~]# tail -n 1 /etc/passwd

c1515:1000:testc:/qwer:/bin/bash

[root@localhost ~]# id c

uid=1515(c) gid=1000(c) 组=1000(c),10(wheel)

[root@localhost ~]# groupadd group1

[root@localhost ~]# groupadd group2

[root@localhost ~]# usermod -g group1 -G group2 c

[root@localhost ~]# id c

uid=1515(c) gid=1001(group1) 组=1001(group1),1002(group2)

[root@localhost ~]#

-u

-c

-g

-G

-s

-d

useradd user1

echo “123” | passwd --stdin user1

-L:锁定

[root@localhost ~]# usermod -L user1

[root@localhost ~]#

-U:解锁

[root@localhost ~]# usermod -U user1

解锁之后可以登录

[root@localhost ~]# su - c

su: 警告:无法更改到 /qwer 目录: 没有那个文件或目录

[c@localhost root]$ su - user1

密码:

[user1@localhost ~]$

userdel:删除用户

-r 递归删除(从用户邮箱删除)

练习:

1.创建user2

2.分别检查3个文件中是否有user1和user2 (/etc/passwd /etc/shadow /etc/group cd /var/spool/mail ----- ls)

3.userdel user1 -----重复第2步 ----- 只能从3个文件中将用户删除,并不能删除邮箱(路径)---rmdir(空)---rm -rf 文件和目录

4.userdel -r user2 ----重复第2步 -----删除更加干净

groupadd:创建组

-g 指定gid

[root@localhost ~]# groupadd -g 6666 group4

[root@localhost ~]# tail -n 3 /etc/group

group21002:c

group31003:

group46666:

groupmod:修改组

-g 修改gid

[root@localhost ~] # groupmod -g 7777 group4

[root@localhost ~]# tail -n 3 /etc/group

group21002:c

group31003:

group47777:



-n 修改组名

[root@localhost ~]# groupmod -n testgroup4 group4

[root@localhost ~]# tail -n 3 /etc/group

group21002:c

group31003:

testgroup47777:

groupdel:删除组

[root@localhost ~]# groupdel testgroup4

补充:将用户加入到组

1.创建用户的时候将用户加入到组

[root@localhost ~]# groupadd group10

[root@localhost ~]# groupadd group20

[root@localhost ~]# groupadd group30

[root@localhost ~]# useradd -g group10 user10

[root@localhost ~]# usermod -g group20 user10



2.修改用户的组



3.直接将已存在的用户加入到组

[root@localhost ~]# gpasswd -a user10 group10

正在将用户“user10”加入到“group10”组中

[root@localhost ~]# tail -n 5 /etc/group

group21002:c

group31003:

group101004:user10

group201005:

group301006:



[root@localhost ~]# gpasswd -d user10 group10

正在将用户“user10”从“group10”组中删除

^[[A[root@localhost tail -n 5 /etc/groupup10

group21002:c

group31003:

group101004:

group201005:

group301006:

[root@localhost ~]#

Openssh

查看信息

1.查看地址

ip a = ip address show

ifconfig

2.查看网关

ip r = ip route

思路

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

1.将ONBOOT修改为yes

2.启用windows上面的vmnet8网卡

3.windows和Linux做互通

4.远程到Linux

ssh root@192.168.184.128

文件权限

[root@localhost ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1225 11月 18 2020 anaconda-ks.cfg



权限:

rw-------:一共9个字符,分3段

第一段(前3个字符):拥有人、所属者:user:u

第二段(中间3个字符):拥有组、所属组:group:g

第三段(后3个字符):其他人:other:o



r:read:读权限:4

w:write:写权限:2

x:execute:执行权限:1

-:无权限

所属关系

root:拥有人、所属者

root:拥有组、所属组

权限 对文件的影响 对目录的影响

r (读) 可以读取文件的内容 可以列出目录的内容(文件名) (列出目录下的文件名)

w(写) 可以更改文件的内容 可以创建或删除目录中的任一文件

x(执行) 可以作为命令执行文件 可以访问目录的内容 (点进目录下目录)

修改普通权限

rw-------:chmod---修改权限

root root:chown---修改所属



修改权限的两种方式

1.用字符修改

命令格式:chmod ugoa +-= rwx filename

原:rw-------

现:rwxrw-rw-

chmod u+x,g=rw,o+rw anac

     练习:
原:rwx rw- rw-
现:rwx r-- ---
[root@localhost ~]# chmod g-w,o=- anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rwxr-----. 1 root root 1225 11月 18 2020 anaconda-ks.cfg



原:rwx r-- ---

现:r-- r-- r--

[root@localhost ~]# chmod a=r anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-r--r--r--. 1 root root 1225 11月 18 2020 anaconda-ks.cfg



2.用数字修改

命令格式:chmod nnn filename

原:r-- r-- r--

现:rwx rw- rw-

7 6 6

[root@localhost ~]# chmod 766 anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 root root 1225 11月 18 2020 anaconda-ks.cfg



原:rwx rw- rw-

现:rw- rw- rw-

chmod u-x anac

chmod 666 anac

修改所属关系

root root:chown---修改所属

命令格式:chown user|(.|:)group filename

修改用户命令格式:chown user filename

修改组令格式:chown 【.|:】group filename



修改所属者

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 root root 1225 11月 18 2020 anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 user4 root 1225 11月 18 2020 anaconda-ks.cfg



用.修改所属组

[root@localhost ~]# chown .c anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 user4 c 1225 11月 18 2020 anaconda-ks.



用:修改所属组

cfg[root@localhost ~]# chown :root anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 user4 root 1225 11月 18 2020 anaconda-ks.cfg





[root@localhost ~]# chown user10:user10 anaconda-ks.cfg

[root@localhost ~]# ls -l anaconda-ks.cfg

-rwxrw-rw-. 1 user10 user10 1225 11月 18 2020 anaconda-ks.cfg

[root@localhost ~]#





练习:

1.创建用户user10和user20

useradd user10

useradd user20

2.创建文件1.txt,2.txt

touch {1,2}.txt

3.将1.txt和2.txt的所属者改为c

chown c 1.txt

chown c 2.txt

4.将1.txt所属组改为user10 (要求用.修改)

chown .user10 1.txt

5.将2.txt所属组改为user20 (要求用:修改)

chown :user20 2.txt

更改目录所属关系:

[root@localhost ~]# ls -ld /test1

drwxr-xr-x. 2 root root 6 11月 3 04:10 /test1

[root@localhost ~]# touch /test1/test.txt

[root@localhost ~]# ls -ld /test1/test.txt

-rw-rw-r--. 1 root root 0 11月 3 04:16 /test1/test.txt

 [root@localhost ~]# chown c:user10 /test1
[root@localhost ~]# ls -ld /test1
drwxr-xr-x. 2 c user10 22 11月 3 04:16 /test1
[root@localhost ~]# ls -ld /test1/test.txt
-rw-rw-r--. 1 root root 0 11月 3 04:16 /test1/test.txt -R 递归
[root@localhost ~]# chown -R user10:c /test1/
[root@localhost ~]# ls -ld /test1
drwxr-xr-x. 2 user10 c 22 11月 3 04:16 /test1
[root@localhost ~]# ls -ld /test1/test.txt
-rw-rw-r--. 1 user10 c 0 11月 3 04:16 /test1/test.txt

默认权限

文件夹:755=777-022

文件:644=666-022

[root@localhost ~]# umask

0022

[root@localhost ~]# umask 0002

[root@localhost ~]# touch 2.txt

[root@localhost ~]# ls -l 2.txt

-rw-rw-r--. 1 root root 0 11月 3 04:13 2.txt

[root@localhost ~]# mkdir /test2

[root@localhost ~]# ls -ld /test2

drwxrwxr-x. 2 root root 6 11月 3 04:14 /test2

ACL权限

setfacl:

getfacl:



命令格式

setfacl [选项] user:username:rwx |group:groupname:rwx filename

file:xinchuang20303-4

user:banzhang(rwx),tuanzhishu(rw),xuexiweiyuan(rw)

group:diyizu(rwx),dierzu(rw),disanzu(r)



[root@localhost ~]# touch xinchuang20303-4

[root@localhost ~]# useradd banzhang

[root@localhost ~]# useradd tuanzhishu

[root@localhost ~]# useradd xuexiweiyuan

[root@localhost ~]# groupadd diyizu

[root@localhost ~]# groupadd dierzu

[root@localhost ~]# groupadd disanzu



[root@localhost ~]#

[root@localhost ~]# setfacl -m u:banzhang:rwx,u:tuanzhishu:rw,

u:xuexiweiyuan:rw xinchuang20303-4



[root@localhost ~]# setfacl -m g:diyizu:rwx,g:dierzu:rw,g:disa

nzu:r xinchuang20303-4 [root@localhost ~]# getfacl xinchuang20303-4

file: xinchuang20303-4

owner: root

group: root

user::rw-

user:banzhang:rwx

user:tuanzhishu:rw-

user:xuexiweiyuan:rw-

group::r--

group:diyizu:rwx

group:dierzu:rw-

group:disanzu:r--

mask::rwx

other::r--



-x 一步步移除

[root@localhost ~]# setfacl -x g:diyizu xinchuang20303-4

[root@localhost ~]# setfacl -x g:diyizu xinchuang20303-4



[root@localhost ~]# getfacl xinchuang20303-4

file: xinchuang20303-4

owner: root

group: root

user::rw-

user:tuanzhishu:rw-

user:xuexiweiyuan:rw-

group::r--

group:dierzu:rw-

group:disanzu:r--

mask::rw-

other::r--



-b一次性移除

[root@localhost ~]# setfacl -b xinchuang20303-4

[root@localhost ~]# getfacl xinchuang20303-4

file: xinchuang20303-4

owner: root

group: root

user::rw-

group::r--

other::r--

练习

1.创建文件1.txt

2.创建用户user1,user2

3.创建组group1、group2

4.给1.txt设置acl权限

user1(rwx)

user2(r)

group1(rw)

group2(r)

5.移除group2的权限

6.移除所有权限

特殊权限

suid

作用:文件的有效身份为文件的拥有者而非执行者

u+s

4

sgid

作用:文件的有效身份为文件的拥有者而非执行者

继承所属组

g+s

2

sticky(t位)

 o+t
1

1.txt:默认文件权限:chmod 4644 1.txt

suid案例

作用:文件的有效身份为文件的拥有者而非执行者 字符表示法:u+s 数字表示法:4

1.用root身份:查看/etc/passwd的文件权限 ----644

[root@localhost ~]# ls -l /etc/passwd

-rw-r--r--. 1 root root 2650 11月 10 00:46 /etc/passwd



2.用户c身份:cat /etc/passwd -----能看

[root@localhost ~]# su - c

[c@localhost ~]$ cat /etc/passwd

root0:0:root:/root:/bin/bash

3.用root身份:将查看/etc/passwd的文件权限修改为640

[root@localhost ~]# chmod 640 /etc/passwd

[root@localhost ~]# ls -l /etc/passwd

-rw-r-----. 1 root root 2650 11月 10 00:46 /etc/passwd



4.用户c身份:cat /etc/passwd -----不能看

[c@localhost ~]$ cat /etc/passwd

cat: /etc/passwd: 权限不够



5.用root身份:查看cat的二进制文件路径

[root@localhost ~]# which cat

/usr/bin/cat

6.用root身份:查看/usr/bin/cat的文件权限

[root@localhost ~]# ls -l /usr/bin/cat

-rwxr-xr-x. 1 root root 51856 5月 11 2019 /usr/bin/cat

7.用root身份:将/usr/bin/cat的文件权限加晚上suid权限

[root@localhost ~]# chmod 4755 /usr/bin/cat

[root@localhost ~]# ls -l /usr/bin/cat

-rwsr-xr-x. 1 root root 51856 5月 11 2019 /usr/bin/cat



8.用户c身份:cat /etc/passwd -----能看(因为c在使用cat命令时调用了拥有人的权限)

[c@localhost ~]$ cat /etc/passwd

root0:0:root:/root:/bin/bash

sgid案例

作用:

1.文件的有效身份为文件的拥有组而非执行组

2.继承权限

字符表示法:g+s ​ 数字表示法:2

1.用root身份:查看/etc/passwd的文件权限 ----644

[root@localhost ~]# ls -l /etc/passwd

-rw-r--r--. 1 root root 2650 11月 10 00:46 /etc/passwd



2.用户c身份:cat /etc/passwd -----能看

[root@localhost ~]# su - c

[c@localhost ~]$ cat /etc/passwd

root0:0:root:/root:/bin/bash

3.用root身份:将查看/etc/passwd的文件权限修改为640

[root@localhost ~]# chmod 640 /etc/passwd

[root@localhost ~]# ls -l /etc/passwd

-rw-r-----. 1 root root 2650 11月 10 00:46 /etc/passwd



4.用户c身份:cat /etc/passwd -----不能看

[c@localhost ~]$ cat /etc/passwd

cat: /etc/passwd: 权限不够



5.用root身份:查看cat的二进制文件路径

[root@localhost ~]# which cat

/usr/bin/cat

6.用root身份:查看/usr/bin/cat的文件权限

[root@localhost ~]# ls -l /usr/bin/cat

-rwxr-xr-x. 1 root root 51856 5月 11 2019 /usr/bin/cat

7.用root身份:将/usr/bin/cat的文件权限加晚上suid权限

[root@localhost ~]# chmod 2755 /usr/bin/cat

[root@localhost ~]# ls -l /usr/bin/cat

-rwsr-xr-x. 1 root root 51856 5月 11 2019 /usr/bin/cat



8.用户c身份:cat /etc/passwd -----能看(因为c在使用cat命令时调用了拥有人的权限)

[c@localhost ~]$ cat /etc/passwd

root0:0:root:/root:/bin/bash

案例2:继承权限

1.创建目录/test1

[root@localhost ~]# mkdir /test1

[root@localhost ~]# ls -ld /test1/

drwxr-xr-x. 2 root root 6 11月 10 02:36 /test1/

2.在目录下创建1.txt

[root@localhost ~]# touch /test1/1.txt



3.分别查看/test1和/test1/1.txt的权限和所属

[root@localhost ~]# ls -ld /test1/

drwxr-xr-x. 2 root root 6 11月 10 02:36 /test1/

 [root@localhost ~]# ls -l /test1/1.txt
-rw-r--r--. 1 root root 0 11月 10 02:37 /test1/1.txt



4.修改目录的sgid权限

[root@localhost ~]# chmod g+s /test1/

[root@localhost ~]# ls -ld /test1/

drwxr-sr-x. 2 root root 19 11月 10 02:37 /test1/

5.修改目录的所属组为c

[root@localhost ~]# chown c:c /test1/

[root@localhost ~]# ls -ld /test1/

drwxr-sr-x. 2 c c 19 11月 10 02:37 /test1/



6.分别查看/test1和/test1/1.txt所属关系

[root@localhost ~]# ls -ld /test1/

drwxr-sr-x. 2 c c 19 11月 10 02:37 /test1/

[root@localhost ~]# ls -l /test1/1.txt

-rw-r--r--. 1 root root 0 11月 10 02:37 /test1/1.txt



7.在/test1/目录下创建新的文件

[root@localhost ~]# touch /test1/2.txt

8.查看的新文件的所属关系--------已经继承

[root@localhost ~]# ls -l /test1/2.txt

-rw-r--r--. 1 root c 0 11月 10 02:42 /test1/2.txt

sticky(t位)案例

作用:自己只能删除自己上传的文件,不能删除别人的文件

字符表示方式:o+t

数字表示方法:1

1.用root身份:创建用户b

[root@localhost ~]# useradd b

2.用b身份:在/tmp下创建b.txt

[root@localhost ~]# su - b

[b@localhost ~]$ touch /tmp/b.txt

3.用c身份:在/tmp下创建c.txt

[c@localhost ~]$ touch /tmp/c.txt



4.分成查看b.txt和c.txt所属关系是谁

[b@localhost tmp]$ ls -ld c.txt

-rw-rw-r--. 1 c c 0 11月 10 03:20 c.txt

[b@localhost tmp]$ ls -ld b.txt

-rw-rw-r--. 1 b b 0 11月 10 03:20 b.txt



5.用b身份删除c.txt文件

[b@localhost tmp]$ rm -rf c.txt

rm: 无法删除'c.txt': 不允许的操作

[b@localhost tmp]$

6.用c身份删除b.txt文件

[c@localhost ~]$ cd /tmp/

[c@localhost tmp]$ rm -rf b.txt

rm: 无法删除'b.txt': 不允许的操作

给目录设置t位

用数字法(建议)

[root@localhost ~]# chmod 1777 /test1/

[root@localhost ~]# ls -ld /test1/

drwxrwxrwt. 2 c c 32 11月 10 02:42 /test1/



用字符法

[root@localhost ~]# chmod o+t /test1

[root@localhost ~]# ls -ld /test1/

drwxrwxrwt. 2 c c 32 11月 10 02:42 /test1/

进程

1.前后台任务调度

jobs:查看后台任务

调入后台

1.ctrl z (暂停)

2.cmd & (运行)



调入前台

fg %作业号 (作业号用jobs查看)

2.查看进程

ps -aux

[root@localhost ~]# ps -aux | head

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.1 0.5 244780 4164 ? Ss 03:13 0:01 /usr/lib/systemd/systemd --switched-root

root 2 0.0 0.0 0 0 ? S 03:13 0:00 [kthreadd]



解释

USER:用户

PID:进程号

%CPU:cpu占用率

%MEM:mem占用率

VSZ:申请地址空间

RSS:实际使用空间

TTY:终端,pts/0本地终端,pts/2远程终端

STAT:状态

START:时间

TIME:使用cpu时间

COMMAND:命令



3.杀死进程

kill -9 %作业号

kill -9 进程号

网络管理

三种模式

1.仅主机模式(vmnet1):只能和内网(vm开头)进行通信,不能上外网。外网:百度、淘宝、本地连接、WiFi

2.nat模式(vmnet8):能够上外网,进行地址转换

2.桥接模式(vmnet0):直接桥到本地连接

192.168.1.1/24 ---- ping 百度 (nat) ----202.202.200.200

192.168.1.1/24 ---- ping 百度 (桥接)

网络分类

A类(掩码:8)

地址范围:1-126

第一位为网络位,后三位为主机位

网段:网络位照抄,主机位归零

eg:10.1.1.1/8 网段:10.0.0.0/8

B类(掩码:16)

地址范围:128-191

前两位为网络位,后两位为主机位

网段:网络位照抄,主机位归零

eg:191.10.1.1/16 网段:191.10.0.0/16

C类(掩码:24)

地址范围:192-223

前三位为网络位,后一位为主机位

网段:网络位照抄,主机位归零

eg:192.168.1.1/24 网段:192.168.1.0/24

D类

用于科研

E类

保留

网络互通

1.查看IP

ip a = ip address show

ifconfig (linux)/ipconfig(windows)

2.查看网关

ip r = ip route

3.查看DNS

[root@localhost ~]# cat /etc/resolv.conf

配置ip

ip:192.168.1.10/24

网关:192.168.1.254

DNS:8.8.8.8

(一条命令)

[root@localhost ~]#

nmcli connection modify "ens33" //连接修改ens33网卡

ipv4.method manual //手动配置ipv4

ipv4.addresses "192.168.1.10/24" //ipv4的地址、掩码

ipv4.gateway "192.168.1.254" //ipv4的网关

ipv4.dns "8.8.8.8" //ipv4的DNS

connection.autoconnect yes //使用时自动连接

样例

[root@localhost ~]# nmcli connection modify "ens33" ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes

[root@localhost ~]# nmcli connection down ens33 //关闭ens33网卡

[root@localhost ~]# nmcli connection up ens33 //开启ens33网卡

仅主机模式

1.编辑----虚拟网络编辑器---仅主机----不勾dhcp

2.设置---网络适配器---仅主机模式

3.配置linux地址

ip:192.168.1.10/24

网关:192.168.1.254

DNS:8.8.8.8

网段:192.168.1.0/24

4.配置windows中vmnet1的网卡ip

ip:192.168.1.20/24

网关:192.168.1.254

DNS:192.168.1.10

注意:windows和linux要保持同一网段,同一网关

5.测试互通

windows ping linux

linux ping windows

注意:如果单方面不通,95%是防火墙的原因,关闭防火墙即可。

桥接模式

vmnet0---本地连接

1.编辑----虚拟网络编辑器---桥接模式----自动/指定具体网卡

2.设置---网络适配器---桥接模式

3.查看windows地址

ip:10.80.1.50/24

网关:10.80.1.254

DNS:8.8.8.8

网段:10.80.1.0/24

4.配置linux的地址

ip:10.80.1.250/24

网关:10.80.1.254

DNS:8.8.8.8

[root@localhost ~]# nmcli connection modify "ens33" ipv4.method manual ipv4.addresses "10.80.1.250/24" ipv4.gateway "10.80.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes

检查:ip、掩码、网关、dns

5.测试互通

windows ping linux

linux ping windows

ping dns

ping baidu

nat模式

1.编辑----虚拟网络编辑器---nat模式

2.设置---网络适配器---nat模式

3.自动获取linux地址

[root@localhost ~]# nmcli connection modify "ens33" ipv4.method auto connection.autoconnect yes

4.自动获取windows地址

5.互ping

6.ping 百度

文件系统

分区、格式化、挂载

1.一块硬盘只能有4个主分区

如果你想分7个分区:

1.分3个主分区

2.分1个扩展分区(不能做格式化挂载)

3.分3个逻辑分区

2.硬盘存放在/dev/目录下

第一块硬盘:/dev/sda

第一块硬盘的第一个分区:/dev/sda1

第一块硬盘的第二个分区:/dev/sda2

第二块硬盘:/dev/sdb

第二块硬盘的第一个分区:/dev/sdb1

第二块硬盘的第二个分区:/dev/sdb2

hd 表示IDE设备

sd 表示SCSI/SATA/PATA设备

SCSI:/dev/sda---/dev/sdzz

分区

[root@localhost ~]# fdisk -l

命令(输入 m 获取帮助):m

帮助:

常规

d 删除分区

F 列出未分区的空闲区

l 列出已知分区类型

n 添加新分区

p 打印分区表

t 更改分区类型

保存并退出

w 将分区表写入磁盘并退出

q 退出而不保存更改

[root@localhost ~]# fdisk /dev/sdb

格式化

[root@localhost ~]# mkfs.xfs /dev/sdb1

[root@localhost ~]# blkid //查看格式化类型和UUID

挂载

mkdir /mnt/dev

1.挂载文件系统

mount /dev/sdb1 /mnt/dev

2.挂载UUID

mount UUID="eeaefbac-354d-49a6-8ed3-c15c55b71f01" /mnt/dev

df -h查看挂载情况

取消挂载

1.取消文件系统

[root@localhost ~]# umount /dev/sdb1

2.取消挂载点

[root@localhost ~]# umount /mnt/dev

作业

1.添加一块40G硬盘

2.创建一个3G的主分区,分区号默认

3.创建一个5G的主分区

4.创建一个20G扩展分区

5.创建一个10G的逻辑分区

6.将2号分区类型更改为swap分区

7.将5号分区类型更改为LVM分区

8.格式化1号分区为xfs

9.创建挂载点/test1

10.用文件系统进行挂载

11.用文件系统进行卸载

12.用UUID挂载

13.用挂载点卸载

模拟错误

1.先做永久挂载

vim /etc/fstab

/dev/sdb1 /mnt/dev xfs defaults 0 0

2.临时验证

mount -a

3.模拟错误

vim /etc/fstab

/dev/sdb1 /mnt/dev xfs defaul 0 0

4.重启机器

reboot

swap:虚拟,交换分区

[root@localhost ~]# mkswap /dev/sdb2 //格式化swap分区



[root@localhost ~]# swapon -a //重新加载交换分区

[root@localhost ~]# swapon -s //查看swap分区的使用情况

文件名 类型 大小 已用 权限

/dev/dm-1 partition 2097148 562324 -2

/dev/sdb2 partition 5242876 0 -3



[root@localhost ~]# swapon /dev/sdb2 //开启swap分区

[root@localhost ~]# swapoff /dev/sdb2 //关闭swap分区

LVM

pvcreate /dev/sdc1

vgcreate vg01 /dev/sdc1

lvcreate -n lv01 -L +3G /dev/vg01

mkfs.ext4 /dev/vg01/lv01

mount /dev/vg01/lv01 /opt/

df -h

lvextend -L +2G /dev/mapper/vg01-lv01

df -h

//格式化类型为ext3、ext4等使用resize2fs刷新

resize2fs /dev/mapper/vg01-lv01



//格式化类型为xfs等使用xfs_growfs刷新

xfs_growfs /dev/mapper/vg01-lv01

df -h

RPM

使用RPM进行软件包的安装,需要注意以下2两点

1.进入完整的包路径

2.安装时保证软件包名称完整



1.导入光盘并连接

2.挂载光盘(/dev/cdrom)

[root@localhost Packages]# mount /dev/cdrom /mnt



3.进入光盘路径

[root@localhost Packages]# cd /mnt/Packages

[root@localhost Packages]# ls



rpm -ivh

-i install 安装

-v verbose 详细信息

-h hash 显示带#的进度条



[root@localhost Packages]# rpm -ivh zsh-5.5.1-6.el8.x86_64.rpm

警告:zsh-5.5.1-6.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY

Verifying... ################################# [100%]

准备中... ################################# [100%]

正在升级/安装...

1:zsh-5.5.1-6.el8 ################################# [100%]





[root@localhost Packages]# ls | grep samba

--force --nodeps 强制安装

[root@localhost Packages]# rpm -ivh samba-4.9.1-8.el8.i686.rpm --force --nodeps

警告:samba-4.9.1-8.el8.i686.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY

Verifying... ################################# [100%]

准备中... ################################# [100%]

正在升级/安装...

1:samba-0:4.9.1-8.el8 ################################# [100%]

-q 查询软件包是否安装

[root@localhost Packages]# rpm -q samba

samba-4.9.1-8.el8.i686

[root@localhost Packages]# rpm -q httpd

未安装软件包 httpd



-ql 查询软件包是相关文件

[root@localhost Packages]# rpm -ql samba



-qc 查询软件包的主配置文件

[root@localhost Packages]# rpm -qc samba

/etc/openldap/schema/samba.schema

/etc/pam.d/samba



-qf 查询路径来自哪个软件包

[root@localhost Packages]# rpm -qf /etc/pam.d/samba

samba-4.9.1-8.el8.i686



-qa 查询已安装的软件

[root@localhost Packages]# rpm -qa | wc -l

1332



-i 详细信息

[root@localhost Packages]# rpm -qi samba



-e 卸载

[root@localhost Packages]# rpm -e samba

YUM

1.挂载光盘

//进入仓库路径

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost ~]# ls



//做备份

[root@localhost yum.repos.d]# #cp CentOS-Base.repo CentOS-Base.repo.bak

[root@localhost yum.repos.d]# cp CentOS-Base.repo{,.bak}



//编写yum仓库

[root@localhost yum.repos.d]# vim CentOS-Base.repo

:set nu

:1,12d

:3d

x

ww

D

a

添加file:///mnt

//更改之后的详见下文

7版本仓库

[BaseOS]

name=CentOS-$releasever - Base

baseurl=file:///mnt

gpgcheck=0

enabled=1

8版本仓库

1 [BaseOS]

2 name=CentOS-\(releasever - Base
3 baseurl=file:///mnt/BaseOS
4 gpgcheck=0
5 enabled=1
6
7 [AppStream]
8 name=CentOS-\)releasever - AppStream

9 baseurl=file:///mnt/AppStream

10 gpgcheck=0

11 enabled=1



清理缓存、安装软件

[root@localhost yum.repos.d]# yum clean all

Repository AppStream is listed more than once in the configuration

0 文件已删除

[root@localhost yum.repos.d]# yum makecache



//安装软件

[root@localhost yum.repos.d]# yum install -y httpd

//卸载软件

[root@localhost yum.repos.d]# yum erase httpd

————————————————

版权声明:本文为CSDN博主「不会写代码的满满」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_58608526/article/details/122761265

Linux基础入门笔记的更多相关文章

  1. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  2. Linux基础入门之网络属性配置

    Linux基础入门之网络属性配置 摘要 Linux网络属性配置,最根本的就是ip和子网掩码(netmask),子网掩码是用来让本地主机来判断通信目标是否是本地网络内主机的,从而采取不同的通信机制. L ...

  3. Linux 基础入门(新版)”实验报告一~十二

    实验报告 日期: 2015年9月15日 一.实验的目的与要求 熟练地使用 Linux,本实验介绍 Linux 基本操作,shell 环境下的常用命令. 二.主要内容 1.Linux 基础入门& ...

  4. Linux 基础入门 第二周9.21~9.27

    一.学习内容 本周主要学习内容主要贴合: 在进行<深入理解计算机系统>这门课的实验中没有遇到什么大问题,学习内容与上周实验<linux基础入门>有相似之处.本实验中的内容比较贴 ...

  5. Linux 基础入门----推荐课程

    Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https: ...

  6. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux:Linux初级,也就是入门linux前提是需要有一些计算机硬件相关的知识或是有一下 ...

  7. 在学习linux基础入门时的一些问题总结(1)

    本周在实验楼完成了<linux基础入门>的21个实验,虽然之前已经学习过linux的相关课程,对linux下的命令也有一些了解和实践,但完成这21个实验以及35个练习题仍然遇到了许多的问题 ...

  8. 腾讯云-Linux 基础入门

    Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder # $HOME 当前用户的家目录  root ...

  9. Linux基础入门 - 3

    第四节 Linux 目录结构及文件基本操作 4-1.Linux目录结构 Linux 的目录与 Windows 的目录的实现机制是完全不同的.一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关 ...

随机推荐

  1. 责任链模式(python)

    rom abc import ABCMeta, abstractmethod class Handler(metaclass=ABCMeta): @abstractmethod def handle_ ...

  2. Redis_简介(1)

    Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...

  3. android 报错 net::ERR_CLEARTEXT_NOT_PERMITTED

    这是从27版本后不允许使用http方式来请求 ,需要使用https 解决办法: 加入一个开关即可 android:usesCleartextTraffic="true"

  4. Java复制文件用数据流方法,renameTO()方法是相当于剪切操作

    我想达到的效果是,一个文件复制到另一个地方,然后重命名 //判断是否存在 File file = new File("D:/tomcat9.0.12/apache-tomcat-9.0.12 ...

  5. ​第3届云原生技术实践峰会(CNBPS 2020)重磅开启,“原”力蓄势待发!

    CNBPS 2020将在11月19-21日全新启动!作为国内最有影响力的云原生盛会之一,云原生技术实践峰会(CNBPS)至今已举办三届. 在2019年的CNBPS上,灵雀云CTO陈恺喊出"云 ...

  6. 在 python 项目中如何记录日志

    一. 概述 写本文的目的是我在写 python 项目的时候需要记录日志,我忘记怎么处理了,每次都需要去网上查一遍,好记性不如烂笔头, 这里把查阅的内容记录下来,方便以后查找. python 项目中记录 ...

  7. hisql orm update表数据更新文档

    更新 HiSql数据更新 HiSql 提供了好几种数据更新的方式下面一一介绍一下 如果你的表中增加了这四个字段 字段 描述 类型 CreateTime 创建时间 DateTime CreateName ...

  8. day4 对偶数、偶数位的操作

    1.函数fun()的功能:从低位开始取出整形变量s中偶数位上的数,依次构成一个新数放在t中.高位仍在高位. 效果理想:但是经测试的时候出现了错误 输入987654321时,打印出来的却是18681.经 ...

  9. go语言 strconv.ParseInt 的实现分析

    字符串与数值之间进行转换是一个高频操作,在go语言中,SDK提供 strconv.ParseInt 将字符串转换为数值,strconv.FormatInt 可以将数值转换为字符串. 1.首先看下 st ...

  10. 【机器学习】svm

    机器学习算法--SVM 目录 机器学习算法--SVM 1. 背景 2. SVM推导 2.1 几何间隔和函数间隔 2.2 SVM原问题 2.3 SVM对偶问题 2.4 SMO算法 2.4.1 更新公式 ...