• Linux学习笔记


     本篇笔记是 慕课网 《Linux达人养成计划I》 课程的笔记。

    我们平时所说的Linux分为内核版本和发行发版

    1.Linux内核版本

      官网: https://www.kernel.org/

    2.Linux发行版本

      不同厂商的发行版本,用的内核版本差不多

    另外,需要注意的是,实际使用中并不是版本越新越好,往往是越稳定、越安全越好

    多说一句,Linux是开源的,我们可以拿到源代码进行分析学习。

    开源软件的好处很多,诸如使用的自由、研究的自由、散步及改良的自由。但是需要注意开源软件不一定是免费的。

    Linux应用领域

      1.基于Linux的企业服务器

        在www.netcraft.com可以查看站点服务器的系统

      2.嵌入式领域

    Linux与Windows的不同

      Linux严格区分大小写

      Linux中所有内容以文件形式保存,包括硬件

      Linux不靠扩展名区分文件类型

      Linux下的程序不能直接在Linux中安装和运行

    一、 Linux的命令

    命令基本格式:

      [root@aston ~]#

      root 表示当前用户

      aston表示当前机器的主机名(默认localhost)

      ~表示当前所在位置(~是家目录,用户登录后的初始位置)

      #表示当前用户是超级用户;$表示当前用户是普通用户

    命令格式:

      命令 [选项] [参数]

        注意:个别命令使用不遵守此格式;当有多个选项时可以写在一起;简化选项与完整选项之分,如 -a等于 -all

    1. 查询目录命令 ls

      ls [选项] [文件或目录]

        选项: -a 显示所有文件,包括隐藏的

            -l 显示详细信息

            -d 查看目录属性

           -h 个性化显示(文件大小)

           -i 显示inode

      目录详细信息

      -rw-------. 2 root root 1207 1月 14 18:18 install.log

      -rw-------.  默认10位,第一位是文件类型(- 文件 d 目录 | 软链接 等等);第2、3、4位是u所有者权限;第5、6、7位是g所属组权限;第8、9、10位是其他人权限;最后一个点(.)是CAL权限。

      权限: r 读  w 写  x 执行

      2  表示引用计数(仅所在位置,不一定就是2)

      第一个root 表示文件所有者

      第二个root 表示所属组

      1207  表示文件大小(默认单位ieshi字节)

      1月 14 18:18 表示最后一次修改时间

      install.log 表示文件名

      Linux隐藏文件的目的是告诉用户这是系统文件,不要随便修改

    2. 文件处理命令

      2.1 目录处理命令

        在Linux中一切皆是文件,目录也是文件

        创建目录命令: mkdir [-p] [目录名]

          -p : 递归创建,及路径中可以有空目录

        切换目录: cd

          cd ~ :进入家目录

          cd :进入家目录

          cd - : 进入上次目录

          cd .. :进入上一级目录

          cd . :进入当前目录;在Linux中 . (点)代表当前目录

        显示当前目录路径 : pwd

        删除目录 : rmdir [目录名]

          该命令只能删除空目录

        删除文件或目录 : rm -rf [文件或者目录名]

          -r :删除目录

          -f :强制删除

        复制 :cp [选项] [原文件或目录] [目标目录]

          -r :复制目录

          -p :连带文件属性复制

          -d :若源文件是链接文件,则复制链接属性

          -a :相当与 -pdr

        剪切或者改名 : mv [原文件或目录] [目标文件]

        相关概念:

          相对路径 :参照当前算在目录进行查找;

          绝对路径 :从根目录开始指定一级一级递归查找。

        ctrl + L :清屏快捷键

        Linux常用目录:

          / :根目录

          /bin 和 /sbin :用来保存系统命令

          /boot :用户启动目录

          /dev :特殊文件保存目录

          /etc : 配置文件

          /home :普通用户家目录

          /root :root用户家目录

          /lib :函数库保存目录

          /media 和 /mnt 和 /misc:空目录,挂载外接设备

          /proc 和 /sys:保存内存的挂在点,不能直接操作

          /tmp:临时目录

          /usr:系统软件资源目录

          /var:系统可变文档目录

          注意:对于一般的用户(这里指的是开发能力不够的,对Linux底层不了解的使用者)尽量不要操作家目录和tmp目录之外的其他目录

      2.2链接命令

        ln [-s] [原文件] [目录文件]

          -s :创建软链接

        硬链接特征(不建议创建硬链接):

          a.拥有相同的i节点和存储block块,可以看做是同一个文件

          b.可以通过i节点识别

          c.不能跨分区

          d.不能针对目录使用

        软链接特征:

          a.类似Windows创建快捷方式

          b.软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际数据

          c.修改其中一个文件,另一个也就修改了

          d.删除源文件,软链接不能再使用

    3.文件搜素命令

      3.1 文件搜索命令 :  locate 文件名

        速度快

        updatedb:强制更新数据库

        /etc/updatedb.conf配置文件:

          

      3.2 命令搜索命令(系统命令)

        whereis [参数] [选项]  : 搜索命令所在路径及帮助文档所在位置

          -b:只查找可执行文件

          -m:只查找帮助文档

        which 文件名

          搜索命令所在路径及别名

      PATH环境变量: 定义的是系统搜索命令的路径

    4. 文件搜索命令 find

      这个命令非常强大

      find [搜索范围] [参数] [搜索条件]

        注意1:避免大范围搜索,会非常耗费系统的资源

        注意2:find是在系统当中符合条件的文件名。如果需要匹配,使用通配符是完全匹配。

        Linux通配符:

          *:匹配任意内容

          ?:匹配任意一个字符

          []:匹配任意一个中括号内的字符

        参照:

          -name:文件

          -iname:文件名不区分大小写

          -user:按照所有者来搜索

          -nouser:没有所有者的文件

          -mtime:修改文件内容

            -10:表示十分钟之内;10:表示十分钟;+10:表示十分钟以前

          -ctime:改变文件的属性

          -atime:按照文件访问时间

          -size:按照查找文件大小

          -inum:按照查找i节点

          例如:find -size +20K -a -size -50K

            超找大小在20K和50K之间的文件

          -a:and与

          -o:or 或

          补充: -exec 命令 {}; 对搜索结果进行处理

            例如:find . -size +20K -a -size -50K -exec ls -ln {};

    5. 字符串搜索命令 grep

      grep [选项] 字符串  文件名

        -v:取反,不包含字符串的

        -i: 忽略大小写

      grep和find的区别:

        find是完全匹配

        grep是包含匹配,匹配使用正则表达式

    6.帮助命令 man

      man 命令 

        获取指定命令的帮助文档(官方文档够权威)

        进入帮助文档之后可以使用 “/关键词”模糊查找

        n : 下一个

        shift+n : 上一个

        man的有8个级别,分别为1——8

      其他帮助命令

        help

          shell内部命令,获取shell内部命令的帮助

          例如: ls --help

        注: whereis 命令 :确认是否为内部命令

        info 命令

          比man更加详细

          查找方式:

            -回车: 进入子帮助页面(带有*号标记)

            -u: 进入上层页面

            -n: 进入下一个帮助小节

            -p:进入上一个帮助小节

            -q: 退出

    7. 压缩与解压缩命令

      Linux常用的压缩格式有 .tar.gz  .tar.bz2  .zip  .gz  .bz2 五种

      6.1 zip格式压缩

        zip 压缩文件名   源文件

          压缩文件

        zip  -r  压缩文件名  源目录

          压缩目录

        unzip  压缩文件

          解压缩 .zip 压缩包

      6.2 .gz格式压缩

        gzip  源文件

          压缩为 .gz 格式的压缩文件,源文件会被删除

        gzip  -C  源文件 > 压缩文件

          压缩为 .gz 格式的压缩文件,源文件保留

        gzip  -r  目录

          压缩目录下的所有子文件,但是不能压缩目录

        gzip  -d  压缩文件

          解压缩文件

        gunzip  压缩文件

          解压缩文件

      6.3 .bz2 格式压缩

        bzip2  源文件

          不保留源文件

        bzip2  -k  源文件

          保留源文件

        bzip2  -d  压缩文件

        bunzip2  压缩文件

          以上两个命令均为解压缩,-k 保留压缩文件

        注意:bzip2 不支持压缩目录

      6.4 打包命令 tar

        tar  -cvf  打包文件名   源文件

          选项:

            -c: 打包

            -v: 显示过程

            -f: 指定打包后的文件名

        tar  -xvf  打包文件名

          解打

          选项:

            -x: 解打包

        tar  -zcvf  压缩包名(.tar.gz)  源文件

          选项:

            -z: 压缩为 .tar.gz 格式

        tar  -zxvf  压缩包名(.tar.gz)

          选项:

            -x: 解压缩 .tar.gz 格式

        tar  -jcvf  压缩包名(.tar.bz2)  源文件

        tar  -jxvf  压缩包名(.tar.bz2)

        tar  -jxvf  压缩文件名  -C  路径

          指定解压缩位置

        可以压缩多个文件

        tar  -ztvf  压缩文件名

          只查看压缩文件内容,不解压

    7. 关机和重启命令

      shutdown命令

        shutdown  [选项]  [时间]

          选项:

            -c: 取消前一个关机命令

            -h: 关机

            -r: 重启

          now 表示当前时间

      & : 后台符号,命令在后台运行

      halt、poweroff、init 0

        三个关机命令,这三个命令不安全

      reboot、init  6

        重启命令,reboot相对安全

      系统运行级别:

        0 - 关机

        1 - 单用户

        2 - 不完全多用户,不含NFS服务

        3 - 完全多用户

        4 - 未分配

        5 - 图形界面

        6 - 重启

      runlevel : 查看系统级别

        会有两个值,第一个是进入当前级别前的级别;第二个是当前级别

      /etc/inittab

        系统开机默认进入系统级别

      logout : 退出登录命令

    8. 挂载命令

      mount

        查询系统已经挂载的设备

      mount  -a

        依据配置文件 /etc/fstab 的内容,自动挂载

      8.1 挂载命令格式

        mount  [-t  文件系统]  [-o  特殊选项]   设备文件名   挂载点

        选项:

          -t  文件系统: 加入文件系统类型来指定挂载的类型,可以是 ext3、ext4、iso9660(光盘)等文件系统

          -o  特殊选项: 可以指定挂载的额外选项

        特殊选项

          atime/noatime: 更新访问时间/不更新访问时间;访问分区文件时,是否更新文件的访问时间。默认为更新

          async/sync: 异步/同步。默认为异步

          auto/noauto: 自动/手动;mount  -a 命令执行时,是否会自动安装 /etc/fstab 文件内容挂载。默认为自动

          rw/ro: 读写/只读;文件系统挂载时,是否具有读写权限。默认为rw

          suid/nosuid: 具有/不具有SUID权限;设定文件系统是否具有SUID和SGID的权限。默认为具有

          user/nouser: 允许/不允许普通用户挂载;设定文件系统是否允许普通用户挂载。默认为不允许,只有root可以挂载分区

          exec/noexec: 执行/不执行,设定是否允许在文件系统中执行可执行文件。默认为允许执行

          remount: 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限

          defaults: 定义默认值,相当于rw、SUID、dev、exec、auto、nouser、async这七个选项

          usrquota: 写入代表文件系统支持用户磁盘配额,默认不支持

          grpquota: 写入代表文件系统支持组磁盘配额,默认支持

      chomd  775  文件名称: 赋给文件可执行权限

      8.2 挂载光盘步骤

        首先放入光盘,然后

        8.2.1 建立挂载点

          mkdir   /mnt/cdrom/

        8.2.2 挂载光盘

          mount  -t  iso9660  /dev/sro   /mnt/cdrom

          或者 mount   /dev/sro  /mnt/cdrom

        8.2.3 卸载命令

          umount  设备文件名或者挂载点

          例如卸载光盘: umount  /dev/sro  或者   umount  /mnt/cdrom

        注意:卸载命令是必须执行的

      8.3 挂载U盘

        8.3.1 查看U盘设备文件名

          fdisk  -l

        8.3.2 挂载U盘

          mount  -t  vfat  /dev/sdb1   /mnt/usb

        注意:Linux默认是不支持NTFS文件系统的

    9. 用户登录查看

      9.1 w  [用户名]

        命令输出格式解释:

          USER: 登录的用户名

          TTY: 登录终端

          FROM: 从哪个IP地址登录

          LOGIN@: 登录时间

          IDLE: 用户闲置时间

          JCPU:

          PCPU: 当前进程所占用的时间

          WHAT: 当前正在运行的命令

      9.2 who  [用户名]

        命令输出格式解释:

          - 用户名

          - 登录终端

          - 登录时间(登录来源IP地址)

      9.3 last

        查询当前登录和过去登录的用户信息

        默认是读取 /var/log/wtmp 文件数据

        命令输出格式解释:

          用户名 |  登录终端 | 登录IP | 登录时间 | 退出时间(在线时间)

      9.4 lastlog

        查看所有用户的最后一次登录时间

        默认是读取 /var/log/lastlog 文件内容

        命令输出格式解释:

          用户名 | 登录终端 | 登录IP | 最后一次登录时间

    第二章  Shell基础

    一、 Shell概述

      shell命令行解释器

        内核(硬件)——> shell、应用程序  ——>  用户

      shell 还是一个功能强大的编程语言,易编译、易调试,灵活适用。

      shell分类:

        Bourne  Shell : sh、ksh、Bash(Linux使用的shell)、psh、zsh

        C  Shell: csh、tcsh

      查看Linux所支持的shell方法:

        vi  /etc/shells

    二、脚本执行方式

      1. echo  输出命令

        echo  [选项]   [输出内容]

        选项:

          -e: 支持反斜杠控制的字符转换

          控制字符:

            a : 输出警告声

            : 退格键,也就是向左删除键

             : 换行符

             : 回车键

             : 制表符,也就是tab键

            v: 垂直制表符

            hh: 八进制

            xhh:十六进制

      支持颜色输出: e

        echo  -e  "e[1;31m 江山如此多娇 e[0m"

        30m: 黑色  31m: 红色  32m: 绿色  33m: 黄色

        34m: 蓝色  35m: 洋红  36m: 青色  37m: 白色

      2. 第一个脚本

        编写一个脚本文件hello.sh,内容如下:

          #!/bin/bash

          # 第一个脚本

          echo  -e  "e[1;34m 江山如此多娇! e[0m"

        执行方式:

          2.1 chmod  755  hello.sh

              ./hello.sh

          2.2 bash hello.sh

    三、Bash的基本功能

      1. 命令别名与快捷键

        alias

          查看系统生效的别名

        alias   命令='别名'

          定义别名

          例如: alias  ls='ls  --color=never'

        别名永久生效:

          vi   ~/.bashrc

            写入环境变量配置文件

          source   ~/.bashrc

            配置文件直接生效

        删除别名:

          unalias   别名

        命令生效顺序

          a. 第一顺位执行用绝对或相对路径执行的命令

          b. 第二顺位执行别名

          c. 第三顺位是Bash的内部命令

          d. 第四顺位是按照$PATH环境变量定义的目录查找顺序的第一个命令

        常用快捷键:

          ctrl + c: 强制终止

          ctrl + l: 清屏

          ctrl + a: 光标移动到命令行首

          ctrl + e: 光标移动到命令行尾

          ctrl + u: 从光标所在位置删除到行首

          ctrl + z: 把命令放入后台

          ctrl + r: 在历史命令中搜索

      2. 历史命令

        history   [选项]   [历史命令保存文件]

        选项:

          -c: 清空历史命令

          -w: 把缓存中的历史命令写入历史命令保存文件  ~/.bash_history

        历史命令默认保存1000行,可以在环境变量配置文件 /etc/profile 中进行修改 HISTSIZE=1000 (修改该值)

        使用 "!n" 重复执行第n条命令

        使用 "!!" 重复执行上一条命令

        使用 "!字符串" 重复执行最后一条以该字符串开头的命令

      3. 输出重定向

        输入: 数据输入电脑

        输出: 电脑数据输出

        3.1 标准输入输出

    设备 设备文件名 文件描述符 类型
    键盘 /dev/stdin 0 标准输入
    显示器 /dev/sdtout 1 标准输出
    显示器 /dev/sdterr 2 标准错误输出

        3.2 输出重定向

    类型 符号 作用
    标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或者设备中
    标准输出重定向 命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或者设备中
    标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把错误命令的输出输出到指定的文件或者设备中
    标准错误输出重定向 错误命令 2>>文件 以追加的方式,把错误命令的输出输出到指定的文件或者设备中
    正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存 命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存 命令 &> 文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存 命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存 命令 >> 文件1  2>> 文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

      4. 输入重定向

        wc   [选项]   [文件名]

          选项:

            -c: 统计字节数

            -w: 统计单词数

            -l: 统计行数

        命令 < 文件

          把文件作为命令的输入

        命令 << 标识符

          标识符把标识符之间内容作为命令的输入

      5. 管道符

        多命令顺序执行:

    多命令执行符 格式 作用
    ; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
    && 命令1&&命令2 逻辑与;当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行
    || 命令1||命令2 逻辑或;当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行

        应用:

          ls  &&  echo  yes  ||  echo  no

            判断命令是否正确执行

        5.1 管道符

          命令1 | 命令2

            命令1的正确输出作为命令2的操作对象

          应用:

            ls   -l  /etc  | more

            netstat  -an | grep  ESTABLISHED | wc  -c

      6. 通配符

    通配符 作用
    ? 匹配一个任意字符
    * 匹配0个或者任意多个字符,也就是可以匹配任何内容
    [] 匹配中括号中任意一个字符
    [-] 匹配中括号中任意一个字符,- 代表一个范围
    [^] 逻辑非,表示匹配不是中括号内的一个字符。e.g.: [^0-9]代表匹配一个不是数字的字符

        Bash中的特殊符号

    '' 单引号,被单引号包含所有特殊符号都不起作用
    "" 双引号,在双引号中特殊符号都没有特殊含义,但是 $ ` 三个是例外,表示“调用变量的值”、“引用命令”、“转义符”的特殊含义
    `` 反引号,系统命令,在Bash中会先执行它。和 $() 作用是一样的,不过推荐使用 $() ,因为反引号非常容易看错
    $() 和反引号作用一样,用来引用系统命令
    # 在shell脚本中,#开头的行是注释
    $ 用于调用变量的值
    转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符
  • 相关阅读:
    springboot Quartz 定时任务工具类
    java 发邮件 代码
    spring boot 整合 shiro 权限框架
    java 读取xml
    flowable 报错 Waiting for changelog lock....
    微服务 springcloud Alibaba 阿里组件 项目源码
    Java 读取汉字拼音
    syslog how to
    c++ 字符串总结
    aptget 总结
  • 原文地址:https://www.cnblogs.com/aston/p/7923039.html
Copyright © 2020-2023  润新知