当前位置 博文首页 > 文章内容

    01-关于Bash Shell和基本命令

    作者: 栏目:未分类 时间:2020-10-11 18:01:32

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一、Bash Shell

    1、什么是Bash Shell

    # 命令的解释,用来翻译用户输入的命令

    2、使用Bash Shell

    单条命令添加一个用户

    # useradd gdx

    使用脚本添加用户

    [root@oldboy-pythonedu ~]# cat useradd.sh 
    #!/usr/bin/bash
    
    for i in {1..100}
    do
        useradd gdx_$i
        echo "gdx_$i is ok!!"
    done

    3、登录Linux Bash提示符

    [root@pythonedu ~]#
    
    root: 表示当前登录Bash Shell窗口的用户是..
    python: 当前系统的主机名称
    ~: 当前用户所处的路径   ~ 表示的是当前用户的家目录
    #:  提示符  # 表示超级管理员
                $ 表示普通用户

    4、Bash Shell基础语法

    命令  选项  参数
    
    ls                # 命令                 查看当前目录下的所有文件
    ls -l            # 命令 + 选项         
                        选项 可以改变命令输出结尾呈现的方式
    ls -l /tmp        # 命令 + 选项 + 参数      具体看哪个路径下的所有文件,默认看当前目录.

    5、Bash Shell特性

    5.1、tab不全

    tab补全:
        命令补全
        路径补全

    5.2、history

    history: 执行的命令历史
        -c:   清空
        -d:   删除指定的一条记录
        -w:   将历史记录落到指定的文件中

    5.3、alias别名

    # 临时操作
    alias cat_network='cat /etc/sysconfig/network-scripts/ifcfg-ens32'
    
    # 永久生效  ( 落到某个文件中 )  
    [root@oldboy-pythonedu ~]# echo "alias cat_network='cat /etc/sysconfig/network-scripts/ifcfg-ens32'" >> /etc/bashrc 
    
    unalias: 临时取消别名
    [root@oldboy-pythonedu ~]# unalias cat_network

    5.4、unalias临时取消别名

    [root@oldboy-pythonedu ~]# unalias cat_network

    5.5、快捷键

    ctrl+ a,e,c,l,d,w,k,u,r
    
    ctrl+a:  命令行光标跳转到行首
    ctrl+e:  命令行光标跳转到行尾
    ctrl+l:  清屏, clear
    ctrl+c:  中断bash窗口 前台正在运行的程序
    ctrl+u:  删除光标之前的
    ctrl+k:     删除光标之后的
    ctrl+w:  按照单词删除
    ctrl+ <--> 按照单词跳转光标

     6、文件管理

    目录结构:

    Windows: 多跟 c:\  d:\  e:\

    Linux:单根  /

    """
    bin:    普通用户可以执行的命令
    sbin:   管理用户可以执行的命令
    home:   普通用户的家目录:  /home/USERNAME 
    root:   管理员用户的家目录
    boot:   存放的启动系统时要加载的文件    grub引导菜单,内核文件
    dev:    设备 ( 硬盘 光盘 终端 )
        /dev/random: 产生随机数   ( 摇钱树)
        /dev/null:  黑洞
        
    etc:    配置  网卡配置,系统配置,服务配置
        /etc/hostname    主机名称
        /etc/sysconfig/network-scripts/   #网卡的配置信息
    lib  
    lib64
    proc    实时反馈当前系统的状态. [ 汽车的仪表盘 ]
    tmp        临时目录,谁上传只能谁删除   [  ]    
    usr      
        bin
        sbin
        local  --> C:\Program Files
        tmp    ---> /var/tmp
    var        可变的目录  
        log
        pid:  存放服务进程的ID    --->  python   ---> 30119  -->  /var/pid/python.pid  ( 30119 )
    """

    二、基本命令

     1、touch创建文件

    # 在/home下创建一个hello.py文件.
    [root@oldboy-pythonedu ~]# touch /home/hello.py
    [root@oldboy-pythonedu ~]# ls -l /home/hello.py 
    -rw-r--r--. 1 root root 0 9月  25 11:48 /home/hello.py

    2、cp复制

    # 将/home/hello.py 复制到 /tmp  [ 最好能修改一下名称为 /tmp/test.py ]
    cp: 复制文件或者目录
        -v:  显示拷贝的结果.
        -r:  递归拷贝
        -i:  
        [root@oldboy-pythonedu ~]# cp /home/hello.py /tmp/                #直接拷贝
        [root@oldboy-pythonedu ~]# cp /home/hello.py /tmp/test.py        #拷贝后修改名称

    3、rm删除

    # 将/home/hello.py 文件删除
    rm: 删除文件或者目录
        -f: 强制删除,不提示
        -r: 递归删除 [ 删除目录 ]
        [root@oldboy-pythonedu ~]# rm -f /home/hello.py
        [root@oldboy-pythonedu ~]# rm -fr /tmp/etc

    4、cat、head、tail、less\more查看 /tmp/test.py 中的内容

    cat: 查看文件内容:
        -A: 查看是否有特殊字符
        -n: 查看文件的行号
    [root@oldboy-pythonedu ~]# cat /tmp/hello.py
    head: 查看文件内容: 仅查看头部10行.
    [root@oldboy-pythonedu ~]# head /etc/passwd
    [root@oldboy-pythonedu ~]# head -1 /etc/passwd
    tail: 查看文件内容: 仅查看尾部10行.
        -f: 实时追踪文件尾部的变化
        
    [root@oldboy-pythonedu ~]# tail -f /var/log/messages
    less\more 分页查看
    [root@oldboy-pythonedu ~]# less /etc/services
    [root@oldboy-pythonedu ~]# more /etc/services

    5、mkdir创建目录

    mkdir    #创建目录
        -p:  递归创建
        -v:  显示创建的过程
    [root@oldboy-pythonedu ~]# mkdir /opt/python_dir
    [root@oldboy-pythonedu ~]# mkdir -pv /opt/dir1/dir2/dir3/dir4

    6、mv 移动文件或目录\重命名

    mv: 移动文件或目录
    [root@oldboy-pythonedu ~]# mv /tmp/hello.py /opt/
    [root@oldboy-pythonedu ~]# mv /tmp/hello.py /tmp/first.py

    7、which查找一个命令的全路径

    which #查找一个命令的绝对路径
    [root@oldboy-pythonedu ~]# which cat
    /usr/bin/cat
    [root@oldboy-pythonedu ~]# which head
    /usr/bin/head
    
    whereis
    [root@oldboy-pythonedu ~]# whereis -b head
    head: /usr/bin/head

    8、下载和上传

        下载:
            1.从互联网下载资源到服务器
            2.从服务器下载资源到本地
        
        上传:
            从本地上传内容到服务器
            
    
    rz 从本地电脑上传文件到server            ( 只能上传文件,不能上传目录或文件夹,    最大限制4G )
    sz 从server下载文件到本地电脑
    
    [root@oldboy-pythonedu ~]# yum install lrzsz -y
    
    wget  获取互联网上的资源至本地
    yum install wget -y
    wget http://nginx.org/download/nginx-1.16.1.tar.gz
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

    9、压缩与打包

    1.什么是压缩包?
        压缩包是一个特殊的文件,将多个文件或目录整合在一个文件中.
    
    2.为什么要使用压缩包?
        1.便于传输
        2.压缩后的体积会变小.  28GB文件  ---> 6GB
        
    3.实现打包与压缩有哪些工具:
        Windows:
            zip
            tar
            
        Linux:
            zip
            tar.gz
    
    4.压缩包如何实现:
        gzip:  ( 仅针对文件 )
            [root@oldboy-pythonedu ~]# gzip /etc/yum.repos.d/CentOS-Base.repo            #压缩 ( 源文件不见了 )
            [root@oldboy-pythonedu ~]# zcat /etc/yum.repos.d/CentOS-Base.repo.gz        #查看
            [root@oldboy-pythonedu ~]# gzip -d /etc/yum.repos.d/CentOS-Base.repo.gz        #解压
    
        zip:  ( 针对文件或目录 )
            [root@oldboy-pythonedu ~]# yum install zip unzip -y
            [root@oldboy-pythonedu ~]# zip -r yum_local.zip  /etc/yum.repos.d/ /tmp/
            [root@oldboy-pythonedu ~]# unzip yum_local.zip -d /opt/
        
        tar.gz:
            c: 创建
            z: 压缩类型
            f: 指定文件名称
            x: 自动识别文件类型
            
            创建:            [root@oldboy-pythonedu ~]# tar czf etc.tar.gz /etc/ /home/ 
            解压:            [root@oldboy-pythonedu ~]# tar xf etc.tar.gz 
            指定解压路径:    [root@oldboy-pythonedu ~]# tar xf etc.tar.gz  -C /mnt/

     

    10、vim Linux编辑工具

    2.1) 什么是vim
        文本文件的编辑工具,  和windows的notead++一样.
        
    2.2) 为什么要使用vim
        Linux一切皆为文件,需要修改配置文件,让软件按照我们的期望值运行,所以需要使用编辑工具. !!!!
    
    2.3) VI和VIM的区别
        没有什么区别, vim有高亮显示,  其他无区别..   和 windows  记事本与notepad++区别.
        vim需要安装   yum install vim -y 
    2.3) VI/VIM模式
        1.命令模式
            复制:    yy
            粘贴:    p
            撤销:    u
            删除:    dd     |  D  删除本行光标后的所有内容
            剪贴:   ( 删除+粘贴 )
            光标:
                    文件首行:  gg   | 
                    文件尾部:  G   = shift+g
                    翻页:  
                        ctrl+f 向下翻页
                        ctrl+b 向上翻页
                    行首: ^  |  0
                    收尾: $
            进入编辑模式:
                i:  直接进入编辑模式
                o:  插入新的行,并且进入编辑模式
                A:    光标移动到行尾,并进入编辑模式
                a:  光标向后移动一位,并进入编辑模式
    
            快速切换到你想要的行:
                vim file.py +Number 
                200gg                     快速跳转到200行
                :200                      快速跳转到200行
        
        2.编辑模式   ( 编写代码 )
        
        3.末行模式
            保存:    :w
            退出:   :q
            保存&退出:   :wq   
            搜索:    /search     n  向下查找   N 向上查找
            替换:    
                :%s#over#OOVER#g   替换整个文件中over为 OOVER
                :1,5s#over##OOVER#g    
                        #  号  可以是其他的特殊符号
                s@@@g
    vim模式
    shift+v:  行模式
        复制y  删除  d
    ctrl+v:   块模式
        加注释:  
            shift+i --> 输入#号注释符  ---> 按 ESC 
        删注释:
            选中后, 按下 x 删除一个字符
    视图模式
    1.开启行号:                    :set number      :set nu
    2.搜索忽略大小写:            :set ic
    3.取消高亮:                    :noh
    其他操作
    1.打开了一个文件,做了修改,关闭了会话.
        E: 直接编辑,会忽略掉关闭会话之前写的内容
        R: 将之前编写没有来得及保存的内容显示出来,确认没有问题,保存,退出.
            当再次进入文件,可以选择 D 删除交换的swp文件. 则不会在有提示.,
    vim编辑故障

    vim练习

    [root@www ~]# cat proxy.conf
    server {
        Listen 8080;
        Server_Name vim.OldboyEDU.com;
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-for;
            proxy_intercept_errors on;
            proxy_next_upstream error timeout;
            proxy_next_upstream_timeout 3s;
            proxy_next_upstream_tries 2;
            error_page 500 502 403 404 = /proxy_error.html;
        }
        location = /proxy_error.html {
            root /code/proxy;
        }
    }
    对该文件操作哦
    1.使用vim打开proxy.conf文件
    2.修改Listen为listen小写,并将8080修改为80
        r: 替换   r  --> l
        x: 删除一个字符 
        R: 连接替换 
        
    3.修改ServerName为server_name小写。
    4.修改vim.OldboyEDU.com为vim.oldboy.com
    5.在server_name行下插入一行 root /code;
    
    5.复制5-14行的内容,然后将其粘贴到14行下面
        shift+v
    
    6.删除与proxy_set_header相关的两行全部删除
        shift+v  dd
    
    7.如上操作完成后,在13-20行前面加上#
        ctrl+v   shift+i   --> # -->esc
    
    8.删除21-23的行,然后保存当前文件
        shift+v d
    View Code

    三、Linux文件类型

    后缀: 便于快速区分文件类型:
        -: 文件
        d: 目录
        s: socket
        c: 字符设备
        b:  块设备  磁盘

    四、Linux文件属性

    -rw-r--r--. 1 root root      32 9月  27 11:46 test.py
    
        -rw-r--r--.        # ①: 第一个标识文件类型, 后面九个标识文件的权限
        1                  # ②: 硬链接的次数
        root               # ③: 文件属于哪个用户
        root               # ④: 文件属于哪个组
        32                 # ⑤: 大小
        9月  27 11:46      # ⑥: 文件最后的修改时间               [ 创建时间,访问时间,修改时间 ]  stat test.txt
        test.py            # ⑦: 文件名称