Linux要点整理

一、虚拟机网络连接模式

  1. 桥接模式(Bridged):虚拟机与物理主机处于同一个网段,占用实际物理IP,可联网

    将物理主机的网卡与虚拟机的虚拟网卡利用虚拟网桥进行通信,相当于将物理主机虚拟为交换机,所有虚拟机和物理主机本身均连接到该交换机的某一接口,虚拟机IP地址与物理主机IP处于同一个网段,网关与DNS与物理主机一致,即可联网

  2. 网络地址转换模式(NAT):自定义网段,可自动通过物理主机实际网卡代理联网,不占用实际物理IP

    物理主机虚拟网卡(可自定义网段)与虚拟机虚拟网卡连接达到通讯目的,物理主机虚拟网卡类似于虚拟机网关形式出现,同时虚拟机的虚拟网卡与物理主机的实际网卡相互连,通过实际网卡代理达到联网目的

  3. 仅主机模式(Host-Only):自定义网段,不可联网,不占用实际物理IP

    物理主机虚拟网卡(可自定义网段)与虚拟机虚拟网卡连接达到通讯目的,物理主机虚拟网卡类似于虚拟机网关形式出现

二、Linux介绍

1、CentOS下载地址:

网易镜像:http://mirrors.163.com/centos/6/isos/

搜狐镜像:http://mirrors.sohu.com/centos/6/isos

2、目录结构:

在Linux中,一切皆是文件

Linux目录结构顶层是/,根目录,子文件夹如下

bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。

dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。

etc:该目录主要存储一些配置文件。

home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的user/用户目录。

proc:process,表示进程,该目录中存储的是linux运行时候的进程。

root:该目录是root用户自己的家目录。

sbin:全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。

tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。

usr:存放的是用户自己安装的软件。类似于windows下的program files。

var:存放的程序/系统的日志文件的目录。

mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。

3、编辑器:vi 或 vim

  • 三种模式切换:

    vi默认进入命令模式,命令模式“ ! ”进入编辑模式,Esc返回命令模式

    命令模式输入“ : ”进入底行模式,Esc返回命令模式,或wq、q、q!退出(拓展 w! 强制保存、wq! 强制保存退出)

  • 快捷键

    光标移动 增删改 查找 文本设置 退出
    ^ 行首: dd 删除/剪切当前行 u 撤销 :nohl 取消高亮 :q 退出
    $ 行尾: ndd 删除/剪切n行(含当前行) Ctrl+r 恢复 :set nu 显示行号 :w 保存
    gg 文本开头: yy 复制当前行 /key 向后查找 :set nonu 不显示行号 :q! 强制退出
    G 文本结尾: nyy 复制n行(含当前行) ?key 向前查找 :syntax on 显示颜色 :w! 强制保存
    Ctrl + f 向前翻页: p 粘贴到下一行 n 下一个高亮 :syntax off 不显示颜色 :wq 保存退出
    Ctrl + b 向后翻页: Ctrl+v 可视化复制 :wq! 强制保存退出
    nG 快速到指定行 D 删除行为空行
  • 补充

    异常退出:当使用vi编辑,异常退出时,会产生一个隐藏文件,".name.swp",可能会导致文件无法再次编辑,此时删除该隐藏文件即可

    vi配置文件:全局配置文件/etc/vimrc;个人配置文件~/.vimrc,可手动创建,默认先以个人配置为准,不存在则以全局为准,建议使用个人配置文件

  • 关机(慎重使用)

    showdown:关机, shutdown -h now:立即关机,shutdown -h 2:两分钟后关机, shutdown -r now:立即重启

    reboot:重启, syn:手动将内存中的数据保存到磁盘

    exit:退出当前用户

三、用户及组管理

1、管理文件说明

  • 用户管理文件:/etc/passwd

    #用户名:密码占位符:用户ID:用户组ID:注释性描述:主目录:解释器
    root:x:0:0:root:/root:/bin/bash
    

    说明:用户默认主目录为/home/name,默认归属组为name,默认解释器为/bin/bash

  • 组管理文件:/etc/group

    #组名:密码占位符:组ID:组成员
    docker:x:1000:zk
    
  • 密码管理文件:/etc/shadow

    #用户名:密码:上次改口令时间:最小改口令间隔:最大改口令间隔:口令到期前几天预警:口令到期后几天禁用:口令到期日期
    zk:!!:18479:0:99999:7:::
    

