0%

Linux加强版


一、网络连接的三种方式

1.1、桥接模式

虚拟系统可以和外部系统相互通讯,但是容易造成ip冲突(超过255个机器)

1.2、NAT模式(网络地址转换模式)

NAT模式,网络地址转换模式,虚拟系统可以和外部系统单方面通讯(外部不可以直接访问内部),不造成IP冲突,相当于给你虚拟机虚拟一个ip,然后在需要访问外部的时候,自动转换成你母机ip去访问外部

1.3、主机模式

可以看作一个独立的系统,不与外界进行联系

二、Linux目录结构

1、linux的文件系统是采用层级式的树状目录结构,最上层是根目录”/“,然后在此目录下创建其他的目录。

2、在Linux的世界里,一切皆文件

  • /bin (/usr/bin、/usr/local/bin),是Binary的缩写,存放着最常使用的命令【常用】
  • /sbin 存放的是系统管理员使用的系统管理程序
  • /home 存放普通用户的主目录,在linux中每个用户都有自己的目录【常用】
  • /root 系统管理员,也成为超级权限者的用户主目录【常用】
  • /lib 系统开机所需要的最基本的动态连接共享库
  • /lost+found 一般情况是空的,当系统非法关机后,这里就存放了一些文件
  • /etc 所有的系统管理所需要的配置文件和子目录,例如mysql的my.conf【常用】
  • /usr 用户的很多应用程序和文件都放在这个目录下,类似于windows的program files目录【常用】!!
  • /boot 存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件【常用】
  • /proc 是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息【不能动】
  • /srv service的缩写,存放一些服务启动之后需要提取的数据【不能动】
  • /sys linux2.6之后出现,安装了一个文件系统sysfs【不能动】
  • /tmp 用来存放一些临时文件
  • /dev 类似于Windows的设备管理器,把所有的硬件用文件形式存储
  • /media 会自动识别一些例如u盘光驱等设备,识别后就将识别的设备挂载到这目录下【常用】
  • /mnt 该目录是为了让用户挂载别的文件系统,可以将外部存储挂载在/mnt上,进入该目录查看【常用】
  • 挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。
  • /opt 给主机额外安装软件的目录
  • /usr/local 另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序【常用】
  • /var 存放一些不断扩张的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件【常用】
  • /selinux [security-enhanced linux] 是一种安全的子系统,它能控制程序只访问特定文件,有三种工作模式,可以自行设置

三、vi和vim编辑器

3.1、三种使用模式

正常模式(命令模式)

以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用「上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、粘贴』来处理你的文件数据。

插入模式

按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般按i即可

命令行模式

输入esc退出当前模式,再输入:进入命令行模式

可以提供相关指令,完成读取,存盘,替换,离开vim显示行号等动作。

3.2、各种模式的切换

3.3、vim操作

在一般模式下:

  • yy 拷贝当前行;5yy 拷贝当前向下的5行,p 粘贴 u撤销 x删除
  • dd 删除当前行;5dd:删除当前向下的5行
  • G 文档最末行,gg 最首行
  • 先输入行号 在输入shift+g 表示移动到多少行

在命令行模式下:

  • wq(保存退出) q(退出) q!(强制退出不保存)
  • /关键字 回车 查找某个单词,输入n是查找下一个
  • set nu 设置文件的行号,set nonu 取消文件的行号

四、开机重启与用户登录注销

4.1、开关机与重启

命令 用法
shutdown -h now 立刻进行关机
shutdown -h 1 “hello,1分钟后会关机了”
shutdown -r now 现在重新启动计算机
halt 关机,作用和上面一样
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘

注意细节

  • 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
  • 目前的shutdown/reboot/halt等命令均已经在关机前进行了sync,但是还是自己执行一次比较好

4.2、用户登录和注销

基本介绍

  1. 登录的时候尽量少使用root账号登录,因为他是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用“su - 用户名” 命令来切换成系统管理员身份
  2. 在提示符下输入logout即可注销用户
命令 用法
su - 用户名 切换用户
logout 注销用户

五、Linux用户管理

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

5.1、用户基本操作

命令 用法
useradd 用户名 添加用户,默认该用户的家目录在/home/用户名 下
useradd -d 指定目录 用户名 给新创建的用户指定家目录
useradd -g 用户组 用户名 增加用户时直接加上组
passwd 用户 给某个用户设置密码
pwd 显示当前用户所在目录
userdel 用户名 删除用户但保留对用home目录
userdel -r 用户名 删除用户并且删除对应home目录
id 用户名 查询用户信息
su - 切换的用户名 切换用户,高权限切换地全选不需要密码,反之需要
exot/logout 返回到原来用户
who am i/ whoami 查看当前用户,不加空格是当前操作的用户,加空格是第一次登录的用户的信息

