Linux系统

2020061210441251.png

文件和目录操作

Linux下的指令可以通过tab键进行自动补全。Ctrl+c可以打断指令执行,如果指令执行的很快并且不需要确认的,一般是打不断的。

1.基本命令

命令1:

#新建文件
touch
例子1: touch 1.txt  #创建单个文件
例子2: touch test{1..10}.txt #批量创建文件touch test{a..f}.txt
例子3: touch /root/4.txt  #在指定的/root目录下,创建文件4.txt
# 如果touch的文件名称重复了,不会覆盖原文件

命令2:

#查看目录下的文件
ls全称list
ls:显示当前目录下的内容
例子1:ls test09.txt  #查看test09.txt是否存在,有会显示文件名称,没有会报错
例子2:ls *.txt     #查看以txt结尾的所有文件,类似于windows下的*.后缀名搜索
例子3:ls  -1     #以一行一个文件的方式显示,注意这是-1,是数字1,不是l昂
例子4:ls  -a al     #查看所有文件,包括隐藏文件,touch .文件名,.开头的就是隐藏文件
例子5:ls -a -1     #查看所有文件,以一行一个来显示
例子6:ls -l  #类似于windows的详细列表,这个-l不是数字1

以.开头的文件是隐藏文件,默认不显示

命令3:

#移动、也可以进行重命名
mv全称move
例子1:mv 222.txt 123.txt   #将222.txt文件重命名为123.txt
例子2:mv 123.txt /opt    #将当前目录下的123.txt移动到/opt目录下

命令4:

#复制
cp全称copy,复制有个特点,就是如果复制到的文件夹中有同名的文件,会帮我们改名字并加上副本两个字,
linux不会帮我们改名字,我们需要自己指定名字,后缀名尽量不要改。
例子1:cp test01.txt /opt/  #将当前目录下的test01.txt复制到/opt目录下
例子2:cp -a dev04 /opt/   #将目录dev04复制到/opt下,注意,要在dev04的上一级目录来复制
它,在它内部是不能复制这个文件夹的

命令5:

#删除,注意Linux和windows不同,没有回收站,删了就是删了
例子1:  rm /opt/123.txt  #将/opt目录下的123.txt文件删除,需要回复y确认删除
例子2: rm -f /opt/test01.txt #将/opt目录下的test01.txt文件删除,不需要回复,强制删除,很
多指令都有自己的参数,而且有好多,-f就是强制的意思。
例子3: rm 文件1 文件2 文件3 #删除多个文件
#删除一个目录,linux的参数大部分没有先后顺序
#直接删除文件夹,比如 rm dev,这是不行的,会报错,需要带上r参数
[root@localhost ~]# rm -f -r dev02
[root@localhost ~]# rm -r -f dev03
[root@localhost ~]# rm -fr dev # rm的两个参数可以合并到一起
[root@localhost ~]# rm -rf dev01

命令6:

#创建文件夹 创建目录directory,这里说的目录就是文件夹,默认显示是蓝色的字体,文件显示是白色的字

mkdir 全称make directory
例子1:mkdir dev   #创建一个dev目录
例子2:mkdir dev{01..10}     #批量创建多个目录
例子3:mkdir -p 1/2/3/4/5/6  #一次性创建多级子目录
重命名:mv jaden wulaoban # 将jaden目录改名为wulaoban

命令7:

#切换目录
cd  #全称change directory
例子1:
cd local    #切换到local目录中
cd /usr/local  #切换到目录/usr/local
cd ..       #切换到上一级目录
cd ../..  # 进入上一级的上一级目录 ,还可以继续../
cd / # 直接切换到根目录

命令8:

#print work directory
pwd
#打印当前工作目录

命令9:

# 历史指令查询
history

命令10:

目录分隔符:
windows:C:\Users\ls198\Desktop # 微软故意用\,其他的unix分支系统都是/来分割
linux:/root/jaden/xx
linux只有一个盘符,不像windows,可以设置c盘、d盘...
/是根目录
/root 根目录下面的root目录
/root/jaden
/root/jaden/xx