2、用户管理

  • 新增用户:useradd [options] LOGIN

    #不指定新增,设置密码
    useradd docker
    passwd docker
    #指定新增,设置密码
    useradd -u 1001 -g 1001 -G docker -d /home/zookeeper -s /bin/bash zk
    echo zk |passwd zk --stdin
    #或
    echo zk |passwd zk --stdin  #&>/dev/null
    
    • 不指定新增:

      添加docker用户,默认主目录/home/docker,默认归属组docker,默认解释器为/bin/bash

    • 指定新增:

      添加zk用户,指定用户ID为1001,归属组为1001,附加组为docker,主目录为/home/zookeeper,解释器为/bin/bash

      说明:指定的归属组和附加组可以是组ID也可以是组名称,但该组必须存在,默认解释器就是/bin/bash,也可以不写

    • 对应/etc/passwd文件:

      docker:x:1000:1000::/home/docker:/bin/bash
      zk:x:1001:1001::/home/zookeeper:/bin/bash
      
    • 对应/etc/group文件:

      docker:x:1000:zk
      zookeeper:x:1001:
      

      说明:新增用户时docker组和zookeeper组就已存在,”:zk“是将"-G docker"指定后的结果

  • 修改用户:usermod [options] LOGIN

    # 修改用户组
    usermod -g zookeeper zk
    # 修改用户名
    usermod -l newname zk
    

    选项与参数要求跟useradd指令类似,参考useradd即可

  • 删除用户:userdel [options] LOGIN

    userdel zk
    userdel -r zk
    

    选项-r意为删除用户同时删除用户主目录(remove home directory and mail spool)

  • 切换用户与查看用户

    #切换到zk用户,不变更工作环境
    su zk
    #切换到zk,变更工作环境
    su - zk
    su -l zk
    #查看用户
    id zk
    

3、组管理

  • 新增组:groupadd [options] GROUP

    # 不指定新增
    groupadd docker
    # 指定组ID新增
    groupadd -g 1001 zookeeper
    
  • 修改组:groupmod [options] GROUP

    # 修改组ID
    groupmod -g 1001 zookeeper
    # 修改组名
    groupmod -n NEW_GROUP zookeeper
    
  • 删除组:groupdel [options] GROUP

    groupdel zookeeper
    

