Linux系统运维之:初窥Linux Shell

Shell命令详解与Linux目录结构(重点)

  • Linux精髓在于命令行

  • Linux命令的通用命令格式

    命令字 [选项] [参数]
    • 选项:用于调节命令的具体功能

      • 分类:
        • “-“ 引导短格式选项(单个字符) EX: “-l”
        • “–” 引导长格式选项(多个字符) EX: “–color”
        • 多个短格式选项可以写在一起 EX: -a -l -z -x –> -alzx
    • 参数:命令操作的对象,有文件、目录等

      EX: ls -l /home

      Linux目录结构

    • boot:存放系统引导文件和内核文件

    • bin: 存放可执行文件(二进制文件)(ls,cat,mkdir)

    • sbin:root用户执行命令

    • home:普通用户家目录

    • root:root用户家目录

    • dev:存放所有设备文件(外设)

      如:/dev/md*  /dev/sd* /dev/hd* .......
    • etc:存放所有配置文件(服务)

    • lib/lib64:动态链接库文件(共享库文件) lib64目录普通用户不可操作,类似于.dll

    • media:媒体库文件

    • opt:文件安装目录,安装软件就在opt目录下

    • mnt:挂载点目录

      mount * *
    • var:存放一些需要改变数据的文件,如日志、某些大文件的溢出区

    • proc:虚拟文件系统目录,放的是内存的一个映射

      • 可查看一些信息和设备运行状态

        # cat /proc/cpuinfo         //查看cpu运行状态
        # cat /proc/meminfo         //查看内存运行状态
        # cat /proc/version         //查看系统版本
        
        [root@love ~]# uname -m       //查看cpu架构
          x86_64
        [root@love ~]# uname -r       //查看内核版本
          3.10.0-862.11.6.el7.x86_64
        [root@love ~]# uname -a       //查看所有
          Linux love 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    • usr:最大的目录,只有用到的目录或者文件都在这

      /usr/sbin
      /usr/doclinux
    • tmp:共享文件夹,临时目录

    • lost+found:非正常关机时才会有,平时为空,保存意外掉电的内存中数据

    • 注:Linux中,以.开头的文件为隐藏文件

Linux常用命令

- 目录操作命令
    - ls, cd, pwd, mkdir, rmdir  
- 文件操作命令
    - touch, cp, mv, rm, find
- 文件内容操作命令
    - cat, less, head, tail, grep 
- 归档及压缩命令
    - tar

Linux中获得命令帮助

  • help:用于内部命令查找,如 cd, kill….共56条命令

    # help cd 
  • –help:适用于大多数外部命令,如 ls

    ls --help
  • 使用man手册进行命令查看(man:命令阅读手册)

    [root@love]# man 命令字
      上下键滚动文本
      Page down & Page Up上下翻页
      空格翻页
      /查找内容
  • info 也可进行命令帮助查找(使用与man接近)

  • pinfo 命令名称 ——以浏览器形式查看详细的GUN信息

  • /usr/share/doc #所有已安装软件的说明文件

    # firefox file:///usr/share/doc

Linux命令详解

目录操作

  • cd命令:切换工作目录

    # cd [目录位置]
    
      绝对路径: cd /home/student
      相对路径: 
                cd .       //当前路径
                cd ..     //返回上级目录
                cd -      //回到上一次工作所在目录
                cd ../../     //回到上一级的上一级目录
                cd [~]      //返回家目录
                cd ~/Document
  • pwd:查看当前所在的工作目录(告诉你自己在哪)

  • ls:列出当前目录下的文件或目录

    • 格式:# ls [选项] [目录或文件名]
    • 选项:
      • -l 以长格式显示
      • -a 显示所有文件目录信息,包括隐藏文件
      • -d 显示目录本身的属性
      • -h 显示详细信息,变换了统计单位
      • –color 以颜色区分不同类型的文件
      • 注: ll == ls -l
  • mkdir:创建一个新目录

    格式:# mkdir [选项-p] [路径] 目录名
    
    mkdir -p: 递归创建多级目录
    [root@love ~]# mkdir /test/adir/bdir/cdir/ddir/edir -p
  • rmdir: 删除一个空目录

    rmdir -p a/b/c/       //递归删除一个目录

