Linux系统

Linux系统

Linux操作系统:Windows、Mac

Linux一切皆文件:文件就 读、写、(权限)

Linux——》Redis——》Docker

学习方式:

认识Linux

基本的命令(重点: git 讲了一些基本的命令(文件操作、目录管理、文件属性、Vim编辑器 、账号管理))

软件的安装和部署(java tomcat docker)

1、 入门概述

用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着Linux就没有用武之地了。在服务器端,在开发领域Linux倒是越来越受欢迎,很多程序员都觉得不懂点Linux都觉得不好意思,Linux在开源社区的地位依然岿然不动。

尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得不学习!

1.1 简介

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

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

1.2 发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

1.3 Linux应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

2、环境搭建

2.1 安装CentOS

可以通过镜像进行安装
可以使用已经制作好的镜像
安装VMware虚拟机软件,然后打开我们的镜像即可使用

2.2 购买云服务器

虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作;

云服务器就是一个远程电脑,服务器一般不会关机!

1、阿里云购买服务器

2、购买完毕后,设置安全组(开放端口),获取服务器的(公网)ip地址,重置服务器密码,就可以远程登录了

获取公网IP地址

image-20220904224522294

修改自己的登录密码

image-20220904224446223

配置安全组==》开放端口 ,在阿里云很重要

源:0.0.0.0/0 表示对所有人开放

3、下载 xShell 远程连接工具(22端口),进行远程连接使用!还需要下载一个XFTP 进行文件上传(21端口),连接成功效果如下:

image-20220904225045353

使用xshell远程连接

公网ip 登录用户名(默认是root) 服务器密码(自己修改)

ctrl + 滚轮 放大,缩小字体

上传文件使用xftp即可

image-20220904225522430

================= Tomcat需要java环境 先学基本的Linux命令为主 ==============================

2.3 关于域名

如果自己的网站想要上线,就一定要购买一个域名然后进行备案;

备案的话需要一些认证和时间,备完完毕后,就可以解析到自己的网站了,这个时候就可以使用域名来进行服务器的访问!

3、走近Linux系统

3.1 Linux基本命令

开机
 会启动许多程序。它们在Windows叫做’服务" ( service ) , 在Linux就叫做"守护进程" ( daemon)。
一般来说,用户的登录方式有三种:
 ● 命令行登录

● SSH登录(远程)

PS C:\Users\kevin\Desktop> ssh root@47.113.216.255
root@47.113.216.255's password:输入密码

Welcome to Alibaba Cloud Elastic Compute Service !

Updates Information Summary: available
    3 Security notice(s)
        2 Important Security notice(s)
        1 Moderate Security notice(s)
Run "dnf upgrade-minimal --security" to apply all updates.More details please refer to:
https://help.aliyun.com/document_detail/416274.html
Last login: Mon Dec 26 17:45:07 2022 from 124.207.81.178
[root@iZf8z5pcq1lf8zoizwzgufZ ~]#

● 图形界面登录
 最高权限账户为root,可以操作一切!

关机
 在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
 关机指令为shutdown

sync #将数据由内存同步到硬盘中。
shutdown #关机指令,你可以man shutdown 来看一下 帮助文档。例如你可以运行如下命令关机:
shutdown -h 10 #这个命令告诉大家,计算机将在10分钟后关机
shutdown -h now #立马关机
shutdown -h 20:25 #系统会在今天20:25关机
shutdown -h +10 #十分钟后关机
shutdown -r now #系统立马重启
shutdown -r +10 #系统十分钟后重启
reboot #就是重启,等同于shutdown -r now
halt #关闭系统,等同于shutdown -h now和poweroff

最后总结:不管是重启还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,执行命令之后没有返回消息则表明运行成功

系统目录
1、一切皆文件
2、根目录/ ,所有的文件都挂载在这个节点下

ls / #查看当前目录下的文件及文件夹,不包括隐藏文件
ls -al #查看当前目录下的隐藏文件及文件夹

注意:虽然执行 ls / 命令不会看到 .ssh 文件,但是可以通过 cd ~/.ssh 进入,如下

image-20221226174638506

因为 .ssh 文件夹是隐藏的文件夹

image-20221226182047672

树状目录结构

