01-关于Bash Shell和基本命令

一、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、lessmore查看 /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
lessmore 分页查看
[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            # ⑦: 文件名称

 

原文地址:https://www.cnblogs.com/kongxiangqun/p/13759671.html