文件操作命令

  • touch:创建一个空文件,更新文件时间标记

    格式:# touch filename

    注意:在Linux中,不以后缀名区分文件

  • echo:打印某个东西,说什么就是什么

    [root@love]# echo "hello world"
    hello world
    
    # 重定向写
    echo "hello world" > a.txt

    实验:在A目录里面,创建一个a.txt文件,写入几句话,然后在当前目录下继续创建一个a.txt文件,文件的内容还在吗

  • cp: 复制文件或目录

    格式:cp [选项] 源文件/源目录  目标文件/目标目录
    
    [root@love]# pwd
    /root/bb
    
    eg. cp /root/aa/a.txt /root/bb/
        cp ../aa/a.txt .
    • 选项
      • -r:递归复制整个目录树
  • rm 删除文件或目录

    格式:    rm [选项] 文件或目录
    • 选项

      • -r 递归删除整个目录树
      • -f 不进行确认,强制删除
      • -rf 使用万分谨慎
    • 从删库到跑路(心有多大,路就有多远)

      rm -rf /
  • mv:移动文件或者目录

    格式:mv [选项] 源文件/目录   目标文件/目录
    • 若移动目标位置与源位置相同(当前下操作),则此操作相当于重命名(改名)

      eg.   mv text text-1
  • find:用于查找文件或者目录

    • 格式: find [查找范围] [查找条件]

    • 查找条件:

      • -name: 按文件名查找

        # find /root -name *ks*
      • -type: 按文件类型查找

        • f 普通文件

        • d 目录

        • b 块设备文件

        • c 字符设备文件

        • -user: 按文件属主查找

          # find / -user student*  -type f -name text
      • size:按文件大小进行查找

        # find /var/ -size +10k -type f   //查找/var目录下大于10k的普通文件

        实验:在/var目录下查找大于100k,小于110k的文件

      • a:逻辑与

      • o:逻辑或

      • !:逻辑非

        # find / ! -name temp -type f
        # find / -name anaconda-ks.cfg -o -name initial-setup-ks.cfg

文件内容操作命令

  • cat:文件内容查看,显示出文件的全部内容

    格式: cat filename
  • less(more):全屏方式分页显示文件内容,more与less用法一致,只多了一个百分比显示

    格式:less/more  filename

    按回车键逐行滚动,按空格键向下翻页,按b键向上翻页,按q键退出,按/后输入内容进行查找

  • head(头部):显示文件头部若干行,默认10行

    格式: head[选项] filename
    
    eg.  head -n 5 filename   //查看文件前5行
  • tail(尾部):显示文件尾部若干行,默认10行

    格式: tail[选项] filename
    
    eg.  tail -n 5 filename //查看文件后5行

    注:-n后的 + - 代表意思不同

  • wc:统计文件内容的…,默认情况下统计结果为:行数 词数 字节数

    格式:wc [选项] filename
    • 选项:

      • -w 统计字数 一个字被定义为有空白、跳格、换行为分隔的字符串

      • -l 行数

      • -c 字节数

      • -m 字符数 不能与-c一起使用

      • -L 打印最长行的长度

      • man wc

      • man –help

      • man -version

        eg.   wc -lcwL initial-setup-ks.cfg
  • grep:在文件中查找并显示包含制定字符串的行

    格式:    grep [选项] 查找条件 目标文件
    
    eg.   grep 'boot' initial-setup-ks.cfg
    • 选项:

      • -c:显示匹配行的数量

      • -i:查找时不区分大小写

      • -v:反转查找

        [root@love ~]# grep 'boot' initial-setup-ks.cfg -c -v
          58
        [root@love ~]# grep 'boot' initial-setup-ks.cfg -c
          7
    • 查找条件设置:

      • 1.查找条件用引号引起来

      • 2.”^XXXX”表示以XXXX开头

      • 4.”XXXX$”表示以XXXX结尾

      • 5.”^#”表示匹配空行

        [root@love ~]# grep -c '^$' initial-setup-ks.cfg
          6
        [root@love ~]# grep -cv '^$' initial-setup-ks.cfg
          59
        [root@love ~]# grep '^#' initial-setup-ks.cfg
        
        [root@love ~]# grep 'ation$' initial-setup-ks.cfg