image-20221226180434221

  • /:根目录

  • /bin : bin是Binary的缩写,这个目录存放着最经常使用的命令

  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev : dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录

  • /home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的.

  • /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件

  • /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

  • /media : linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下.

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

  • /opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的

  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个日录来获取系统信息

  • /root~: 该目录为系统管理员,也称作超级权限者的用户主目录。

    image-20221226190822708

  • /sbin :s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序

  • /srv : 该目录存放一些服务启动之后需要提取的数据。

  • /sys : 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs。

  • /tmp: 这个目录是用来存放一些临时文件的。

  • /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录

  • /usr/bin : 系统用户使用的应用程序。

  • /usr/sbin : 超级用户使用的比较高级的管理程序和系统守护程序。S

  • /usr/src : 内核源代码默认的放置目录。

  • var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件,·/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除.

  • /www: 存放服务器网站相关的资源,环境,网站的项目

image-20221229163948797

目录相关命令

相对路径、绝对路径

绝对路径的全称: C:\ProgramData\360safe\xxx.xx
比如说 360safe 目录下,那这个 xxx.xx 文件,对应我们的相对路径就是 /xxx.xx

Is (列出目录 ! )

在Linux中 Is 可能是最常常被使用的!

-a 参数 : all,查看全部的文件,包括隐藏文件
-l 参数:列出所有的文件,包含文件的属性和权限,没有隐藏文件

所有Linux命令可以组合使用

image-20221226185303546

cd 命令 切换目录

image-20221226190010021

pwd 显示当前目录的绝对路径

image-20221226190227646

cp 复制文件或者目录

cd 原路径 目标路径

rm 移除文件或者目录

-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除询问是否删除

rm -rf 文件/文件夹名称 

mv 移动文件夹或目录!重命名文件

-f 忽略不存在的文件,不会出现警告,强制移动!
-u 只替换已经更新过的文件
[root@iZf8z5pcq1lf8zoizwzgufZ home]# touch test.txt
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test.txt  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# mv test.txt xiaoshu/ #移动文件到某个目录下
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cd xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ xiaoshu]# ls
test.txt
[root@iZf8z5pcq1lf8zoizwzgufZ xiaoshu]# mv test.txt /home
[root@iZf8z5pcq1lf8zoizwzgufZ xiaoshu]# ls
[root@iZf8z5pcq1lf8zoizwzgufZ xiaoshu]# cd ..
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test.txt  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# mv test.txt test2.txt  #重命名文件(文件夹重命名也是一样的操作)
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test2.txt  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

3.2 基本属性

看懂文件属性 root

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件( 包括目录文件 )的权限做了不同的规定。

在Linux中我们可以使用 ls -ll 或者 1s -l 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@iZf8z5pcq1lf8zoizwzgufZ ~]# cd /
[root@iZf8z5pcq1lf8zoizwzgufZ /]# ls -a
.   bin   dev  home  lib64       media  opt    proc          root  sbin  sys  usr  www
..  boot  etc  lib   lost+found  mnt    patch  .Recycle_bin  run   srv   tmp  var
[root@iZf8z5pcq1lf8zoizwzgufZ /]# ls -l
total 76        
lrwxrwxrwx    1 root root     7 Feb  9  2022 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Feb  9  2022 boot
drwxr-xr-x   17 root root  2980 Dec 25 14:18 dev
drwxr-xr-x.  95 root root 12288 Dec 25 14:53 etc
drwxr-xr-x.   5 root root  4096 Dec 27 12:25 home
lrwxrwxrwx    1 root root     7 Feb  9  2022 lib -> usr/lib
lrwxrwxrwx    1 root root     9 Feb  9  2022 lib64 -> usr/lib64
drwx------.   2 root root 16384 Nov  2 15:31 lost+found
drwxr-xr-x.   2 root root  4096 Feb  9  2022 media
drwxr-xr-x.   2 root root  4096 Feb  9  2022 mnt
drwxr-xr-x.   5 root root  4096 Dec 24 22:30 opt
drwxr-xr-x    2 root root  4096 Dec 24 14:30 patch
dr-xr-xr-x  208 root root     0 Dec 25 14:18 proc
drwx------.   7 root root  4096 Dec 29 16:37 root
drwxr-xr-x   31 root root  1020 Dec 29 16:32 run
lrwxrwxrwx    1 root root     8 Feb  9  2022 sbin -> usr/sbin
drwxr-xr-x.   2 root root  4096 Feb  9  2022 srv
dr-xr-xr-x   13 root root     0 Dec 25 14:18 sys
drwxrwxrwt.  82 root root  4096 Dec 29 16:21 tmp
drwxr-xr-x.  13 root root  4096 Dec 13  2016 usr
drwxr-xr-x.  21 root root  4096 Dec 24 14:25 var
drwxr-xr-x    7 root root  4096 Dec 24 14:04 www
[root@iZf8z5pcq1lf8zoizwzgufZ /]# cd home
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls -l
total 12
drwx------ 4 springboot springboot 4096 Dec 25 15:03 springboot
-rw-r--r-- 1 root       root          0 Dec 27 12:23 test2.txt
drwx------ 3 www        www        4096 Dec 24 15:22 www
drwxr-xr-x 2 root       root       4096 Dec 27 12:25 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

