Linux基本使用和操作笔记

文本要点

1、Linux操作系统发展介绍、安装配置
2、SSH原理机制、Linux文件上传下载
3、Linux常见文件系统操作命令使用
4、Vim编辑器基础使用
5、Linux用户、权限管理
6、Linux常用系统命令

内容大纲

#操作系统概述
#linux系统概述
#vmware虚拟机
	虚拟网络+网络模式
	Centos7系统安装
	SSH免密登录  非对称加密(私钥 公钥)
	文件下载
	虚拟机的快照
#Linux常用的基础命令
	文件系统的操作  目录树
	搜索操作、解压缩
	管道
#vi|vim编辑器
	打开新建、异常处理
	常用命令操作
	插入模式编辑、保存退出
# Linux用户与权限管理
	用户、用户组及其管理
	文件权限  rwx
	su、sudo
# 系统信息
	时间、日期
	进程
	磁盘使用情况、内存使用情况


一、操作系统概述

1.1、计算机原理
  • ==冯、诺依曼==结构 (普林斯顿结构)
    • 核心思想:把程序当做数据存储在计算机存储设备中。按顺序读取指令执行。
    • 冯、诺依曼计算机制造三个基本原则
      • 采用二进制逻辑
      • 程序存储执行
      • 计算机由五个部分组成
    • 硬件分类:
      • CPU(运算器控制器
      • 存储设备(内存、外存)
      • 输入设备
      • 输出设备
  • 计算机软件分为软件和硬件。
1.2、操作系统与分类
  • 定义:管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。没有操作系统称之为裸机。
  • 意义:使编程变得更简单。不需要再编写程序如何去控制协调硬件工作。
  • 操作系统分类
    • 桌面
    • 服务器
    • 嵌入式
    • 移动设备

二、Linux操作系统

2.1、Linux发展史

http://linuxfederation.com/complete-historical-timeline-linux-evolution/

2.2、Linux内核
  • Linux操作系统=Linux内核+GNU+其他应用操作
2.3、Linux发行版本
  • Linux分类

    • 个人桌面版

    • 企业服务器版

      国内最大的体系 RH 红帽系统,Centos是社区免费版本。
      

三、VMware虚拟机

3.1、虚拟组件
  • 所谓的虚拟指的是物理上不存在,但是逻辑上存在,功能跟物理实体一样的。
#1、网卡、网络适配器
	连接网络的硬件设备 分为有线和无线之分 其唯一身份标识MAC地址。
#2、交换机
	通过网线将计算机组成局域网,同一个交换机下网络地位是一样的。
	整个局域网网络属性由交换机决定的。
#3、网桥
	扩大局域网通信距离的一种设备。网桥两边网络地位也是一样的。
#4、DHCP 动态主机配置协议设备
	自动的分配IP 网关DNS等属性 集中维护局域网网络。
#4、NAT服务器
	将不可上网的IP转换成为可以上网的IP  
  • Q:如何去组建一个局域网?

    交换机 服务器 网线
    
3.2、VMware3种网络模式
  • 核心

    1、这种网络模式下,使用的交换机是谁?
    2、这种网络模式下,虚拟机能否上网?如果能上网,是如何上网的?
    
  • 桥接模式:使用是vmnet0交换机,可以上网,通过网桥桥接上网的。

  • NAT模式:使用vmnet8交换机,可以上网,通过NAT转换上网的。

  • host-only模式:使用vmnet1交换机,不可以上网。

  • 实战:使用VMware虚拟机NAT模式安装Centos7操作系统。 详细参考附件资料。

    #整个离线课程3台虚拟机 硬件资源分配
    node1 1*2 CPU  4G ram  
    node2 1*1 CPU  2G ram
    node2 1*1 CPU  2G ram
    
3.3、SSH安全外壳协议
  • 核心:非对称加密(单向的)

    两把钥匙
    公钥、私钥
    公钥加密、私钥解密
    
  • 用途1:基于用户名密码加密登录

  • 用途2:机器间的免密登录

3.4、Linux文件上传与下载

四、Linux常见基础命令

4.1、文件系统基本概念

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)上的文件的方法和数据结构;即在存储设备上组织文件的方法

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

  • 功能:存储文件,存储数据,管理文件。

  • 形式:目录树结构。

    1、都是从/根目录开始的
    2、分为两个种类:目录、文件
    3、路径的唯一性
    4、只有在目录下才可以继续创建下一级目录
    
  • Linux号称万物皆文件,组成一个目录树结构。所有的文件都是从/根目录开始的。

  • 回顾:

    • 1、当前目录、相对路径、绝对路径

      #1、当前目录
        你目前所在的目录 可以使用pwd来查看。 有的场合叫做当前工作目录。
      
      #2、相对路径
        相对你当前的工作目录  路径没有/
      
      #3、绝对路径
        从根目录开始,/开始的 跟你在哪里没有关系
      
      
    • 2、特殊符号 . … ~ /

      #  .
      	如果是文件名字以.开始  .1.txt   表示文件是隐藏文件
      	如果是路径中有. 表示的是当前路径  ./
      #  ..
      	当前路径的上一级   cd ../../
      	e.g:cp ../../1.txt ./    
      
      #  ~  
      	表示的是用户的家目录
      	root用户的家目录  /root
      	普通用户的家目录   /home/用户名
      
      #  /
         根目录
      
