命令行提示符:
    # 代表root用户
    $ 代表普通用户

    命令行基本快捷键:
    esc + . 打印上一个命令的参数
    放大字体 ctrl + +
    缩小字体 ctrl + -
    打开新的标签页 ctrl + T
    打开新的独立窗口 ctrl + N
    清空屏幕 ctrl + l
    退出当前账户 ctrl + d
    中止当前任务 ctrl + c
    补全按键 tab
    上一个命令 方向键up
    下一个命令 方向键down

    ctrl + a 光标移动到开头
    ctrl + e 光标移动到末尾
    ctrl + u 将光标前的内容删除
    ctrl + k 将光标后的内容删除
    ctrl + 方向键左 光标按单词向左移动
    ctrl + 方向键右 光标按单词向右移动
    ctrl + w 按单词向左删除

    shell命令包含三个部分:
    1.命令(可执行的)
    2.选项 (一个或者多个,改变命令的行为)
    3.参数 (命令的目标)

    例子:tail —help
    Usage: tail [OPTION]… [FILE]…
    用法: 命令 【选项】… 【参数】…
    (一个或多个选项 一个或者多个参数)

    基本命令:
    ls 列出当前目录下存在的文件

    ls -l 长列表格式显示文件信息
    ls -a 显示所有文件(包括隐藏文件)
    ls -R 递归显示(包括子目录)
    ls -1 列表格式
    ls -r 反向排序
    ls -t 根据时间先后排序

    command —help 查看命令具体的用法,包含的参数等等。。

    补全按键 tab

    command1;command2
    执行多个命令

    passwd 更改账户密码

    换行符 \

    history 查看历史命令列表
    !number 执行对应序号的命令
    !string 执行最后一次以string开头的命令

    history -w file 保存历史命令到文件里
    history -c 清空历史命令

    文件管理命令:
    file filename 查看文件类型
    cat file 获取文件内容显示在当前终端
    less file 按页显示文件的内容
    (按q退出)
    head file 显示文件的头部十行
    head -n num file 显示文件的头部num行
    tail file 显示文件的尾部十行
    tail -n num file 显示文件的尾部num行
    wc file 显示文件内容的行数、单词数、字节数
    wc -l file 只显示文件内容的行数
    wc -w file 只显示文件内容的单词数
    diff file1 file2 对比两个文件的不同

    文件系统的规范:
    /usr
    unix system resource 存放安装的软件,共享库文件,只读应用程序
    /usr/bin 用户命令
    /usr/sbin 系统管理命令
    /usr/local 本地自定义软件(一般源码编译安装软件的时候会放置在此目录下)
    /bin 存放普通用户可以执行命令的二进制文件
    /sbin 存放超级管理员可以执行命令的二进制文件
    /etc 存放系统的配置文件
    /root root用户的家目录
    /home 存放普通用户的家目录
    /var 存放一些可变动的数据,如数据库,日志文件等
    /tmp 存放临时数据,文件不被访问10天之内就会删除
    /dev 包含特殊的设备文件,供系统用户硬件的访问
    /boot 存放启动程序文件
    /run 应用程序运行时产生的数据,重启丢失,存在内存中

    linux目录结构的概念:
    cd 切换工作路径(不指定路径,默认返回家目录)
    pwd 显示当前工作路径

    文件的管理:
    查找文件
    find /dir/-name filename 在dir目录下精准匹配文件名为 filename的文件
    locate /dir filename 在dir目录下模糊匹配文件名为 filename的文件(包含)

    创 建文件(更改文件的时间戳) touch

    stat file 查看文件的详细信息
    Access: 访问时间
    Modify: 创建时间
    Change:更改时间

    touch -md ‘2021-02-02 11:11:11’ file1 更改文件的创建时间

    cp file file1 复制单个文件 (创建副本)

    cp file /dir/file2 复制file到dir目录下并命名为file2

    cp -i file file1 -i选项提示重复文件覆盖

    cp file1 file2 file3 /dir/ 复制多个文件

    mv file1 file2 剪切file1并命名为file2

    mv file1 /dir/file2 剪切file到dir目录下并命名为file2

    mv -i file4 file5 提示覆盖

    mv file5 file6 file7 /dir/ 移动多个文件

    rm file1 删除单个文件
    rm file -f 强制删除文件(root不提示确认)
    rm file1 file2 file3 删除多个文件

    mkdir dir 生成目录

    mkdir dir/dir1/dir2 -p 递归创建目录

    cp -r dir1 dir2 递归地复制目录(只复制文件)

    cp -a dir1 dir2 继承属性并复制目录(包括权限)

    mv dir2 dir3 /dir 移动目录

    rm -r dir 删除目录
    rm -fr dir 强制删除目录

    rmdir 删除空目录(目录非空无法删除)

    link文件:硬链接(不能为目录创建)和软链接(相当于windows里的快捷方式)

    ln file file1 为file创建名为file1的硬链接

    ln -s file file1 为file创建名为file1的软链接
    ln -s dir file 为目录创建名为file的软链接

    软链接:当被指向的文件删除后,软链接随之失效
    硬链接:当被指向的文件删除后,不发生变化

    shell拓展:
    * 零个或者多个字符
    ? 任何一个字符
    [abc…] 方括号内任意一个字符
    [!abc…] 不包括方括号内任意一个字符
    [[:alpha:]] 任何字母字符
    [[:upper:]] 任何大写字符
    [[:lower:]] 任何小写字符
    [[:alnum:]] 任何数字和字母字符
    [[:digit:]] 0-9任何单个数字
    [[:punct:]] 除了空格和字母数字以外的任何可打印字符
    [[:space:]] 任何一个空白字符

    { }拓展 【必须是成对出现才有意义】
    实际作用:快速创建多个文件或者目录
    例子:
    touch file{1..100} 生成file1..file100的100个文件

    变量替换:$
    等式赋值: var = var1 把var1的值赋予var
    查看变量: echo $var

    别名中的变量替换:
    例子:
    alias guanbiwangluo=’nmcli connection down ens160’
    【把命令的值赋予guanbiwangluo 执行guanbiwangluo 等于执行nmcli connection down ens160】

    永久生效需要在/etc/bashrc里最后一行添加alias guanbiwangluo=’nmcli connection down ens160’

    保留字面含义:
    \ 取消后面单个字符的特殊含义
    “ “ 取消shell拓展的含义,但是不压缩变量替换和命令执行
    ‘ ‘ 取消所有字符的特殊含义

    man page:
    在执行关键字搜索之前需要执行mandb
    更新手册数据库
    (mandb每天自动更新,新机器需要手动更新)

    关键字搜索:【查找手册关于keyword的所有章节】仅root用户可执行
    man -k keyword

    man page快捷键:
    g 回到顶部
    G 回到底部
    / word 向下查找关键字
    ? word 向上查找关键字
    n 向下查阅找到的关键字
    N 向上查阅找到的关键字

    重定向:
    command > file 把command的标准输出结果定向输出到文件里
    command 2> file 把command的错误输出结果定向输出到文件里

    command >> file 重定向追加输出到文件
    command 2> /dev/null 把错误输出丢弃

    command &> file 把 标准输出、错误输出都重定向放到文件

    构建管道:命令的输出结果交予其他命令处理
    管道符: |

    commmand1 | command2

    tee管道:
    command1 | tee file | command
    tee管道在中间:
    命令1的输出结果定向到文件里,再交给命令2处理,显示在终端上

    command1 | command | tee file
    tee管道在末尾:
    命令1的输出结果交给命令2处理过后,重定向输出到文件

    vim编辑器的使用:
    命令模式下的快捷键:
    home 光标跳转到行首
    end 光标跳转到行尾
    ctrl + 方向右 光标按单词向右跳转
    ctrl + 方向左 光标按单词向左跳转
    gg 光标跳转到文章开头
    G 光标跳转到文章末尾
    yy 复制光标处的一整行
    p 粘贴到光标处
    dd 删除光标处的一整行
    d^ 删除光标前到行首
    d$ 删除光标后到行尾
    / word 向下查找关键字
    ? word 向上查找关键字
    n 向下查阅找到的关键字
    N 向上查阅找到的关键字

    底层模式:
    :w 保存
    :q! 强制退出(不保存)
    :wq! 或者 :x 保存并强制退出

    :w file 另存为文件
    :r file 读取文件到当前的文件下

    :s /old/new 替换当前行第一个old单词为new
    :s /old/new/g 替换当前行所有old单词为new
    :n,m s/old/new/g 替换n行到m行所有的old为new
    :%s /old/new/g 替换文本内的所有old为new
    :%s /old/new/gc 确认是否进行覆盖操作

    :set nu 显示行号
    :set nonu 不显示行号

    :syntax on 打开语法高亮
    :syntax off 关闭语法高亮

    环境变量:
    变量的作用:shell程序如何运行,通过变量的值来决定,程序执行的时候根据变量的值来确定行为。

    export var
    放大变量为环境变量(可以在同一bash环境下所有子bash中生效,但无法跨程序(另一个用户环境)生效)

    export var
    unset var 取消放大变量

    set 查看当前所有变量

    env 查看当前所有环境变量

    用户和组:
    用户账户提供系统的安全边界
    组是用户的集合
    信息文件分别存放在/etc/passwd /etc/group

    创建用户取的默认值配置文件:/etc/login.defs
    useradd username 创建名为username的用户
    useradd -b /dir username 创建用户指定家目录
    useradd -c ‘see you again’ user5 创建用户并添加注释信息
    useradd -e ‘2022-07-07’ user6 创建用户并指定账户的过期时间
    useradd -g group username 创建用户并指定主要组
    useradd -u 1008 user7 -o -u选项指定UID,-o选项允许创建同一UID的用户
    useradd -r uername 创建系统用户
    useradd -s /sbin/sh user10 添加用户并指定使用的shell程序

    修改用户:
    usermod -md /dir user6 移动用户的家目录
    usermod -c ‘love story’ user5 更改用户的注释信息
    usermod -e ‘2023-7-1’ user6 更改用户账户的过期时间
    usermod -g group username 更改用户的主要组
    usermod -G group username 添加用户的附加组
    usermod -aG group usename 当用户的附加组有两个或两个以上时添加附加组
    usermod -s /bin/sh user10 更改用户的shell环境
    usermod -L username 锁定用户
    usermod -U username 解锁用户

    删除用户:
    userdel -fr username 连带家目录一起强制删除用户

    groups groupname 查看附加组信息

    添加组:
    groupadd groupname 添加名为 groupname 的组
    groupadd -r groupname 添加系统组
    groupadd -g ** groupname 添加组指定GID

    修改组信息:
    groupmod -g 1020 group3 修改组GID
    groupmod -n newname group3 改组名

    修改组成员信息:
    groupmems -g groupname -l
    列出组成员的信息

    groupmems -g groupname -a username
    为 groupname组,添加一个username用户

    groupmems -g groupname -d username
    为 groupname组,删除一个username用户

    gpasswd -a username groupname
    添加用户到组里
    gpasswd -d username groupname
    从组里删除用户

    删除组:
    groupdel group1

    管理用户密码:
    配置文件放在:/etc/shadow

    限制用户账户的三种方法:
    usermod -L
    usermod -s /sbin/nologin
    usermod -e 或者 chage -E

    配置密码期限策略:
    chage -l username 显示用户的密码策略
    chage -d 0 username 强制用户下次登录马上修改密码
    chage -d username 更改用户上次更改密码的时间,为天数(天数从1970年1月1号开始算起)

    例子:
    chage -d 10 user8
    chage -l user8
    Last password change : Jan 11, 1970

    更改密码期限策略:【是从上次更改密码的时间开始算起的】
    两种方法:1.直接更改/etc/shadow配置文件
    2.命令行更改
    chage -m 3 user 设置用户更改密码后3天才允许继续更改密码
    chage -M 365 user 设置密码有效期为一年
    chage - W 7 user 设置密码到达有效期前的多少天进行提醒
    chage -I 5 user 设置密码过渡时间为5天【密码过期后,5天内还可进行登录】
    chage -E ‘2022-7-7’ user8 更改账户的过期时间

    文件系统的权限:
    三个级别:用户、组、其他人
    三个类别:读、写、执行

    rwx 为一组 可以是 rw- r— w-x …
    也可以是 rwxrwxrwx

    r 为读取权限
    对文件的影响:可以读取文件的内容
    对目录的影响:可以列出目录的内容【只有r权限的时候,只能看到文件名】
    w 为写权限
    对文件的影响:可以修改文件的内容
    对目录的影响:可以创建文件或者删除目录里的文件【只有w权限无法创建或者删除目录里的文件,必须同时具备有x权限。当目录为空的时候,可以删除,目录不为空则无法删除目录】
    x 为执行权限
    对文件的影响:可以作为命令执行文件
    对目录的影响:可以作为工作目录【只有x权限,可以cd进入目录里,但还需要r权限才能列出内容】

    更改文件的权限:
    chmod u=- file | dir 摘除文件用户级别的所有权限