实例中,boot文件的第一个属性用"d"表示。"d”在Linux中代表该文件是一个目录文件。在Linux中第一个字符代表这个文件是目录、文件或链接文件等等 :

  • 当为[ d ]则是目录

  • 当为[ - ]则是文件; 例如:home路径下的test2.txt

  • 若是[ l ]则表示为链接文档( link file );例如windows下的快捷方式就属于一个链接文档

     bin -> usr/bin   #bin 是快捷方式;usr/bin 是快捷方式指向的基目录
    
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);

  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为[rwx] 的三个参数的组合;示例分解 d rwx r-x r-x

其中,[r]代表可读(read)、[ w]代表可写(write)、[x]代表可执行(execute)。

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]

每个文件的属性由左边第一部分的10个字符来确定(如下图):

文件类型属主权限(root)属组权限(管理员组、游客组)其他用户权限
01 2 34 5 67 8 9
dr w xr - xr - x
目录文件读 写 执行读 写 执行读 写 执行

从左至右用 0-9 这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用“r”字符表示,则有读权限,如果用”-“字符表示,则没有读权限
第2、5、8位表示写权限,如果用“w”字符表示,则有写权限,如果用”-”字符表示没有写权限
第3、6、9位表示可执行权限,如果用"x”字符表示,则有执行权限,如果用”."字符表示,则没有执行权限。

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户

同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限.
在以上实例中,boot 文件是一个目录文件,属主和属组都为 root。

image-20221229181043689

修改文件属性

1、chgrp(change group) : 更改文件属组

chgrp [-R] 属组名 文件名

[-R]:中括号表示可选参数,递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown : 更改文件属主,也可以同时更改文件属组

chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名

3、chmod : 更改文件9个属性(必须要掌握)

在工作中经常会遇到这种情况:你没有权限操作此文件!

chmod [-R] xyz 文件或目录

Linux文件属性有两种设置方法,一种是数字(常用的是数字),一种是符号
Linux文件的基本权限就有九个,分别是 owner/group/others 三种身份各有自己的 read/write/execute 权限。
先复习一下刚刚上面提到的数据:

文件的权限字符为:[-rwxrwxrwx],这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限

各权限的分数对照表如下 :

r:4     w:2     x:1 

可读可写不可执行 rw- 6
可读可写可执行   rwx 7

chmod 777 文件名或者文件夹名     文件或文件夹赋予所有用户可读可写可执行

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—]分数则是

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others = — = 0+0+0 = 0
  chmod -R 777 filename:将文件设置为可读可写可执行,相当于 rwxrwxrwx

可以自己去测试一下!

[root@iZf8z5pcq1lf8zoizwzgufZ /]# cd home
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls -l
total 12
drwx------ 4 springboot springboot 4096 Dec 25 15:03 springboot
-rw-r--r-- 1 root       root          0 Dec 27 12:23 test2.txt
drwx------ 3 www        www        4096 Dec 24 15:22 www
drwxr-xr-x 2 root       root       4096 Dec 27 12:25 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# chmod 777 test2.txt
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls -l
total 12
drwx------ 4 springboot springboot 4096 Dec 25 15:03 springboot
-rwxrwxrwx 1 root       root          0 Dec 27 12:23 test2.txt
drwx------ 3 www        www        4096 Dec 24 15:22 www
drwxr-xr-x 2 root       root       4096 Dec 27 12:25 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# chmod 760 test2.txt
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls -l
total 12
drwx------ 4 springboot springboot 4096 Dec 25 15:03 springboot
-rwxrw---- 1 root       root          0 Dec 27 12:23 test2.txt
drwx------ 3 www        www        4096 Dec 24 15:22 www
drwxr-xr-x 2 root       root       4096 Dec 27 12:25 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