命令11:

#修改文件内容,先体验一下,后面再专门讲vi的功能
#vi编辑器,和windows的记事本工具类似
例子1: vi test03.txt   #编辑文件test03.txt
# vi编辑保存文件,需要三种模式切换
常规模式:默认是常规模式,在常规模式中可以使用各种快捷键,帮我们快速编辑文件,比如dd,就是删除当
前一行数据
编辑模式:切换英文输入法,然后按ioa三个键中的任意一个键都可以进入编辑模式,这样才能向文件中写内
容,写完内容之后,先回到常规模式,在编辑模式中按esc回到常规模式
命令模式:在常规模式时按:(英文的冒号)进入命令模式,命令模式按esc回到常规模式,命令模式下输入q然
后回车表示退出文件,wq保存并退出,q!表示强制退出不保存

vi三模式切换,图解

image-20230815205708319

命令12:

vi可以查看文件内容,但是每次都要vi进去,看完再退出来,比较麻烦,如果只是查看文件内容,如下指

令即可

#从上往下顺序查看文本内容
cat
例子1:cat test03.txt  #查看test03.txt的全部内容
#从下往上倒着查看文本内容
tac
例子1:tac test03.txt  #倒着查看test03.txt的全部内容

命令13:

#查看文件头几行
head
例子1: head test03.txt       #查看文件的前十行,默认
例子2: head  -n 5 test03.txt  #查看文件的前5行
例子3: head  -5 test03.txt   #查看文件的前5行

命令14:

#查看文件倒数几行
tail
例子1: tail test03.txt       #查看文件的倒数十行,默认
例子2: tail  -n 5 test03.txt  #查看文件的倒数5行
例子3: tail  -5 test03.txt   #查看文件的倒数5行

2.管道

管道符号: | ,可以将前面指令的执行结果,作为后面指令的操作内容。

比如我们通过管道来过滤出ip地址:

[root@CentOS7 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 00:0c:29:c9:4e:a3 brd ff:ff:ff:ff:ff:ff
   inet 192.168.80.129/24 brd 192.168.80.255 scope global noprefixroute dynamic ens33
      valid_lft 1464sec preferred_lft 1464sec
   inet6 fe80::bc97:4e0a:7bc9:9158/64 scope link noprefixroute
      valid_lft forever preferred_lft forever

3.文件内容过滤

命令15:

#统计,比如统计文件有多少个字节、多少行等等
wc  #全称Word Count,计数
wc -l按行统计,不会单独使用,需要接在管道后面
例子1:
[root@CentOS7 ~]# cat yxh.txh |wc -l
6 #共18行
[root@CentOS7 ~]# cat -n yxh666.txt #显示内容同时,显示行号
    1  yxhnb666
    2  hhh
    3  hhh
    4  hhh
    5  hhh
    6  sdhjakhshfdk
    7  ajdsfghhja
    8  ndahfas'
    9  yq89audas
   10  sajfh
   11  :wq
 
wc -c yxh666.txt # 统计文件中有多少个字节
# 统计指令执行结果有多少行
例子:ip addr|wc -l
# 统计bin目录下有多少个命令文件
例子:ls /bin|wc -l

命令16:

生成随机密码本

#生成数字序列
seq # 全称:sequence,序列的意思
例子1:产生一个5到15的序列
[root@CentOS7 ~]# seq 5 15
5
6
7
8
9
10
11
12
13
14
15
例子2:产生一个5到12等宽的序列
[root@CentOS7 ~]# seq -w 5 12
05
06
07
08
09
10
11
12

命令17:

#按行过滤字符串,默认是模糊匹配,只要单词中含有某些内容就过滤出单词所在的每行数据
grep
例子1: #普通过滤,将含有6这个字符的行过滤出来
[root@CentOS7 ~]# grep '6' yxh666.txt
yxhnb666
例子2: #显示行号
[root@CentOS7 ~]# grep -n 'y' yxh666.txt
1:yxhnb666
9:yq89audas

grep精准匹配-w

示例:通过管道符和grep来过滤

image-20230908143650766

命令18:

#按列过滤
awk #awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的
首个字母。
例子1: 取列,$1代表第一列,$2代表第二列,$NF代表最后一列,列是由空格分开的
[root@CentOS7 ~]# cat yxh.txt
yxh. zj. hhh
yxh. ilo. kkk
aj1. jhdfs. fdsha
[root@CentOS7 ~]# awk '{print $1}' yxh.txt # 注意,必须是单引号
yxh.
yxh.
aj1.
[root@CentOS7 ~]# awk '{print $2}' yxh.txt
zj.
ilo.
jhdfs.
[root@CentOS7 ~]# awk -F '.' '{print $1}' yxh.txt
yxh
yxh
aj1
[root@CentOS7 ~]# awk -F '.' '{print $NF}' yxh.txt
hhh
kkk
fdsha

命令19:

#排序
sort # 默认排序,先数字后字母
# sort -n # 先字母(先小写字母后大写字母)后数字的排序方式,sort -n -r 反向排序
[root@CentOS7 ~]# cat 1.txt
1
2
7
4
5
8
3
9
0
2
[root@CentOS7 ~]# cat 1.txt|sort -n
0
1
2
2
3
4
5
7
8
9

命令20:

#统计去重
uniq  #全称:unique,唯一、去重的意思,但是它是将连续的去重,不会间隔去重,所以最好先排序再去

[root@CentOS7 ~]# cat 1.txt|sort -n
0
1
2
2
3
4
5
7
8
9
[root@CentOS7 ~]# cat 1.txt|sort -n|uniq
0
1
2
3
4
5
7
8
9
[root@CentOS7 ~]# cat 1.txt|sort -n|uniq -c #显示重复次数
     1 0
     1 1
     2 2
     1 3
     1 4
     1 5
     1 7
     1 8
     1 9

目录结构

1.安装桌面版Centos

为了方便大家理解目录结构,我们安装一个桌面版的centos吧,其实工作中基本我是不安装桌面的,有

些软件开发人员会用桌面版的。

这里就不最小化安装了,选择安装桌面,并且把所有的软件都安装上吧,方便使用。

2.目录结构介绍

路径分隔符:
linux系统都是斜杠:也叫做正斜杠,/,linux下,每个目录后面其实默认都有个/,切换目录: cd
jaden或者cs jaden/ 是一样的
windows系统是反斜杠:\

image-20230908144921649

/bin      #存放二进制的可执行文件,也就是命令,其实每个命令基本都是一个可执行代码文件,特别重
要,不能删除!
# window的命令文件都是exe结尾的,linux的命令文件是没有后缀名的,如果删除了某个命令文件,
那么这个命令就不能用了
/boot     #开机启动需要的文件, 特别重要,不要动里面的文件。
/dev      #dev全称:Devices,硬件设备控制文件,特别重要,千万不要动!
/etc      #存放系统的各种配置文件,相当于windows的注册表,也就是超大的配置文件,特别重要,不
能删除!
# 比如改密码什么的,其实都是修改的etc下面的某个配置文件(shadow文件)中的配置,还有安装的各
种软件配置文件,一般也是放到这个目录,也可以放到其他目录,但是一般都是放到这里。
/home     #所有普通用户的家目录就在这个home目录下,每个用户目录中都有自己的桌面等目录,
windows都是放到了Users目录下
/root     #root用户的专属家目录,特别重要,不能删除!
/lib      #library 32位库,一般是so结尾的库文件,特别重要,不能删除!
# so结尾的库文件,类似于windows下的系统的dll动态链接库文件。千万不要尝试删除,试试就逝
世。如果有快照的话你可以试试。
/lib64    #library 64位库,一般是so结尾的库文件,特别重要,不能删除!
/media    #多媒体文件目录(音乐、视频、文档等),是一个不重要的目录,只是linux的作者希望用户能
够按照对应目录来存放内容,这个目录普通用户是没有权限删除的,root用户可以删除它
/mnt      #全称:mount,挂载的意思,一般是用来挂载光盘,U盘,也就是插入U盘、关盘等,打开之后
一般都是在这个mnt目录下,这个目录也是可以删除的
/opt      #部分软件安装存储目录,安装的某些软件的时候,如果默认安装,那么它可能会将自己的程序安
装到这个目录下,如果你不用这个目录,那么也是可以删除的目录
/proc     #全称:process,是进程的意思,每个进程编号一个目录。通过ps -ef指令可以查看到进程编
号, 特别重要,不能删除!
/sbin     #全称:super bin,是超级用户才能使用的命令 ,特别重要,不能删除!
# 比如普通用户是没有关机(shutdown)、重启(reboot)等危害比较大的指令,这些命令文件在sbin
目录中
/srv      #之前用来存放软件源代码文件的,这个目录也没啥用。源代码-->编译-->打包-->软件包,软
件包在windows下叫做可执行文件,linux下叫做命令文件。其实叫啥都行,明白它是啥即可。
/sys      #全称:system,是系统功能目录,特别重要,不能删除!
/tmp      #全称:temporary,临时的意思,用来存放临时文件的目录,这里面的文件如果长时间没用的
话,会被系统自动清除。
# windows下也有很多这样的临时目录,多数都是隐藏目录,比如C:\Users\用户名
\AppData\Local\Temp,好多清理系统垃圾的软件,其实都是删除了一些临时文件。
/run      #运行,程序运行的时候产生的文件,多数也是临时文件,但是这里的文件不会被系统自动清除。
/usr      #用户级的目录,usr全称是UNIX software resource,主要存放的是一些软件程序以及这些
程序所需要使用的库,当然也会保存一些程序需要的资源文件,特别重要,不能删除! usr目录下面的文件夹
种类和/根目录下很像,比如都有bin目录,linux作者这样的设计是想告诉用户,系统的命令文件放到根目录
的bin下,用户自己安装的某些软件的命令文件,放到/usr/bin下面。
/var      #全称是variable,用来存放一些经常变动的文件,比如日志文件、网页文件、缓存等,特别重
要,不能删除!
# 这个目录下我们安全人员一般只关注log日志目录。比如用户登录系统、什么时候登录的、登陆了几次
等等,都会在log目录下产生日志记录,这个我们后期会做演示

3.相对路径和绝对路径

相对路径:从当前所在目录开始数的不完整的路径

绝对路径:从根开始的数的完整路径

创建目录:
  相对路径:
  mkdir yxh
  mkdir ../yxh
  绝对路径:
  mkdir /yxh
   
找寻目录:
cd /usr/share/i18n/locales/
当前位置:/usr/share/i18n/locales/
目标位置:/etc/
绝对路径:
cd /etc/
相对路径:
cd ../../../../etc/
这么看就绝对路径方便一些。

但是如果下面的情况:
当前位置:/usr/share/i18n/locales/
目标位置:/usr/share/i18n/
绝对路径:
cd /usr/share/i18n/
相对路径:
cd ..
或者如下情况
当前位置:/usr/share/i18n/
目标位置:/usr/share/i18n/locales/
绝对路径:
cd /usr/share/i18n/locales/
相对路径:
cd locales
 
这么看就是相对路径方便一些。
也就是说,如果目标在上一级或者下一级,离着比较近,相对路径操作就方便,如果目标目录没有和当前
目录在一个路径分支上,离着比较远,那么用绝对路径方便一些。

用户和用户组管理

windows专业版,管理-->用户和用户组,来进行用户和用户组管理。

用户和用户组的关系,说到关系就三种情况:一对一、一对多、多对多。

用户和用户组属于多对多的关系.

1.用户管理

命令21:

#创建用户
useradd
#创建一个用户
例子1:useradd test1

命令22:

#设置密码,远程ssh连接是需要密码的,所以想让某个用户登录系统,必须设置密码
passwd
例子1:passwd yxh
#用root用户给普通用户修改密码
[root@CentOS7 ~]# passwd yxh
更改用户 yxh 的密码 。
新的 密码:123456
无效的密码: 密码是一个回文
重新输入新的 密码:123456
passwd:所有的身份验证令牌已经成功更新。
#普通用户自己修改密码
[test1@CentOS7 ~]$ passwd  # 给当前登录用户修改密码,root用户修改密码不需要输入旧密码,
普通用户需要输入旧密码
更改用户 yxh 的密码 。
为 yxh 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
passwd: 已经超出服务重试的最多次数
# 一般linux的密码是有复杂度要求的,比如下面这种密码就可以通过:大小写组合、数字、特殊字符组合起
来超过8位。
[email protected]
yxh666@WSX
例子3:
#免交互修改密码,这样不需要输入两次密码确认。echo是打印的意思,有结果输出给passwd命令来修改
yxh用户的密码
echo 123456|passwd --stdin yxh
# 这种一般同时改多个Linux服务器系统的密码时比较方便。

命令23:

#检查用户是否存在
id
例子1:
#用户存在,系统的返回结果
[root@CentOS7 ~]# id yxh
uid=1000(yxh) gid=1000(yxh) 组=1000(yxh)

#用户不存在,系统的返回结果
[root@CentOS7 ~]# id yxh1
id: yxh1: no such user

命令24:

#删除用户
userdel
例子1:
#被删除的用户还在登录状态,是不能删除的
[root@CentOS7 ~]# userdel yxh
userdel: user test1 is currently used by process 2356
#被删除的用户,退出登录之后,可以正常删除
[root@CentOS7 ~]# userdel yxh
linux删除用户之后,/home/目录下对应的用户文件夹还在,如果还想加回来这个用户,那么会提示家目录存
在,不会从样板目录(skel)中复制任何文件了,通过ls -a /etc/skel,可以看到skel目录下的内容了。
还提示邮箱文件已经存在,ls /var/spool/mail下面
windows删除用户之后,c:\Users目录下的用户文件夹也还在
注意:删除之后的用户,再次创建出来,密码是需要重新设置的
[root@CentOS7 ~]# userdel -r yxh # 删除用户,并删除用户相关目录

命令25:

#修改用户信息,修改属性
usermod # modify 它有很多选项(参数),-L是锁定用户,通过命令 -h(或者--help,一个-后面一般跟
一个字母即可,两个-后面一般跟完整单词),可以查看命令的各种选项的意思,比如usermod -h
#锁定用户(和windows的禁用用户一个意思)
例子1:
[root@CentOS7 ~]# usermod -L yxh #被锁定的用户,下次就登录不上系统了。
[root@CentOS7 ~]# usermod -U yxh #解锁用户
[root@CentOS7 ~]# lchage -l yxh  # 查看用户详细信息
帐号被锁。
至少:   0
至多:   99999
警告:   7
不活跃:        从不
最后一次改变:  2023年09月10日
密码过期:      从不
密码不活跃:    从不
帐号过期:      从不
#禁止用户登录
[root@CentOS7 ~]#  usermod -s /sbin/nologin yxh
[root@CentOS7 ~]#  grep -w 'yxh' /etc/passwd
yxh:x:1000:1000::/home/yxh:/sbin/nologin

命令26:

#查看用户详细信息
[root@CentOS7 ~]# lchage -l yxh
帐号没被锁。
至少:   0
至多:   99999
警告:   7
不活跃:        从不
最后一次改变:  2023年09月10日
密码过期:      从不
密码不活跃:    从不
帐号过期:      从不

所有的用户信息存储在/etc/passwd文件中,每创建一个用户该文件就会多一行记录


分享:

支付宝

微信