5.2、用户组

介绍:

类似于角色,系统可以对有共性/权限的多个用户进行统一的管理,所有在一个组的用户都会有这个组的权限

命令 用法
groupadd 组名 新增组
groupdel 组名 删除组
useradd -g 用户组 用户名 增加用户时直接加上组

如果直接添加用户而不指定组,则虚拟机会默认创建一个以用户名为名的组并将其放入组中

5.3、用户和组相关文件

  • /etc/passwd 文件

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

每一行都是一个用户:含义: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

  • /etc/shadow文件

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

  • /etc/group文件

组的配置文件,记录linux中组的信息,每行含义:组名:口令:组标识号:组内用户列表

六、实用指令

6.1、运行级别

运行级别说明

  1. 关机
  2. 单用户[找回丢失的密码]
  3. 多用户状态没有网络服务
  4. 多用户状态有网络服务
  5. 系统未使用保留给用户
  6. 图形界面
  7. 系统重启

常用的运行级别是3和5,也可以指定默认运行级别

命令 用法
init[0123456] 切换不同的运行级别
systemctl get-default 查看目前的运行级别
systemctl set-default mult-user.target/systemctl set-default graphical.target 设置运行级别,前者相当于3,后者相当于5(改变默认的级别)

6.2、找回root密码(Centos7.6 以后)

  1. 启动系统,进入开机页面,在页面中按‘e’进入编辑界面 (5s之内)
  2. 进入之后使用键盘的上下键移动光标,找到以“Linux 16”开头所在的行数,在行的最后输入:init=/bin/sh
  3. 输入之后按快捷键Ctrl + x 进入单用户模式
  4. 在光标闪烁的位置输入mount -o remount,rw / (单词间有空格),然后按回车
  5. 在新的一行最后面输入passwd。完成后按回车输入密码,然后再次确认密码即可
  6. 接着在鼠标闪烁的位置输入: touch /.autorelabel(touch 后面有空格),之后继续按回车
  7. 接着在光标闪烁的位置输入 exec /sbin/init 之后按回车键,等待系统修改密码(过程时间有点长),完成后系统会自动重启

6.3、帮助指令

命令 用法
man [命令或配置文件] 获得帮助信息
help 命令 获得shell内置命令的帮助信息

6.4、文件目录类

  • pwd 显示当前工作目录的绝对路径
  • ls 显示目录:常用选项: -a,显示所有,包括隐藏的,**-l** 以列表 -lh (h是human的意思)指的是按照人类比较容易看的方式显示
  • cd 定位相对路径或绝对路径 **cd~回到自己的home目录,cd..**回到上级目录
  • mkdir 创建目录 mkdir [选项] 要创建的目录 -p为创建多级目录
  • rmdir 删除目录 mkdir[选项] 要删除的空目录 ,如果需要删除非空目录,需要使用rm -rf 要删除的目录 -r表示递归,f表示强制删除
  • touch 创建空文件
  • cp 拷贝文件到指令目录 cp [选项] 文件 指定目录 选项:-r 递归复制整个文件夹, **\cp [选项] 文件 指定目录 ** 强制覆盖不提示
  • rm 移除文件或目录 rm[选项] 要删除的文件或目录,**-r**递归 -f强制删除不提示
  • mv 移动文件或重命名 重命名(同一个目录):mv old文件名 new文件名 移动: mv /old位置 /new位置
  • cat 查看文件内容 -n显示行号 为了浏览方便一般会加上 |more (管道命令:把前面的结果交给下一个指令)
  • more 要查看的文件 ,指令中内置了快捷键,可以独立使用 也可以与 cat 命令一起使用
    • 空格键(space) 向下翻一页
    • 回车键(Enter) 向下翻一行
    • q 立刻离开
    • Ctrl+f 向下滚动一屏
    • Ctrl+B 返回上一屏
    • = 输出当前行的行号
    • :f 输出文件名和当前行的行号
  • less 分屏查看文件内容,与more类似却更加强大,他是懒加载模式
    • 空格键(space) 向下翻一页
    • 下键(pagedown) 向下翻一页
    • 上建(pageup) 向上翻一页
    • / 向下搜索字串功能 n向下查找;N向上查找
    • ? 向上搜索字串功能 n向上查找;N向下查找
    • q 立刻离开
  • echo 输出内容到控制台,例如要输出环境变量 echo $PATH
  • head 显示文件开头的部分内容,默认十行 head -n 任意数字,查看前任意行
  • tail 显示文件中尾部内容,默认十行 tail -n 任意数字 查看尾n行 tail -f 实时追踪文件更新
  • >与>> 输出重定向(覆盖)和追加
    • ls -l > 文件 列表的内容写入到文件中(覆盖)
    • ls -al >>文件 列表内容追加到文件的末尾
    • cat 文件1>文件2 文件1内容覆盖到文件2(覆盖)
    • echo “内容” >> 文件 将内容追加到文件末尾
  • cal 显示当前的日历信息。
  • ln 软连接,也被称为符号链接,类似于Windows的快捷方式 ln -s [源文件或目录] [软连接名] 删除软连接rm的时候最后不要带上/,ln [源文件或目录] [硬连接名]
    • 注意点:
      • 创建硬链接使用相对路径和绝对路径都可以
      • 删除源文件,硬链接还可以访问到数据。
      • 创建硬链接,硬链接数会加1,删除源文件或者硬链接,硬链接数会减1。
      • 创建软链接,硬链接数不会加1
      • 不能给目录创建硬链接
  • history 查看已经执行过的历史命令 后面加数字是查看最近的n个命令,查看的命令前会带有参数,可以直接**!+参数(编号)**来执行命令