3.3 文件内容查看

3.3.1 Linux系统中使用以下命令来查看文件的内容
  • cat 由第一行开始显示文件内容;用来读文章,或者配置文件啊,都使用cat命令

  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写 !

    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# pwd
    /etc/sysconfig/network-scripts
    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# ls
    ifcfg-eth0
    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# cat ifcfg-eth0  
    # Created by cloud-init on instance boot automatically, do not edit.
    # If you don't want cloud-init genrated automatically,you can disable it in /etc/cloud/cloud.cfg
    # For more information, please refer to: https://help.aliyun.com/document_detail/57803.html
    #
    BOOTPROTO=dhcp
    DEVICE=eth0
    ONBOOT=yes
    STARTMODE=auto
    TYPE=Ethernet
    USERCTL=no
    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# tac ifcfg-eth0 
    USERCTL=no
    TYPE=Ethernet
    STARTMODE=auto
    ONBOOT=yes
    DEVICE=eth0
    BOOTPROTO=dhcp
    #
    # For more information, please refer to: https://help.aliyun.com/document_detail/57803.html
    # If you don't want cloud-init genrated automatically,you can disable it in /etc/cloud/cloud.cfg
    # Created by cloud-init on instance boot automatically, do not edit.
    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# 
    
  • nl 显示的时候,顺道输出行号 ! 看代码的时候,希望显示行号!常用

    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# nl ifcfg-eth0 
         1	# Created by cloud-init on instance boot automatically, do not edit.
         2	# If you don't want cloud-init genrated automatically,you can disable it in /etc/cloud/cloud.cfg
         3	# For more information, please refer to: https://help.aliyun.com/document_detail/57803.html
         4	#
         5	BOOTPROTO=dhcp
         6	DEVICE=eth0
         7	ONBOOT=yes
         8	STARTMODE=auto
         9	TYPE=Ethernet
        10	USERCTL=no
    [root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# 
    
  • more 一页一页的显示文件内容

    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# cat csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
    		setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
    		setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    	#add sbin directories to the path
    	foreach p ( /usr/local/sbin /usr/sbin )
    		switch (":${PATH}:")
    		case "*:${p}:*":
    			breaksw
    		default:
    			if ( $uid == 0 ) then
    	                        set path = ( ${p} ${path:q} )
    			else
    	                        set path = ( ${path:q} ${p} )
    			endif
    			breaksw
    		endsw
    	end
    endif
    
    setenv HOSTNAME `/usr/bin/hostname`
    set history=1000
    
    if ( -d /etc/profile.d ) then
            set nonomatch
            foreach i ( /etc/profile.d/*.csh )
                    if ( -r "$i" ) then
    	                        if ($?prompt) then
    	                              source "$i"
    	                        else
    	                              source "$i" >& /dev/null
    	                        endif
                    endif
            end
            unset i nonomatch
    endif
    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# more csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
    		setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
    		setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    	#add sbin directories to the path
    	foreach p ( /usr/local/sbin /usr/sbin )
    		switch (":${PATH}:")
    		case "*:${p}:*":
    			breaksw
    		default:
    			if ( $uid == 0 ) then
    	                        set path = ( ${p} ${path:q} )
    			else
    	                        set path = ( ${path:q} ${p} )
    			endif
    			breaksw
    		endsw
    	end
    endif
    
    setenv HOSTNAME `/usr/bin/hostname`
    set history=1000
    
    if ( -d /etc/profile.d ) then
            set nonomatch
            foreach i ( /etc/profile.d/*.csh )
    --More--(71%)
    

    使用空格键进行翻页,enter 代表向下看一行

    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# more csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
    		setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
    		setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    	#add sbin directories to the path
    	foreach p ( /usr/local/sbin /usr/sbin )
    		switch (":${PATH}:")
    		case "*:${p}:*":
    			breaksw
    		default:
    			if ( $uid == 0 ) then
    	                        set path = ( ${p} ${path:q} )
    			else
    	                        set path = ( ${path:q} ${p} )
    			endif
    			breaksw
    		endsw
    	end
    endif
    
    setenv HOSTNAME `/usr/bin/hostname`
    set history=1000
    
    if ( -d /etc/profile.d ) then
            set nonomatch
            foreach i ( /etc/profile.d/*.csh )
                    if ( -r "$i" ) then
    	                        if ($?prompt) then
    	                              source "$i"
    	                        else
    	                              source "$i" >& /dev/null
    	                        endif
                    endif
            end
            unset i nonomatch
    endif
    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# 
    

    :f 显示行号

    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# more csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
    		setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
    		setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    	#add sbin directories to the path
    	foreach p ( /usr/local/sbin /usr/sbin )
    		switch (":${PATH}:")
    		case "*:${p}:*":
    			breaksw
    		default:
    			if ( $uid == 0 ) then
    	                        set path = ( ${p} ${path:q} )
    			else
    	                        set path = ( ${path:q} ${p} )
    			endif
    			breaksw
    		endsw
    	end
    endif
    
    setenv HOSTNAME `/usr/bin/hostname`
    set history=1000
    
    if ( -d /etc/profile.d ) then
            set nonomatch
            foreach i ( /etc/profile.d/*.csh )
    "csh.login" line 33
    
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页,往后翻页!(空格翻页,上键代表往前翻页,下键代码往后翻页,使用 q 命令退出当前文件

  • 查找字符串:/xxx

    向下查询:/要查询的字符

    向上查询使用:?要查询的字符串

    继续搜寻下一个:n N:向上寻找

    image-20221230110548486

    向下查找所有set

    image-20221230110650084

  • head 只看头几行;通过 -n 参数来控制显示几行

    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# head -20 csh.login
    # /etc/csh.login
    
    # System wide environment and startup programs, for login setup
    
    if ( ! ${?PATH} ) then
            if ( $uid == 0 ) then
    		setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
            else
    		setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
            endif
    else
    	#add sbin directories to the path
    	foreach p ( /usr/local/sbin /usr/sbin )
    		switch (":${PATH}:")
    		case "*:${p}:*":
    			breaksw
    		default:
    			if ( $uid == 0 ) then
    	                        set path = ( ${p} ${path:q} )
    			else
    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# 
    
  • tail 只看尾几行;通过 -n 参数来控制显示几行

    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# tail -20 csh.login
    		endsw
    	end
    endif
    
    setenv HOSTNAME `/usr/bin/hostname`
    set history=1000
    
    if ( -d /etc/profile.d ) then
            set nonomatch
            foreach i ( /etc/profile.d/*.csh )
                    if ( -r "$i" ) then
    	                        if ($?prompt) then
    	                              source "$i"
    	                        else
    	                              source "$i" >& /dev/null
    	                        endif
                    endif
            end
            unset i nonomatch
    endif
    [root@iZf8z5pcq1lf8zoizwzgufZ etc]# 
    

你可以使用 man [命令]来查看各个命令的使用文档,如 : man cp

3.3.2 windows下的ping命令
PS C:\Users\kevin\Desktop> ping

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name

选项:
    -t             Ping 指定的主机,直到停止。
                   若要查看统计信息并继续操作,请键入 Ctrl+Break;
                   若要停止,请键入 Ctrl+C。
    -a             将地址解析为主机名。
    -n count       要发送的回显请求数。
    -l size        发送缓冲区大小。
    -f             在数据包中设置“不分段”标记(仅适用于 IPv4)。
    -i TTL         生存时间。
    -v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,
                   对 IP 标头中的服务类型字段没有任何
                   影响)。
    -r count       记录计数跃点的路由(仅适用于 IPv4)。
    -s count       计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list   与主机列表一起使用的松散源路由(仅适用于 IPv4)。
    -k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。
    -w timeout     等待每次回复的超时时间(毫秒)。
    -R             同样使用路由标头测试反向路由(仅适用于 IPv6)。
                   根据 RFC 5095,已弃用此路由标头。
                   如果使用此标头,某些系统可能丢弃
                   回显请求。
    -S srcaddr     要使用的源地址。
    -c compartment 路由隔离舱标识符。
    -p             Ping Hyper-V 网络虚拟化提供程序地址。
    -4             强制使用 IPv4。
    -6             强制使用 IPv6。

PS C:\Users\kevin\Desktop> ping www.baidu.com

正在 Ping www.a.shifen.com [182.61.200.6] 具有 32 字节的数据:
来自 182.61.200.6 的回复: 字节=32 时间=2ms TTL=51
来自 182.61.200.6 的回复: 字节=32 时间=3ms TTL=51
来自 182.61.200.6 的回复: 字节=32 时间=3ms TTL=51
来自 182.61.200.6 的回复: 字节=32 时间=2ms TTL=51

182.61.200.6 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 2ms,最长 = 3ms,平均 = 2ms
PS C:\Users\kevin\Desktop> ipconfig

Windows IP 配置


无线局域网适配器 本地连接* 3:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 12:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::3692:d9f7:e86d:ee50%7
   IPv4 地址 . . . . . . . . . . . . : 10.10.5.172
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 10.10.5.1

以太网适配器 以太网 2:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::f84a:6221:f47e:21e7%3
   IPv4 地址 . . . . . . . . . . . . : 192.168.136.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 SSTAP 1:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 以太网 3:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::c82:b7ef:a054:2bef%16
   IPv4 地址 . . . . . . . . . . . . : 192.168.80.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

无线局域网适配器 WLAN:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
PS C:\Users\kevin\Desktop>
3.3.3 Linux下的ping命令

ifconfig #查看网络配置

/etc/sysconfig/network-scripts #网络配置目录 基于CentOS7系统

[root@iZf8z5pcq1lf8zoizwzgufZ /]# cd /etc/sysconfig  
[root@iZf8z5pcq1lf8zoizwzgufZ sysconfig]# ls
anaconda    console          firewalld         irqbalance  modules          rhn      run-parts  sysstat.ioconf
atd         cpupower         grub              kdump       network          rngd     selinux
authconfig  crond            ip6tables-config  kernel      network-scripts  rpcbind  sshd
chronyd     ebtables-config  iptables-config   man-db      nftables.conf    rsyslog  sysstat
[root@iZf8z5pcq1lf8zoizwzgufZ sysconfig]# cd network-scripts/     #网络配置目录 基于CentOS7系统
[root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# ls
ifcfg-eth0    # 默认的网络配置文件
[root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# 
[root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=52 time=13.6 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=52 time=13.6 ms
^C  # Ctrl+C停止
--- www.a.shifen.com ping statistics ---
26 packets transmitted, 26 received, 0% packet loss, time 25023ms
rtt min/avg/max/mdev = 13.558/13.582/13.607/0.162 ms
[root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# ifconfig  #查看网络配置
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:87:ad:3e:d9  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.26.196.177  netmask 255.255.240.0  broadcast 172.26.207.255
        inet6 fe80::216:3eff:fe03:4d29  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:03:4d:29  txqueuelen 1000  (Ethernet)
        RX packets 871386  bytes 270167169 (257.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 734773  bytes 486232640 (463.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 820317  bytes 140806157 (134.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 820317  bytes 140806157 (134.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@iZf8z5pcq1lf8zoizwzgufZ network-scripts]# 

3.4 硬链接和软链接

Linux的链接分为两种:硬链接和软链接

复习

创建文件命令:touch 文件名

输入字符串,也可以输入到文件中:echo

硬链接:A -> B 假设B是A的硬链接,那么他们两个指向同一个文件!允许一个文件拥有多个路径,用户可以可以通过这种机制建立硬链接到一些重要文件上,防止误删!

创建硬链接使用 ln 命令

ln test2.txt test1.txt  #新建一个硬链接

软链接:类似Windows下的一个快捷方式,删除了源文件,快捷方式就访问不了了!

创建软链接使用 ln -s 命令

ln -s test2.txt test.txt  #新建一个软链接
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test1.txt  test2.txt  test.txt  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls -l
total 12
drwx------ 4 springboot springboot 4096 Dec 25 15:03 springboot
-rwxrwxrwx 2 root       root          0 Dec 27 12:23 test1.txt
-rwxrwxrwx 2 root       root          0 Dec 27 12:23 test2.txt
lrwxrwxrwx 1 root       root          9 Dec 30 11:42 test.txt -> test2.txt
drwx------ 3 www        www        4096 Dec 24 15:22 www
drwxr-xr-x 2 root       root       4096 Dec 30 11:58 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

向 test1.txt 文件中写入内容,即可发现通过硬链接和软链接都可以显示 test1.txt 中的内容:

[root@iZf8z5pcq1lf8zoizwzgufZ home]# echo "Hello,World!" >>test1.txt
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test1.txt  test2.txt  test.txt  www  xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat test1.txt
Hello,World!
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat test2.txt
Hello,World!
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat test.txt
Hello,World!
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

image-20221230160207945

删除原文件,(软链接、符号链接)快捷方式就失效了,硬链接还在

3.5 Vim编辑器

什么是Vim编辑器

vim通过一些插件可以实现和IDE一样的功能

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.
简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
vim 则可以说是程序开发者的一项很好用的工具。
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在
连 vim 的官方网站(http://www.vim.org)自己也说 vim 是一个程序开发工具而不是文字处理软件

vim 键盘图 :

image-20221230163058957

vim 按键说明

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n< space>那个 n 表示『数字』,例如 20 。输入数字后再按空格键,光标会向右移动这一行的 n 个字符。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊!(常用)
n< Enter>n 为数字。光标向下移动 n 行(常用)
搜索替换
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
删除、复制与粘贴
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd删除游标所在的那一整行(常用)
nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G复制游标所在行到第一行的所有数据
yG复制游标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)

第二部分:一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式
i, I进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
a, A进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
[Esc]退出编辑模式,回到一般模式中(常用)

第三部分:一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息!
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

三种使用模式

基本上vi/vim 共分为三种模式,分别是命令模式(command mode),输入模式(Insert mode)和底命令模式(Lastline mode)。这三种模式的作用分别是 :
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。

image-20221230171140477此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,被当作了一个命令。

image-20221230171806346

vim xiaoshu.txt
#进入文件,属于命令模式
#按下i键,进入输入模式;此时就可以输入文本或者代码了

image-20221230164244466

以下是常用的几个命令 :

  • i 切换到输入模式,以输入字符
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。如果是编辑模式,需要先退出编辑模式(ESC键)

若想要编辑文本: 启动 Vim,进入了命令模式,按下 i ,切换到输入模式
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
输入模式 :
在命令模式下按下 i 就进入了输入模式
在输入模式中,可以使用以下按键

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式(编辑模式)

在命令模式下按下 : (英文冒号)就进入了底线命令模式

image-20221230165230573

底线命令模式可以输入单个或者多个字符的命令,可用的命令非常多

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序

  • w 保存文件

  • qa! 强制退出文件(不保存,所以强制退出文件之前,如果已经对文件进行了编辑,最好先使用 w 命令进行保存文件)

  • wq 保存并退出

  • wq! 强制保存并退出,适用于以下文件

    E45: 'readonly' option is set (add ! to override)   
    

按ESC键可随时退出底线命令模式

简单来说,我们可以将这三个模式想成底下的图标来表示:

image-20221230172107246

完整的演示说明

新建或者编辑文件,按 i 进入输入模式,编写内容,编写完成后退出输入模式,esc,进入底线命令模式 :wq 保存退出!

3.6 Linux账号管理学习

一般在公司中,用的应该都不是root账户!

简介

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

添加账号 useradd

useradd -选项 用户名
useradd -m /home/xiaoshu  #-m:表示会自动创建这个用户的主目录

参数说明:

  • 选项 :

    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -m 使用者目录如不存在则自动建立。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名 :

    • 指定新账号的登录名。

测试:

[root@iZf8z5pcq1lf8zoizwzgufZ /]# cd home
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  test1.txt  test.txt  www  xiaoshu  xiaoshu.txt
[root@iZf8z5pcq1lf8zoizwzgufZ home]# rm -rf test1.txt test.txt xiaoshu.txt xiaoshu #递归删除文件或者文件夹
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  www
[root@iZf8z5pcq1lf8zoizwzgufZ home]# useradd -m xiaoshu  #-m:表示会自动创建这个用户的主目录

理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了!/etc/passwd

[root@iZf8z5pcq1lf8zoizwzgufZ /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
xiaoshu:x:1003:1003::/home/xiaoshu:/bin/bash  #刚才创建的用户 xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ /]# 

删除用户 userdel

userdel -r xiaoshu #-r:删除用户的时候,将它的目录也一并删除;如果不加就不会删除该用户产生的文件

参数

Options:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -Z, --selinux-user            remove any SELinux user mapping for the user

测试

[root@iZf8z5pcq1lf8zoizwzgufZ home]# userdel -r xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  www
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat /etc/passwd  #查看是否删除成功;下面的输出可以看到xiaoshu用户不见了
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

修改用户 usermod

修改已有用户的信息使用 usermod 命令,其格式如下:

usermod 选项 用户名

常用选项包括:-c,-d,-m,-g,-G,-s,-u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值

例如:

[root@iZf8z5pcq1lf8zoizwzgufZ home]# useradd -m xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls
springboot  www  xiaoshu

[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
xiaoshu:x:1003:1003::/home/xiaoshu:/bin/bash

[root@iZf8z5pcq1lf8zoizwzgufZ home]# usermod -d /home/123 xiaoshu #将用户xiaoshu的文件移动到123目录下,没有该文件夹
[root@iZf8z5pcq1lf8zoizwzgufZ home]# ls  #修改之后也没有生成新的文件夹
springboot  www  xiaoshu

[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat /etc/passwd  #但是可以看到下面,xiaoshu用户的主目录已经发生变化
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
xiaoshu:x:1003:1003::/home/123:/bin/bash
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

修改完毕之后记得查看配置文件: cat /etc/passwd

修改回原来的目录

[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
xiaoshu:x:1003:1003::/home/123:/bin/bash

[root@iZf8z5pcq1lf8zoizwzgufZ home]# usermod -d /home/xiaoshu xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:996:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:995:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
chrony:x:996:993::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
springboot:x:1002:1002::/home/springboot:/sbin/nologin
xiaoshu:x:1003:1003::/home/xiaoshu:/bin/bash
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

切换用户

root用户

image-20230102172858325

1.切换用户的命令为:su username 【username是你的用户名】

image-20230102173601218

2.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令

image-20230102173742020

3.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】

$表示普通用户

#表示超级用户,也就是root用户

扩展:修改主机名,修改完毕之后重新建一个会话连接到ECS,即可看到已经修改成功(这是临时的,重启服务器就没有了)

[root@iZf8z5pcq1lf8zoizwzgufZ home]# hostname
iZf8z5pcq1lf8zoizwzgufZ
[root@iZf8z5pcq1lf8zoizwzgufZ home]# hostname xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# hostname
xiaoshu
[root@iZf8z5pcq1lf8zoizwzgufZ home]# 

image-20230102174248802

用户的密码设置问题

我们一般通过root创建用户的时候!要配置密码!

Linux上输入密码是不会显示的,正常输入就行

[root@xiaoshu ~]# passwd xiaoshu
Changing password for user xiaoshu.
New password:                         # 输入xxx
BAD PASSWORD: The password is shorter than 8 characters      # 如果提示密码少于8位,不用管,再输入一次
Retype new password: 
passwd: all authentication tokens updated successfully.      # 设置成功
[root@xiaoshu ~]# 

设置密码后,可以通过 su xiaoshu 直接切换用户,也可以新建会话用 xiaoshu 用户登录

image-20230103102738412

image-20230103102813190

image-20230103102825543

image-20230103102840477

在公司中,一般拿不到公司服务器的root权限,都是一些分配的账号!

如果是超级用户的话,可以指定任何用户的密码:

passwd username
new password:
Retype new password:

如果是普通用户:

[xiaoshu@xiaoshu ~]$ passwd
Changing password for user xiaoshu.
Current password: 
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic #密码不能太简单
passwd: Authentication token manipulation error
[xiaoshu@xiaoshu ~]$ passwd
Changing password for user xiaoshu.
Current password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[xiaoshu@xiaoshu ~]$ 

锁定账户

root,比如张三辞职了!冻结这个账号,一旦冻结,这个人就登录不上系统了!

passwd -l xiaoshu       # -l:表示锁定账户,lock;锁定之后这个用户就不能登录了
passwd -d xiaoshu       # -d:表示将密码删除,就没有密码了!也不能登录

在公司中,一般触及不到root用户!作为一个开发,一般拿不到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值