4、权限管理

  • 权限概述

    依次为:文件类型、文件属主权限、文件属组权限、其他用户权限

    • 文件类型:- 代表文件、d 代表目录、l 代表链接、c 代表字符型设备、 b 代表块设备、n 代表网络设备
    • 权限:r可读、w可写、x可执行,对应数值为4、2、1,-表示反义
    [root@localhost docker]# ll
    total 16
    -rw-rw-r--. 1 docker docker  338 Aug  5 18:01 demo.txt
    drwxr-xr-x. 2 root   root      6 Aug 18 17:15 dir
    -rwxr-xr-x. 1 docker docker  104 Aug  5 18:10 exer.sh
    drwxrwxr-x. 2 docker docker   97 Aug 18 17:21 new
    drwxrwxr-x. 2 docker docker 4096 Aug 18 17:21 old
    -rwxr-xr-x. 1 docker docker   68 Aug  5 17:59 whileExec.sh
    
  • 更改文件权限

    chmod [OPTION]... MODE[,MODE]... FILE...

    • chmod NNN fileName

      [root@localhost docker]# chmod 755 demo.txt
      
    • chmod [ugoa]*([-+=]([rwxXst] fileName

      [root@localhost docker]# chmod ugo+x demo.txt
      
  • 更改文件属主

    chown U:G fileName

    [root@localhost docker]# chown zk:zookeeper demo.txt
    

四、常用指令

1、浏览文件系统

  • pwd:查看当前路径

  • cd:切换到指定目录

    [root@localhost home]# cd
    [root@localhost ~]# cd ~
    [root@localhost ~]# cd /home/
    [root@localhost home]# cd ./
    [root@localhost home]# cd ../etc/sysconfig/
    [root@localhost sysconfig]# cd network-scripts/
    [root@localhost network-scripts]# pwd
    /etc/sysconfig/network-scripts
    

2、文件和目录列表

  • ls:显示指定目录下的所有文件,

    ​ 默认是当前目录。指定目录的时候支持通配符的方式

    [root@localhost docker]# ls
    demo.txt  exer.sh  new  old  whileExec.sh
    [root@localhost docker]# ls -a
    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  demo.txt  exer.sh  new  old  whileExec.sh
    [root@localhost docker]# ls
    demo.txt  exer.sh  new  old  whileExec.sh
    [root@localhost docker]# ll
    total 16
    -rw-rw-r--. 1 docker docker  338 Aug  5 18:01 demo.txt
    -rwxr-xr-x. 1 docker docker  104 Aug  5 18:10 exer.sh
    drwxrwxr-x. 2 docker docker   97 Aug 10 10:35 new
    drwxrwxr-x. 2 docker docker 4096 Aug  5 18:10 old
    -rwxr-xr-x. 1 docker docker   68 Aug  5 17:59 whileExec.sh
    [root@localhost docker]# ll -a
    total 32
    drwx------. 4 docker docker  156 Aug 10 10:35 .
    drwxr-xr-x. 4 root   root     37 Aug  5 17:07 ..
    -rw-------. 1 docker docker 1254 Aug  6 18:55 .bash_history
    -rw-r--r--. 1 docker docker   18 Aug  3  2017 .bash_logout
    -rw-r--r--. 1 docker docker  193 Aug  3  2017 .bash_profile
    -rw-r--r--. 1 docker docker  231 Aug  3  2017 .bashrc
    -rw-rw-r--. 1 docker docker  338 Aug  5 18:01 demo.txt
    -rwxr-xr-x. 1 docker docker  104 Aug  5 18:10 exer.sh
    drwxrwxr-x. 2 docker docker   97 Aug 10 10:35 new
    drwxrwxr-x. 2 docker docker 4096 Aug  5 18:10 old
    -rwxr-xr-x. 1 docker docker   68 Aug  5 17:59 whileExec.sh
    [root@localhost docker]# ls -R
    .:
    demo.txt  exer.sh  new  old  whileExec.sh
    
    ./new:
    cust-view.txt  easyreport-web.txt  inst-time.txt  sms-service.txt
    
    ./old:
    acct-service.txt  dump-order-service.txt
    

3、处理文件

  • touch:创建空文件

    [root@localhost data]# touch a.txt
    [root@localhost data]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug 10 10:41 a.txt
    
  • cp:复制文件到指定路径

    -R:递归复制,

    [root@localhost data]# cp /etc/sysconfig/network-scripts/ifcfg-enp0s8 .
    [root@localhost data]# ls
    a.txt  ifcfg-enp0s8
    
    # 递归复制整个目录
    [root@localhost docker]# cp -R new/ data/
    [root@localhost docker]# cd data/
    [root@localhost data]# ll
    total 0
    drwxr-xr-x. 2 root root 97 Aug 10 10:57 new
    
    # 递归复制整个目录下的文件
    [root@localhost docker]# cp -R new/* data/
    [root@localhost docker]# cd data/
    [root@localhost data]# ls
    cust-view.txt  easyreport-web.txt  inst-time.txt  sms-service.txt
    
    
  • mv:移动或重命名文件

    [root@localhost data]# mv ifcfg-enp0s8 /home/
    [root@localhost data]# cd /home/
    [root@localhost home]# ls
    docker  ifcfg-enp0s8  zookeeper
    [root@localhost home]# mv ifcfg-enp0s8 ifcfg-8
    [root@localhost home]# ls
    docker  ifcfg-8  zookeeper
    
  • rm:删除文件

    -f:不带提示删除

    -r:递归删除

    [root@localhost home]# ls
    docker  ifcfg-8  zookeeper
    [root@localhost home]# 
    [root@localhost home]# rf -f ifcfg-8 
    -bash: rf: command not found
    [root@localhost home]# rm -f ifcfg-8 
    [root@localhost home]# ls
    docker  zookeeper
    
  • ln:新建软链接目录(即快捷方式)

    [root@localhost home]# ln -s /root ln_name
    [root@localhost home]# ls
    docker  ln_name  zookeeper
    [root@localhost home]# ll
    total 0
    drwx------. 5 docker docker    168 Aug 10 10:40 docker
    lrwxrwxrwx. 1 root   root        5 Aug 10 11:03 ln_name -> /root
    drwx------. 2 zk     zookeeper  83 Aug  5 17:17 zookeeper
    [root@localhost home]# cd ln_name/
    [root@localhost ln_name]# pwd
    /home/ln_name
    
    # 删除软链接(注意一定不能是“ln_name/”,这种方式会删除原始目录)
    [root@localhost home]# rm -f ln_name
    [root@localhost home]# ls
    docker  zookeeper
    

4、处理目录

  • mkdir:创建目录

    [root@localhost docker]# mkdir data
    [root@localhost docker]# ls
    data  demo.txt  exer.sh  new  old  whileExec.sh
    
    # 创建多级目录,上级目录不存在自动创建
    [root@localhost docker]# mkdir -p data/down/load
    [root@localhost docker]# cd data/down/load/
    [root@localhost load]# pwd
    /home/docker/data/down/load
    
  • rmdir:删除空目录

    [root@localhost dats]# rmdir load
    

    当目录非空时,需要使用rm -rf 递归删除

5、查看文件内容

  • file:查看文件编码格式

    [root@localhost ~]# file .bash_profile 
    .bash_profile: ASCII text
    
  • cat:查看文件内容

    -n:显示行号。 -T:将所有制表符替换成 ^

    [root@localhost ~]# cat .bash_profile
    
    # 带行号查看
    [root@localhost ~]# cat -nT .bash_profile
    
  • more:分页查看文件内容

    [root@localhost ~]# more /etc/bashrc
    

    操作快捷键: z 下一页; b 上一页; q 退出;

  • less:分页查看文件内容

    是more指定的扩展(opposite of more)

    [root@localhost ~]# more /etc/bashrc
    

    操作快捷键: z 下一页; b 上一页; q 退出;

  • head:查看文件前N行内容

    -n:指定行数

    # 默认显示前10行
    [root@localhost ~]# head /etc/bashrc
    
    # 查看前5行
    [root@localhost ~]# head -n 5 /etc/bashrc
    [root@localhost ~]# head -5 /etc/bashrc
    
  • tail:查看文件后N行内容

    -n:指定行数

    -f:实时查看

    # 默认查看后10行 与 实时查看后10行
    [root@localhost ~]# tail /etc/bashrc
    [root@localhost ~]# tail -f /etc/bashrc
    
    # 指定查看后N行
    [root@localhost ~]# tail -n 8 /etc/bashrc
    [root@localhost ~]# tail -8 /etc/bashrc
    
    # 指定实时查看后N行
    [root@localhost ~]# tail -f -n 20 /etc/bashrc
    

6、进程管理

  • ps:查看用户进程

    UID:启动进程的用户ID

    PID:进程ID

    PPID:父进程ID

    C:进程生命周期中的CPU利用率

    STIME:进程启动时的系统时间

    TTY:进程所运行的终端

    TIME:运行进程需要的累计CPU时间

    CMD:启动的程序名称

    • 默认展示

      [root@localhost ~]# ps 
        PID TTY          TIME CMD
        996 pts/0    00:00:00 bash
       1455 pts/0    00:00:00 ps
      
    • 带参展示

      -e:查看所有进程

      -f:扩展输出

      -l:长格式输出(显示更多信息)

      --forest:层级信息展示

      [root@localhost ~]# ps -ef
      UID        PID  PPID  C STIME TTY          TIME CMD
      root         2     0  0 09:58 ?        00:00:00 [kthreadd]
      root         3     2  0 09:58 ?        00:00:00 [ksoftirqd/0]
      root         5     2  0 09:58 ?        00:00:00 [kworker/0:0H]
      root       985     1  0 09:58 ?        00:00:00 /usr/libexec/postfix/master -w
      postfix    987   985  0 09:58 ?        00:00:00 qmgr -l -t unix -u
      

  • top:实时查看进程资源

    top:当前时间、系统的运行时间、登录的用户数、系统的平均负载(1分钟、5分钟、15分钟。值越大负载越高)

    Tasks:进程总数量、运行进程、休眠进程、停止进程、僵化进程(进程已完成,但父进程没有响应)

    %Cpu(s):CPU占用详情:用户进程(us)、系统进程(sy)、

    KiB Mem:物理内存占用:内存大小、空闲内存、已使用内存

    KiB Swap:虚拟内存占用:内存大小、空闲内存、已使用内存

    [root@localhost ~]# top
    top - 15:15:26 up  5:16,  1 user,  load average: 0.00, 0.01, 0.03
    Tasks:  82 total,   1 running,  81 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1016232 total,   808096 free,    82816 used,   125320 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used.   785140 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1300 root      20   0       0      0      0 S  0.3  0.0   0:10.30 kworker/0:2
        1 root      20   0  128164   6808   4044 S  0.0  0.7   0:00.84 systemd
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.08 ksoftirqd/0
        5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
        6 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kworker/u2:0
        7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
        8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
        9 root      20   0       0      0      0 S  0.0  0.0   0:00.24 rcu_sched
       10 root      rt   0       0      0      0 S  0.0  0.0   0:00.16 watchdog/0
       12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
       13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
       14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd
       15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
       16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd
       17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
    
  • kill:停止进程(格式:kill PID)

    -9:强制结束

    [root@localhost ~]# kill 1476
    [root@localhost ~]# kill -9 1476
    

7、磁盘管理

  • mount:挂载磁盘

    Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下,就叫挂载

    • mount:查看挂载信息

      设备文件名 on 挂载到虚拟目录的挂载点 type 文件系统类型 (访问状态)

      [root@localhost ~]# mount
      devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=497244k,nr_inodes=124311,mode=755)
      tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
      /dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
      /dev/sda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
      
    • mount -t type device directory:手动挂载

      mount -t 文件系统类型 设备名称 虚拟目录挂载点

      [root@localhost ~]# mount -t xfs /dev/sda2 /boot
      mount: /dev/sda2 is already mounted or /boot busy
             /dev/sda2 is already mounted on /boot
      [root@localhost ~]#
      
  • umount:卸载磁盘

    Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。

    • umount [directory | device ] :卸载设备

      umount 挂载点 或者 设备名称

      [root@localhost new]# umount /home/docker
      
  • df:查看磁盘空间

    设备文件位置 存储空间 已使用空间 可用空间 使用占比 挂载点

    -h:以较高可读性展示

    [root@localhost new]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   12G  897M   12G   8% /
    devtmpfs                 486M     0  486M   0% /dev
    tmpfs                    497M     0  497M   0% /dev/shm
    tmpfs                    497M  6.6M  490M   2% /run
    tmpfs                    497M     0  497M   0% /sys/fs/cgroup
    /dev/sda2               1014M  125M  890M  13% /boot
    tmpfs                    100M     0  100M   0% /run/user/0
    
  • du:查看指定目录大小

    -c:显示total,-s:显示每个输出参数的总计,-h:以较高可读性展示

    [root@localhost boot]# du -csh /boot/
    92M	/boot/
    92M	total
    
    [root@localhost boot]# du -csh ./*
    
    [root@localhost boot]# du -csh /boot/*
    140K	./config-3.10.0-693.el7.x86_64
    0	./efi
    4.0K	./grub
    8.0M	./grub2
    49M	./initramfs-0-rescue-a674af0bf23e46d1a0f156803aed8c55.img
    20M	./initramfs-3.10.0-693.el7.x86_64.img
    600K	./initrd-plymouth.img
    288K	./symvers-3.10.0-693.el7.x86_64.gz
    3.1M	./System.map-3.10.0-693.el7.x86_64
    5.7M	./vmlinuz-0-rescue-a674af0bf23e46d1a0f156803aed8c55
    5.7M	./vmlinuz-3.10.0-693.el7.x86_64
    92M	total
    

8、处理数据文件

  • sort:排序数据

    -n:按数值排序

    -M:按月份排序(英文简写格式)

    -t:指定分割符

    -k:指定排序的字段

    -r:反序排序(降序)

    [root@localhost boot]# sort /etc/passwd
    [root@localhost boot]# sort -r /etc/passwd
    
    # 按UID对/etc/passwd排序,即以':'进行分割,按第三段进行排序
    [root@localhost boot]# sort -t ':' -k 3 -n /etc/passwd
    
    # 查看当前目录下文件大小,降序输出
    [root@localhost boot]# du -sh *|sort -nr
    
  • grep:搜索数据

    grep [options] pattern [file]:搜索 [选项] 关键词 [文件名]

    -e:匹配多个关键词

    -n:显示行号

    -c:统计匹配行数总数

    [root@localhost boot]# grep root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    # 匹配多个关键词
    [root@localhost boot]# grep -e root -e docker /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    docker:x:1000:1000::/home/docker:/bin/bash
    
    # 显示行号,统计数量
    [root@localhost boot]# grep -n root /etc/passwd
    [root@localhost boot]# grep -c root /etc/passwd
    

9、压缩解压

  • tar:压缩解压,处理 .tar、.tgz .gz 后缀的压缩包

    -v:在处理文件时,显示文件

    -f:输出结果到文件或设备file

    -t:列出压缩文件内容

    • 解压:tar -x filename.tar [-C directory]

      -x:解压,提取

      -C:指定路径

      [root@localhost boot]# tar -xvf ci-package.tar
      [root@localhost boot]# tar -zxvf ci-package.tar.gz -C /data/aici
      # 只输出不解压
      
      
    • 压缩:tar -c filename.tar directory

      -c:压缩

      [root@localhost boot]# tar -cvf rule-check-service.tar rule-check-service/
      [root@localhost boot]# tar -zcvf /home/rule-check-service.tar.gz rule-check-service/
      
  • gzip:压缩文件,不支持打包,默认不保存源文件

    -c:保留源文件,将压缩文件存放到指定目录,不支持批量、通配符

    -r:递归压缩指定目录下文件,但不将目录打包

    # 默认压缩,不保留源文件,将当前目录下的所有txt压缩成txt.gz
    [root@localhost home]# gzip *.txt
    # 保留源文件,将压缩文件存放到指定目录,不支持批量、通配符
    [root@localhost root]# gzip -c demo.txt > /home/demo.txt.gz
    # 递归压缩指定目录下文件(含子目录),但不将目录打包,不保留源文件
    [root@localhost home]# gzip -r docker/
    
  • gunzip:解压文件,与gzip对应,参照gzip即可

五、环境变量

如果要使用环境变量,加$,如果要操作环境变量,不加$(仅printenv指令不适用该规则)。

1、局部变量

  • 局部变量(用户自定义变量)名尽量小写,避免与系统全局变量冲突

  • 使用“=”为变量赋值,当变量值含有空格等特殊字符时,要加引号

  • 局部变量仅在当前shell有效,在其子shell或其他shell中均无效

[root@localhost ~]# echo $my_var

[root@localhost ~]# my_var=hello
[root@localhost ~]# echo $my_var
hello
[root@localhost ~]# my_str='hello John'
[root@localhost ~]# echo $my_str
hello John

2、全局变量

  • 将已创建的局部变量,使用export var_name命令导出即可成为全局变量
  • 全局变量在其子shell中也可使用,若子shell对该变量重新赋值,仅在该子shell有效,对父shell无影响
[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# export my_str
[root@localhost ~]# echo $my_str
hello John
    [root@localhost ~]# bash
    [root@localhost ~]# echo $my_str
    hello John
    [root@localhost ~]# my_str='sub John'
    [root@localhost ~]# echo $my_str
    sub John
    [root@localhost ~]# exit
	exit
[root@localhost ~]# echo $my_str
hello John

3、删除环境变量

unset:使用unset var_name指令来删除环境变量

[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# unset my_str
[root@localhost ~]# echo $my_str

[root@localhost ~]# 

4、PATH环境变量

  • PATH环境变量的作用是定义了命令和程序被执行时查找的目录
# 默认的PATH环境变量的目录如下
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • 新增PATH环境变量(仅当前登录有效方式),以" : "与原有的隔开
# 新增PATH环境变量,仅当前登录有效方式
[root@localhost ~]# PATH=$PATH:/home/zookeeper
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/zookeeper

5、启动shell于启动文件

在你登入Linux系统启动一个bash shell时,默认情况下bash会在几个文件中查找命令。这些文件叫作启动文件或环境文件。bash检查的启动文件取决于你启动bash shell的方式。启动bash shell有3种方式

  • 登录时作为默认登录shell,会执行/etc/profile,$HOME/.bash_profile启动文件
  • 作为非登录shell的交互式shell,会执行$HOME/.bashrc启动文件
  • 作为运行脚本的非交互shell,会执行BASH_ENV环境变量中定义的启动文件

启动文件,永久设置环境变量,可以通过设置这三个启动文件来实现,注意区别

  • /etc/profile:系统环境启动文件(System wide environment and startup programs),对所有用户生效。用户登录时,/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件
  • $HOME/.bash_profile:对当前用户生效,用户登录时.bash_profile会检查是否存在.bashrc文件,存在即先执行.bashrc文件
  • $HOME/.bashrc:该文件使用场景一般是被其他文件调用,作用:为当前用户定制命令别名、执行系统/etc/bashrc文件中的命令

6、查看环境变量

  • env:或printenv,查看所有全局变量

    $:以$NAME的格式,使用具体全局变量

    # 查看所有全局变量,以下仅粘贴部分
    [root@localhost ~]# env
    HOSTNAME=localhost.localdomain
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_CLIENT=137.32.117.1 7044 22
    USER=root
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    LANG=en_US.UTF-8
    HOME=/root
    LOGNAME=root
    SSH_CONNECTION=137.32.117.1 7044 137.32.117.3 22
    
    # 查看单个全局变量
    [root@localhost ~]# printenv HOME
    /root
    [root@localhost ~]# echo $HOME
    /root
    
  • set:查看局部变量、用户自定义变量、全局变量

    # 查看所有全局变量,以下仅粘贴部分
    [root@localhost ~]# set
    HOSTNAME=localhost.localdomain
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_CLIENT=137.32.117.1 7044 22
    USER=root
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    LANG=en_US.UTF-8
    HOME=/root
    LOGNAME=root
    SSH_CONNECTION=137.32.117.1 7044 137.32.117.3 22
    

六、未整理命令

1、进程相关

  • sleep:休眠

  • &:后台运行

    [root@localhost ~]# jobs
    [root@localhost ~]# sleep 10 &
    [1] 1014
    [root@localhost ~]# jobs
    [1]+  Running                 sleep 10 &
    [root@localhost ~]# jobs
    [1]+  Done                    sleep 10
    [root@localhost ~]# jobs
    [root@localhost ~]# 
    
  • which:查找命令文件位置

  • type:查看命令文件类型

    # 查看外部命令ps信息
    [root@localhost ~]# which ps
    /usr/bin/ps
    [root@localhost ~]# type -a ps
    ps is /usr/bin/ps
    [root@localhost ~]# ps -f
    UID        PID  PPID  C STIME TTY          TIME CMD
    root       995   991  0 09:15 pts/0    00:00:00 -bash
    root      1039   995  0 10:28 pts/0    00:00:00 ps -f
    
    # 内建命令pwd
    [root@localhost ~]# type pwd
    pwd is a shell builtin
    [root@localhost ~]# which pwd
    /usr/bin/pwd
    [root@localhost ~]# type -a pwd
    pwd is a shell builtin
    pwd is /usr/bin/pwd
    [root@localhost ~]# 
    

    内建命令与外部命令的区别在于是否需要衍生出子进程来执行该命令,可以用type查看是内建还是外部命令

  • history:查看近期命令

    [root@localhost ~]# history
      743  which ps
      744  type -a ps
      745  ps -f
      746  type pwd
      747  which pwd
      748  type -a pwd
    
原文地址:https://www.cnblogs.com/is-raining/p/13535857.html