ll查询下的:

6.5、时间日期类

  • date指令-显示当前日期
    • date (功能描述:显示当前时间)
    • date + %Y (功能描述:显示当前年份)
    • date + %m (功能描述:显示当前月份)
    • date + %d (功能描述:显示当前是哪一天)
    • date “+%Y-%m-%d %H:%M:%S” (功能描述:显示年月日时分秒)
    • date -s 字符串时间 设置日期
  • cal +选项 查看日历,不加选项默认本月,加了就是参数当年的日历

6.6、搜索查找类

  • find从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端

  • 语法:find [搜索范围] [选项]

  • 选项:

    • -name<查询方式> 按照指定的文件名查找模式查找文件
    • -user<用户名> 查找属于指定用户名的所有文件
    • -size<文件大小> 按照指定的文件大小查找文件

  • locate快速定位文件路径,locate指令利用事先建立的系统中所有文件名称以及路径的locate数据库实现快速定位给定的文件需遍历整个系统,速度较快,但为了保证查询结果的准确度,管理员必须定期更新locate时刻。 语法:locate 搜索文件,执行之前 必须先执行updatedb

    由于locate指令基于数据库查询,所以第一次查找前必须使用updatedb指令来创建一个新的locate库

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

  • grep和管道符”|” 过滤查找,管道符”|”表示将前一个命令的处理结果输出传递给后面的命令处理,基本语法: grep [选项] 查找内容,源文件 -n显示匹配行及行号,-i忽略字母大小写

6.7、压缩和解压类

十四、Shell编程

14.1、Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发生请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

14.2、Shell脚本的执行方式

脚本格式要求:

1、脚本以 #!/bin/bash 开头

2、脚本需要有可执行权限

脚本的常用执行方式

方式1:(输入脚本的绝对路径或相对路径)

说明:首先要赋予hellowordl.sh脚本的+x权限,在执行脚本

方式2:(sh+脚本)

说明:不用赋予脚本+x权限,直接sh + 脚本执行即可。

img

14.3、Shell的变量


Shell变量介绍

1、分为系统变量和用户自定义变量

2、系统变量:$HOME、$PWD、$SHELL、$USER等

3、显示当前shell中所有变量:set


shell变量的定义

基本语法:
1、定义变量:变量名=值(不能打空格)

2、撤销变量:unset 变量

3、声明静态变量:readonly变量,注意:不能unset

4、输出变量:echo $变量名 或者echo 变量名=$变量名 或者echo “变量名=$变量名”;第一个输出结果为 变量名的值,后两个输出结果一样 都是 变量名=值

定义变量的规则:

1、变量名称可以有字母、数字、下划线组成,但是不能以数字开头

2、等号两侧不能有空格

3、变量名称一般习惯为大写,这是一个规范,也就是说哪怕定义的是小写也不会报错,但是 不好

将命令的返回值赋给变量

1、A=date反引号,运行里面的命令,并且把结果返回给变量A,如果不加反引号,那么就是将date单词赋给A。

2、A=$(date) 等价于反引号

14.4、设置环境变量