4.2、常见的操作命令
#1、history命令 
   查看历史执行命令
#2、查看指定目录下内容
   ls
   ls -a      查看所有文件 包括隐藏文件
   ls -l =ll  查看文件详细信息 包括权限 类型 时间 大小等
   ll -h      表示以人性化的显示内容
   ll  *      *通配符表示任意字符  ?表示有且只有一个字符
#3、切换工作目录
   #如何查看自己当前的所在目录 pwd
   cd 路径     注意自己写的是相对还是绝对的  还可以结合特殊符合使用
   cd ./
   cd /
   cd ../
   cd ~
#4、文件的创建与删除
   touch 创建一个空文件  没有内容的文件
   mkdir 创建文件夹
   	 	 -p  父目录不存在的情况下 帮助创建
   rm    删除文件
   		 -f 强制删除  不给与提示
   		 -r 递归删除 针对文件夹
   		 -rf 杀伤力极大 问问自己在干什么
   		 坐牢眼:rm -rf /*
#5、移动与复制
	tree  以树状图的形式显示文件夹下内容
		[root@node1 tmp]# tree /usr/tmp/
		-bash: tree: command not found
		#如果在linux中出现命令找不到错误,一般来说两种原因:命令写错 命令不存在
		在确定没有写错的情况下  可以使用yum在线快速安装
		yum install -y tree
	cp	复制文件或者文件夹
		-r 递归 针对文件夹
		/a/b  表示复制的是文件夹b
		/a/b/* 表示复制的是文件夹b下的所有内容
	mv  移动文件或者文件夹
    mv  旧文件名 新文件名
  • 文件内容查看命令

    #1、cat
    	一次查看所有的内容  适合小文件
    #2、less
    	分屏查看大文件  enter回车下一行  空格下一屏
    	前后屏幕  b  f
    	退出 q
    #3、head	
    	查看文档的前几行内容
    	-n 指定行数
    #4、tail
    	- 数字  查看最后几行内容
    	-f -F 文件  实时查看文件的变化内容
    	(当追踪的文件丢失再出现的时候 能否继续追踪 F可以继续)
    
  • 管道命令 |

    # 命令 1 | 命令 2 
      可以将命令 1 的结果 通过命令 2 作进一步的处理
      
    [root@node1 ~]# ls 
    1.txt  anaconda-ks.cfg  hello  lrzsz-0.12.20.tar.gz  test  test.file
    [root@node1 ~]# ls | grep ^t
    test
    test.file  
    
  • echo 输出命令

    #相当于print 将内容输出console控制台
    [root@node1 test]# echo 111
    111
    [root@node1 test]# echo "hello "
    hello 
    
  • 重定向

    #  >  覆盖
    
    #  >> 追加
    	将前面命令成功的结果追加指定的文件中
    
    #  &>>
        将前面命令失败的结果追加指定的文件中
    
    
    输出的内容分为标准输出stdout  错误输出stderr
    [root@node1 test]# echo 111
    111
    [root@node1 test]# echo "hello "
    hello 
    [root@node1 test]# echo 111 > 4.txt
    [root@node1 test]# cat 4.txt 
    111
    [root@node1 test]# echo 222 > 4.txt   
    [root@node1 test]# cat 4.txt       
    222
    [root@node1 test]# echo 222 >> 4.txt
    [root@node1 test]# cat 4.txt        
    222
    222
    
    [root@node1 test]# mkdir a/b/c  >> 5.txt   
    mkdir: cannot create directory ‘a/b/c’: No such file or directory  
    #错误的输出无法通过>>进行追加
    
    [root@node1 test]# mkdir a/b/c &>> 5.txt
    [root@node1 test]# cat 5.txt 
    mkdir: cannot create directory ‘a/b/c’: No such file or directory
    
    
    #  && 和 ||
    	命令1 &&命令2  1执行成功才执行2
    	命令1 ||命令2  1执行失败才执行2
    
    [root@node1 test]# mkdir a/b/c && echo "创建目录成功了"
    mkdir: cannot create directory ‘a/b/c’: No such file or directory
    [root@node1 test]# mkdir -p a/b/c && echo "创建目录成功了"
    创建目录成功了
    
  • 软链接

    • 可以对比理解windows快捷方式。

      有没有硬链接呢?  有
      ln -s 目标文件的绝对路径 软链接名(快捷方式)
      ln    目标文件的绝对路径 硬链接名
      
  • Linux搜索文件

    • find

      find <指定目录> <指定条件> <指定动作>
      	默认是搜索当前目录下,所有文件 显示在屏幕上
      	
      find . -name "*.log" -ls 在当前目录查找以.log 结尾的文件, 并显示详细信息。
      find /root/ -perm 777 查找/root/目录下权限为 777 的文件
      find . -type f -name "*.log" 查找当目录,以.log 结尾的普通文件
      find . -type d | sort 查找当前所有目录并排序
      find . -size +100M 查找当前目录大于 100M 的文件	
      
    • grep

      ps -ef | grep sshd 查找指定 ssh 服务进程
      ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身
      ps -ef | grep sshd -c 查找指定进程个数
      
    • locate

      #相当于find -name 但是效率比find更高 因为底层维护了一个索引的数据库 默认一天更新一次
      #通常的使用习惯是 先更新在查找
      updatedb
      locate /etc/sh 搜索 etc 目录下所有以 sh 开头的文件
      locate pwd 查找和 pwd 相关的所有文件
      
    • which

      #查找环境变量中的内容 
      通常用于判断软件是否配置环境变量。
      
  • 解压缩命令

    • 打包、解包

      tar cvf 打包名.tar  文件或者目录
      tar xvf 打包名.tar
      tar xvf 打包名.tar -C指定解包目录
      
    • 压缩、解压缩

      #z  gzip
      使用 gzip 压缩和解压缩
      #j bzip2
      使用 bzip2 压缩和解压缩
      
      
      tar zcvf itheima.tar.gz a.txt b.txt 
      tar zcvf itheima.tgz a.txt b.txt 
      
      tar zxvf lrzsz-0.12.20.tar.gz -C aaa/   
      
      

五、vi|vim文本编辑器

5.1、介绍
  • VI编辑器是linux平台上最强悍的文本编辑器。主要是以命令来驱动执行。

    最困难的就是命令的使用
    区分3种工作模式
    
  • VIM是VI的增强版本,功能差不多。

5.2、3种工作模式
  • 命令模式

    直接使用vi打开文件进入的就是命令模式
    在此模式下,所敲的按键都理解为命令 以命令驱动执行不同的功能
    此模型下,不能自由进行文本编辑
    
  • 输入模式(左下角insert标记)

    编辑文本内容
    需要从命令模式按下i进入输入模式
    按下esc回到命令模式
    
  • 底线命令模式

    : 字母
    通常用于文件的保存退出
    
    :q 退出
    :w 保存
    :wq 保存退出
    :wq! 强制保存退出
    
    • 还可以在命令模式下输入:shift+zz 快速的保存退出。
5.3、打开、新建
vim  文件名

#1、如果编辑的文件不存在 此时就是新建文件 new file
#2、如果文件存在,就打开文件 进入命令模式
  • 异常模式处理

    • 情况:编辑过程中 ,VIM闪退。导致底层会生成一个swap交换文件,里面记录着未保存的数据
    • 现象:再次打开文件的时候,编辑器会询问你如何处理swap交换文件。
5.4、vim基本操作命令
  • 光标的移动

    cp /etc/profile ./
    
    #1、方向键控制移动  
    #2、命令 hjkl移动
    #3、翻页 pageup  pagedown
    #4、行首(home 0)  行尾(end $)
    
    #5、跳到文件的最后一行  G
    #6、跳到文件的第一行  gg
    
  • 复制粘贴

    #复制
    yy  复制当前行 
    nyy 复制当前行往下n行
    
    #粘贴
    p 当前行的下一行粘贴
    P 当前行的上一行粘贴
    
    #注意 使用鼠标从window或者其他地方复制内容到vim编辑器粘贴 一定一定要在输入模式下进行 否则数据会有丢失的风险。
    
  • 搜索替换

    #搜索
    /待搜索的内容   回车进行搜索 搜索到的结果高亮显示
    使用n跳转到下一个搜索到的内容  N跳转上一个
    
    #清除搜索匹配之后的高亮显示
    :noh
    
    #替换
    :2,4s/原内容/替换内容/gc
    没有g的时候 替换每一行匹配的到的第一个  g表示替换这一行的所有匹配到的
    c表示替换前给用户提示
    
    #如果需要进行全局替换 所谓第一行到最后一行
    :1,$s/原内容/替换内容/gc
    :%s/原内容/替换内容/gc
    
    hello tom hello allen hello
    allen tom mac apple
    hello allen apple
    hello apple spark allen hadoop spark
    allen allen
    
  • 删除、撤销

    #删除命令
    dd  删除当前行
    ndd 删除当前行往下n行
    
    #撤销、反撤销
    u 撤销上一步的操作  后悔药
    ctrl+r 反撤销
    
5.5、插入模式、编辑模式(重要)
在命令模式下面输入字母进入插入模式

# i 进入到编辑模式后,定位到当前光标前面
# o 进入到编辑模式后,在当前行的后面,添加一行空行
  • 常见的组合命令 G+o

    打开文件之后 调整到最后一行 在下一行开始编辑
    
  • 注意:在crt中,复制的内容单击鼠标右键可以进行粘贴,但是在vim编辑器中,必须在输入模式下再进行粘贴,否则内容会有丢失的风险

5.6、可视模式( VISUAL )
  • 功能:用于文本的选择

    # v       基于字符选择的
    # V       基于行选择的
    # ctrl+v  基于文本块的选择
    
  • 选择之后配合其他命令进行操作

5.7、扩展:notepad++ 文本编辑插件
  • 功能:在windows平台联机编辑linux上的文件,保存之后,自动同步服务器上。
  • 前提:notepad++ 升级到最新版本
  • 安装插件:插件—>插件管理—>NppFTP
  • 插件的配置

六、Linux用户与权限

6.1、用户、用户组
#用户 user
linux上可以创建不同的用户  不同用户具有不同的权限
权限最高的用户叫做root 超级管理员用户
可以通过root去管理其他用户及权限

#用户组 usergroup
多个用户组成一组 同一组的用户具有相同的权限
6.2、权限
  • 读read r

  • 写write w

  • 执行execute x

  • 权限的分配和管理

    • 在linux上对应文件文件夹,划分3个归属

      文件的拥有者 user
      拥有者所在的用户组 group
      其他用户组  others
      
    • 如何去查看权限 ls -l

      [root@node1 linux02]# ll
      total 8
      -rw-r--r--. 1 root root   47 May 18 11:23 1.txt
      
      -rw-r--r-- 就是权限位
      	第一位 -文件 d文件夹 l链接
      	后面每3位一组
      	rw- u 读写
      	r-- g 读
      	r-- o 读
      
6.3、用户组、用户的管理
  • 必须是root用户才可以进行管理

    #1、增加一个新的用户组
    groupadd 选项 用户组
    	可以使用的选项有:
    	-g GID 指定新用户组的组标识号(GID)。
    	
    # groupadd group1
    此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
    # groupadd -g 101 group2
    此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
    
    #2、查看当前系统已有组信息
    cat /etc/group 
    itheima:x:1001:lisi,wangwu
    
    itheima组名
    

x 密码口号 一般都没有密码
1001 groupID gid 组编号
lisi,wangwu 归属该组的用户

#3、删除组
groupdel 组名

#4、修改文件归属的组
chgrp 组名 文件/目录名 针对文件夹加上-R可以实现递归修改


```shell
#1、创建用户
useradd 选项 新建用户名
	-g   指定用户所属的群组。值可以使组名也可以是GID
	-G   指定用户所属的附加群组。
	
#2、设置密码	
[root@node1 linux02]# passwd 用户名
Changing password for user allen.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.	

#3、删除用户
userdel -r 用户名
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

#4、查看用户信息
cat /etc/passwd | grep 用户名

#5、修改文件所属的用户
chown allen 1.txt   如果是文件夹及其下面的所有要修改 加上-R参数
  • linux上root用户和非root用户区别

    • 命令提示符不同: root# 普通用户$

    • 家目录不同:

      [root@node1 ~]# pwd
      /root
      
      [allen@node1 ~]$ pwd
      /home/allen
      
6.4、su、sudo
  • su命令:用于用户之间的切换。

    # su 用户
    
    [allen@node1 ~]$ ll /root
    ls: cannot open directory /root: Permission denied
    [allen@node1 ~]$ su root   #普通用户切换成为root需要输入root密码
    Password: 
    
    [root@node1 linux02]# su allen   #root用户切换成为普通用户 不需要密码
    [allen@node1 linux02]$ 
    
    [allen@node1 linux02]$ exit  #退出
    exit
    
    
    #弊端:虽然通过切换可以具有root权限,但是root密码已经泄露了 不安全。
    #能不能实现一种 让普通用户临时具有root权限,但是又不泄露密码
    
  • sudo

    • 功能:给普通用户临时授予root权限。

    • 注意:能够分配sudo的只有root。

    • sudo的配置命令 visudo

    • sudo具体使用

      • step1:使用root用户编辑sudo配置文件

        [root@node1 ~]# visudo
        
        ## Allow root to run any commands anywhere
        root    ALL=(ALL)       ALL
        allen   ALL=(ALL)       ALL
        
        allen   ALL=(ALL)       /usr/bin/ls  #配置只允许执行指定的命令
        
      • step2:普通用户执行命令之前需要添加sudo关键字 申请sudo权限校验

        [allen@node1 ~]$ ls /root
        ls: cannot open directory /root: Permission denied
        [allen@node1 ~]$ sudo ls /root
        
        We trust you have received the usual lecture from the local System
        Administrator. It usually boils down to these three things:
        
            #1) Respect the privacy of others.
            #2) Think before you type.
            #3) With great power comes great responsibility.
        
        [sudo] password for allen:    #这里需要输入allen普通用户的密码
        linux02
        [allen@node1 ~]$ sudo ls /root  #密码和sudo校验成功 获取一个为期5分钟的免密操作
        linux02
        
6.5、修改文件的权限
  • 核心的命令 chmod 权限 文件|文件夹 (针对文件夹-R 递归修改)

  • 方式1:老百姓喜闻乐见的形式 数字

    read----->r      4
    write---->w      2
    execute-->x      1
    没有权限           0
    
    chmod 777 -R 文件|文件夹
    
  • 方式2: 字母 ±形式

    user->u  group->g others->o  all->a
    + 增加权限
    - 减少权限
    
    chmod o-x 1.txt
    chmod a-w 1.txt
    
  • 方式3: 等号赋值形式

    chmod u=rwx 1.txt
    
  • 扩展阅读: 对于文件、文件夹来说 读、写、执行权限 分为意味着什么?

    比如:想要去删除一个文件夹下面的文件 需要什么权限?

    比如:想切换cd进入一个文件夹 需要什么权限?


七、Linux系统命令

  • 时间、日期

    [root@node1 linux02]# date
    Sun Jan 29 16:27:37 CST 2023
    [root@node1 linux02]# date +"%Y-%m-%d %H:%M:%S"
    2023-01-29 16:28:22
    [root@node1 linux02]# cal
        January 2023      
    Su Mo Tu We Th Fr Sa
     1  2  3  4  5  6  7
     8  9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31
    
    #关于时间日期的同步  同步网络授时
    #大数据都是集群环境  基本要求:集群的时间同步问题
    
  • 查看磁盘、内存信息

    df -h    #disk free 显示磁盘剩余空间
    [root@node1 linux02]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    devtmpfs                 1.9G     0  1.9G   0% /dev
    tmpfs                    1.9G     0  1.9G   0% /dev/shm
    tmpfs                    1.9G   12M  1.9G   1% /run
    tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/mapper/centos-root   38G  1.7G   36G   5% /
    /dev/sda1               1014M  154M  861M  16% /boot
    /dev/mapper/centos-home   19G   33M   19G   1% /home
    tmpfs                    378M     0  378M   0% /run/user/0
    
    #内存使用情况
    [root@node1 linux02]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           3.7G        249M        3.3G         11M        135M        3.3G
    Swap:          3.9G          0B        3.9G
    
  • 进程信息

    #在安装了jdk的情况下 有一个命令专门用于查看本机运行的java进程。
    jps
    
    [root@node1 ~]# jps  #必须在安装好jdk之后可以使用  
    -bash: jps: command not found
    
    #查看本机运行的所有进程
    ps -ef | grep 进程名
    
    #通常根据查询的进程号 结合kill -9 进程号  杀死进程
    
  • linux完整命令参考资料

    https://www.runoob.com/linux/linux-command-manual.html

    https://man.linuxde.net/

猜你喜欢

转载自blog.csdn.net/weixin_58808338/article/details/128783646