归档及压缩命令

  • tar:压缩与解压缩 制作归档文件和释放归档文件,包括.gz和.bz2两种格式

    格式: 
    
      - 制作归档文件:
          tar [选项] [目录] 归档文件名 源文件或者目录
    
      - 释放归档文件:
          tar [选项] 归档文件 [-c目标文件]
    
    eg.
    
      - 压缩:
          tar -czvf [存放路径] 归档文件名.tar.gz 源文件或者目录
          tar -cjvf [存放路径] 归档文件名.tar.bz2 源文件或者目录
    
          -c 压缩     -z压缩为.gz格式     -vf显示详细信息
    
      - 解压缩
          tar -xzvf [存放路径] 归档文件名.tar.gz [-c 解压目录]
          tar -xzvf [存放路径] 归档文件名.tar.bz2 [-c 解压目录]
    
          -x 解压
          若不加"-c 路径"则解压到当前目录

    别名

  • alias:别名:为使用频率较高的命令设置简短的调用名称

    • 查看当前用户所有别名

      • 格式:alias [别名]
    • 设置别名

      • 格式:alias 别名=”实际要执行的命令”

        eg.   alis htpc="vi /etc/httpd/config/httpd.config"
    • 取消别名

      • 格式:
        • unalias aa
        • unalias -a //取消所有别名
    • 以上别名只在当前Bash环境中生效,若想永久生效,则:

      • 1.将别名设置在~/.bashrc文件中

补充命令:

  • ln –link 链接
    • 链接有两种:
      • 软链接 ln -s 源文件 目标文件
      • 硬链接 ln 源文件 目标文件
        • 硬链接相当于cp -p + 同步更新

Shell 暂告一段落

重定向与管道符

重定向

  • 作用:将命令的执行结果输出到制定的文件中,而不是直接显示在屏幕上

    • 0:标准输入 键盘 stdin 仅读取

    • 1:标准输出 终端 stdout 仅写入

    • 2:标准错误 终端 stderr 仅写入

    • 3+ filename 其他文件 读/写

    • 在Linux中构建了一个带有编号标记的通道(文件描述符)的进程结构来管理打开文件 通过进程连接到文件,进行文件数据的操作

类型 操作符 用途 示例
重定向标准输出 [1]> 将命令的执行结果输出到指定文件中,而不是显示在屏幕上,覆盖写 history > history.txt \\ find / -user yuxiang >history.txt
[1]>> 标准输出,追加写
重定向标准错误 2> 将标准错误信息保存到指定文件中,进行覆盖写 find / -user yuxiang 2> errors.txt
2>> 将标准错误信息保存到指定文件中,进行追加写
重定向标准输出和标准错误 &> or &>> 将标准输出和标准错误输出全部保存到一个文件中 find / -user yuxiang 2>> resault.txt
*特殊 > > or >> >> or >> > 将输出和错误分别保存到文件中 find / -user yuxiang > true.txt 2> false.txt \\ find / -user yuxiang > true.txt 2>> false.txt

管道

  • 即传送,操作符为 | ,就是将管道前面输出的结果作为后面语句的条件执行

    语句1 | 语句2 ...
    eg. # ls -l /usr/bin/ | more
        # find / -name root | find -size +10k | grep "pings"
    
    注:管道符无上限