python3-学习之linux极简教程(学习准备)(代码片段)

韩俊强 韩俊强     2022-12-06     520

关键词:

前言:

此篇文章是为Python学习做铺垫,主要学习内容:

01.操作系统历史概述
02.购买和连接云服务器
03.Bash和Linux命令
04.获取命令的帮助
05.文件操作相关命令-1
06.文件操作相关命令-2
07.使用包管理工具安装软件
08.配置阿里云防火墙
09.使用源代码构建安装软件
10.安装Python3
11.配置PATH环境变量
12.安装MySQL
13.Vim的基本操作-1
14.Vim的基本操作-2
15.定制Vim+修改文件权限
16.Vim录制宏和播放宏操作
17.Vim设置快捷键
18.Vim多文件多窗口操作
19.版本控制历史+源代码构建安装Git
20.安装tldr工具
21.网络相关命令+搜索命令
22.使用Git实施版本控制-1
23.在Gitee上创建Git仓库
24.添加远端仓库同步代码
25.生成密钥对+在Git服务器部署公钥
26.克隆代码+更新代码
27.解决代码冲突问题
28.进程管理和重定向操作
29.系统管理相关命令
30.用户管理相关命令
31.etc目录下几个重要的文件
32.解决Git无法https连接的问题
33.安装nodejs和hexo-cli
34.使用hexo-cli生成博客
35.配置域名解析服务
36.使用Pages服务托管博客
37.Shell编程概述
38.定时任务的使用

一、操作系统历史概述

计算机系统由硬件(hardware)和软件(software)两部分构成。

硬件: 运算器、控制器、存储器(RAM)、输入设备、输出设备
软件:系统软件和应用软件

操作系统(Operating System):直接覆盖在硬件上的软件,
提供人机交互的接口(界面)。

    ~ Windows (Server、Advanced server、Data Center)
    ~ Machintosh ---> macOS 
    ~ Unix ---> AIX / Hp-Ux / Solaris
    ~ Linux

1946 ENIAC ---> 5000
1960s ---> IBM ---> OS/360
1965 GE / MIT / Bell ---> Multics ---> 1969

ken ---> Space Trvel ---> PDP-7 ---> Unics ---> B
dmr ---> C ---> Unix

Unix ---> BSD ---> FreeBSD ---> Macintosh ---> macOS ---> iOS
Unix ---> Minix ---> Linux ---> Android

类Unix操作系统

IBM PC兼容机

Julia / Python / R 

Jupyter

Linux发行版本:

    ~ Redhat
    ~ VirtualBox
    ~ VMware
为何云服务器学习:
性价比非常高
运维管理非常简单
伸缩性灵活性俱佳

连接云服务器需要使用SSH协议(安全的远程连接)—> TCP / 22

二、Bash和Linux命令

SSH客户端工具:

    ~ Termius
    ~ FinalShell / XShell / Putty
Shell —> Bash (Bourne Again SHell) —> 壳程序
Ta:命令补全和路径补全

Linux命令:命令 [参数1 参数2 …] [命令作用的对象]

    ~ who - 查看谁登录了系统
    ~last - 最近登录的用户记录
    ~lastb - 最近登录失败的用户记录
    ~ clear - 清楚屏幕上的输出
    ~ cal - 查看日历
        -3:显示前后3个月的日历
    ~ date - 查看时间日期
    ~ whatis - 查看命令的描述
    ~ whereis - 获取命令的路径
    ~ shutdown - 关机或重启
    ~ logout / exit - 退出登录
    ~ ps - 查看进程信息
    ~ history - 查看历史命令
        - !!:把刚才的命令再执行一遍
        - !历史命令编号:重新执行历史命令
        -c:清楚历史命令

三、常用快捷键:

    ~ Tab:命令补全和路径补全
    ~ Ctrl+C:终止一个命令的执行
    ~ Ctrl+w:删除一个单词
    ~ Ctrl+u:从光标所在的位置删除到行首
    ~ Ctrl+k:从光标所在位置删除到行尾
    ~ Ctrl+y:取出刚刚被删除的内容
    ~ Ctrl+a:光标回到行首
    ~ Ctrl+e:逛遍回到行尾
    ~ Ctrl+d:结束输入
    ~ Ctrl+z:把一个正在运行的命令暂停放到后台

四、文件管理

    ~ pwd:print working directory:显示当前的工作目录
        - 以root身份登录:/root
        - 已xiaoming身份登录:/home/xiaoming
    ~ cd - change directory:切换工作目录
        绝对路径:/
        相对路径:以当前路径为基础
            ~ .  ---> 当前目录
            ~ .. ---> 上级目录
        - /root:超级管理员的用户主目录
        - /home:普通用户的用户主目录
        - /etc:配置文件
        - /usr:可执行的命令以及用户安装的程序
        - /var:程序运行中产生的数据和日志
        - /proc:进程文件
            ~ cpuinfo / meminfo
    ~ ls - list directory contents:列出文件夹的目录
        -a - all - 显示所有文件
        -l - long - 长格式查看 等同于ll(命令别名方法方法:alias 'rm=rm -rf')
            ~ -:文件
            ~ d:文件夹
            ~ l:软连接(符号连接,相当于Windows系统的快捷方式)
    ~ cat - concatenate - 连接多个文件(查看文件内容)
        -n - number - 显示行号
    ~ mkdir - make directory - 创建文件夹
        -p abc/a 创建abc文件并创建a文件,例如:mkdir -p abc/a
    ~ rmdir - remove empty directory - 删除空文件夹
    ~ touch - 创建空文件或者修改文件的最后访问时间
    ~ rm - remove - 删除文件或文件夹
        -i - interactive - 交互式删除
        -f - force - 强制删除
        -r - recursicve - 递归式删除
    ~ 查看文件:cat / tac / head头 / tail尾巴 / more / less / od(8进制) / rev 反向查看 
    ~ cp - copy - 复制(拷贝)文件
        -r - recursive - 递归式拷贝
    ~ mv - move - 移动文件或文件夹
        -在相同的路径下移动文件相当于是重命名操作
    ~ file - 查看文件的性质
    ~ wc - word count - 统计文件的字符数、单词数、行数
        -l - line:行数
        -w-word:单词数(中文文件不准确)
        -c-character:字符数(中文文件不准确)
    ~ uniq - unique - 去重
        -c - count:统计重复的次数
    ~ sort - 排序
        -r - reverise:反转
        -n - number:按数值大小排序
    ~ iconv - 编码转换
        -f - from:原始编码
        -t - target:目标编码

gb2312 - 国标码(常用汉字、平假名、片假名)
gbk - 国标码扩展码
gb18030 - 收录了汉字、少数民族文字

Unicode - 万国码 - 字符集

    ~ uft-8
        a - 一个字节
        韩 - 三个字节
        😄 - 四个字节(Emoji字符)
    ~ utf-16
    ~ utf-32

五、搜索命令

    ~ grep - 搜索内容
    ~ find - 查找文件
        -name:根据名字查找
        -size:根据大小查找 eg:find / -size +100M | ll 查找大于100M的文件
        -atime / ctime / mtime :根据时间查找

六、文字处理

    ~ sed 
    ~ awk

七、网络相关

    ~ wget - 网络下载器
        - wget https://www.sohu.com/
        - wget https://www.sohu.com/ -O sohu.html
        - wget https://inews.gtimg.com/newsapp_bt/0/12171811596_909/0/
    ~ scp - 安全的文件拷贝(跨网络拷贝文件)
    ~ sftp - 安全的文件传输
    ~ ping - 网络可达性检查
        - ICMP - Internet Conytrol Management Protocol
        - RTT - Round Trip Time
        - TTL - time to live
        - Contrl C 停止ping
        Ping to Death --- DDos
        分布式拒绝服务攻击:Distributed Deny of Service
        DDoS高防服务(防D) ---> 20w
    ~ ifconfig / ip ---> 本机网络信息
    ~ netstat ---> 查看网络端口的使用情况 netstat -nltp 
        -n: 以数值的方式查询网络端口信息
        -t: TCP(只查看TCP协议的连接)
        -l: listen(监听状态)
        -p: process(进程)
    ~ ssh ---> 安全远程连接
        如果公司有多台服务器,可以从一台服务器连接到其他服务器,一般情况下,多台服务器中只有一台允许从公网直接访问,
        其他服务器都要通过这台服务器使用ssh的方式进行连接,不允许从公网直接访问,相当于做了物理隔离,而这台可以从公网通过SSH直接访问的服务器,
        我们通常称之为跳板机(跳板服务器)。
        - ssh root@8.140.96.62

八、版本控制工具

    ~ Git - 分布式版本控制系统
        ~ CVS - Concurrent Version System
        ~ VSS - Visual Source Safe
            ---> 锁定模式
        ~ 2000 ---> Subversion ---> SVN
            ---> 中央集权型的版本控制系统
            ---> 合并模式
        ~ 2005 ---> Bitkeeper  ---> Git / Mercurical
            ---> 即使没有中央服务器也能实施版本控制

安装Git(源代码构建安装)

    ~ 下载:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz
    ~ 解压缩和解归档:tar -zxvf git-2.29.2.tar.gz 
    ~ 进入文件夹:cd git-2.29.2
    ~ 配置: ./configure --prefix=/usr/local/
        无法链接https:
            - make clean
            - ./configure --prefix=/usr/local --with-curl=$(which curl) --with-expat
            确认是否可以https:
                - cd /usr/local/libexec/git-core/
                - ll | grep https ; 打印 -rwxr-xr-x   4 root root 11910624 Dec 25 19:07 git-remote-https 即可
    ~ 补充依赖项:yum install -y libcurl libcurl-devel
    ~ 构建和安装:make && make install
    ~ 检查:git --version

Git的使用

    ~ 初始化(创建本地版本控制仓库):git init
    ~ 添加文件到仓库的暂存区:
        - git add <filename>
        - git add .
    ~ 从暂存区移除文件:git rm --cached <filename>
    ~ 配置用户名和邮箱: 
        - git config --global user.email "532167805@qq.com"
        - git config --global user.name "harry"
    ~ 查看版本控制的状态:git status
    ~ 将暂存区的文件同步到本地仓库:git commit -m '项目初始版本'
    ~ 查看提交日志:
        - git log 
        - git log --pretty=oneline --abbrev-commit --graph
    ~ 用暂存区恢复工作区:git restore <filename>
        - 误删除 / 误修改
    ~ 版本回退:git reset --hard 66c99bc (版本号选前几位即可)
        - git reflog 查找历史版本
        - git remote -v 
        - git remote remove origin 移除远程仓库
        - 添加 git remote add origin git@e.coding.net:HanJunqiang/AIChangeFace/pythonStudy.git
    ~ 将代码推到服务器
        - git push -u origin master
    ~ 从服务器克隆代码到本地
        - git clone git@e.coding.net:HanJunqiang/AIChangeFace.git
        - git clone git@e.coding.net:HanJunqiang/AIChangeFace.git code
        - git clone --depth=1 git@e.coding.net:HanJunqiang/AIChangeFace.git code(路径) clone最新
    ~ 获取服务器上的代码:
        - git pull ---> git fetch + git merge
        - 默认:fast-forward
加密技术:

对称加密:加密和解密使用同一个密钥,例如:AES

非对称加密:加密和解决不是同一个密钥,例如:RSA

生成密钥对:

  • ssh-keygen -t rsa -b 2048 -C “532167805@qq.com”

解决冲突:

     - git push ---> rejected push冲突
     - git pull ---> CONFLTCT
     - git diff ---> 检查冲突的位置
     - 协商解决有冲突的文件,重新提交
     - git push

九、用户管理

    ~ 添加用户:useradd / adduser 用户名
    ~ 删除用户:userdel 用户名
    ~ 修改用户设置:usermod
        -g:修改用户组
        -d:修改用户主目录
    ~ 修改密码:passwd
        -e:设置密码过期 passwd -e xiaohange 
        -i:设置密码过期多少天后禁用该用户
    ~ 修改密码有效期:chage
        change -M 100 -W 15 -I 7 xiaohange 
        设置100天以后必须改密码,如果快过期7天时还没改密码将被禁止邓旒
    ~ 用户组管理:分组是为了更方便的管理不同的用户
        - groupadd 用户组名
        - useradd -g mpuser shizhaoyu 创建用户并加到用户组
        - chgrp mpuser xiaohange 把已创建的用户未在分组的加到分组
    ~ 切换用户:su - switch user
    ~ 以超级管理员身份执行命令:sudo - super user do
        - visudo - 修改sudo权限用户列表; 用户必须在sudoer清单中
        - 超级管理员可以使用visudo修改这个清单

二进制改文件权限:

        7    6   0
        110  110 000
        rwx  rw- r--
        7    5   5
        111  101 101
        rwx  r-x r-x
        
        chmod 755 test.py

修改文件权限:

        所有者       r读   w写     x执行
                    read  write  execute
        同组用户     r     -      -
                    read  no write noexecute
        其他用户     r     -      -
                    read no write noexecute
                    ~修改文件权限:
                        - chmod u+x,g+x,o+x mycal.py 
                        - chmod g+rwx 文件夹
                        - chmod o-x mycal.py
                        - chmod +x ./test.sh 
                    ~ 修改文件所属用户组
                        - chgrp 用户组 文件名
                    ~ 修改文件所有者:
                        - chown 用户名 文件名

                    几个重要的文件:
                        - /etc/passwd: 用户名、口令、用户组、主目录、壳程序
                        - /ect/group: 用户组信息
                        - /etc/shadpw: 用户密码(处理过的密码,x代替)
        如果希望一个可执行程序在任意路径下都能够直接运行,可以将文件所在的
        目录加入PATH环境变量或者在/usr/bin/目录下给该文件做一个符号链接

云服务器 —> Web服务器(Apache、Nginx、Tengine)

十、软件和服务安装管理

    1.使用包管理工具
        ~ yum - yellowdog updater modified
            - 查找:yum search nginx
            - 安装:yum install -y nginx.x86_64 (-y安装过程默认都恢复yes)
            - 信息:yum info nginx
            - 卸载:yum erase -y nginx
            - 更新:yum update nginx
            - 查看安装的包:yum list installed
                ~ yum list installed | grep nginx
        ~ rpm - redhat package manager
附:使用Nginx
    ~ 启动:
    - CentOS 6.x:service nginx start
    - CentOS 7.x:systemctl start nginx
    ~ 停止:systemctl stop nginx
    ~ 重启:systemctl restart nginx
    ~ 查看状态:systemctl status nginx 
    ~ 开机自启:systemctl enable nginx
    ~ 禁用开机自启:systemctl disable nginx
    ~ 默认网址目录:/usr/share/nginx/html/index.html

MySQL安装:

        ~ rpm - redhat package manager
            rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
            tar -xvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar  -C mysql
            yum list installed | grem maria  如果有先移除,不然依赖库冲突 : 
                yum erase -y mariadb-libs
            rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
            rpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm
            rpm -ivh mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm 库文件兼容包
            rpm -ivh mysql-community-devel-5.7.32-1.el7.x86_64.rpm 开发包
            rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm 客户包
            yum install -y libaio libbaio-devel
            rpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm 服务包

    启动MySQL:systemctl start mysqld

    连接MySQL:mysql -u root -p 密码
    修改密码:mysqladmin -uroot password 'yourpassword'
    远程连接数据库:mysql -uroot -p -h192.168.137.10 -P3306

MySQL ---> MySQL AB ---> Sun Microsystem ---> Oracle 
    |_____ MariaDB(开源分支)

安装Redis服务

    ~ 下载:wget https://download.redis.io/releases/redis-5.0.14.tar.gz
    ~ 解缩:gunzip redis-5.0.14.tar.gz ---> redis-5.0.14.tar (归档文件)
    ~ 压缩:gzip redis-5.0.14.tar ---> redis-5.0.14.tar.gz
    ~ 解归档:tar -zxvf redis-5.0.14.tar  解压缩解归档
        -x - eXtract - 抽取(解归档)
        -v - verbose - 显示详细过程
        -f - file - 指定待解归档的文件的名字
    说明:上面两个操作(解压缩和解归档)如果想一步到位,可以使用下面的命令
        tar -xvf redis-5.0.14.tar.gz

    2.源代码构建安装
    把C语言的源代码经过编译生成二进制的可执行程序
        ~ yum install -y gcc
        ~ gcc --version
        ~ make --version
        ~ cd redis-5.0.14
        ~ make && make install
            - && - 第一个命令如果成功就执行第二个
            - || - 第一个命令如果执行失败就执行第二个
            - ; - 不管第一个命令成功失败都要执行第二个
        ~ redis-server --version / redis-cli --version
    
    3.直接下载对应的二进制程序
    nodejs:
        ~ wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz
        ~ xz -d node-v16.13.1-linux-x64.tar.xz
        ~ tar node-v16.13.1-linux-x64.tar
        ~ cd node-v16.13.1-linux-x64
        ~ 查看 /root/node-v16.13.1-linux-x64/bin , corepack  node  npm  npx 有这些工具就够了
        ~ 添加PATH /root/node-v16.13.1-linux-x64/bin 到 .bash_profile 重启

    3.脚本安装redis-server
        ```
        #!/bin/bash
        install_redis() 
        if ! which redis-server > /dev/null
        then
            cd /root
            wget $1$2'.tar.gz' >> install.log
            gunzip /root/$2'.tar.gz'
            tar -xf /root/$2'.tar'
            cd /root/$2
            make >> install.log
            make install >> install.log
            echo '安装完成'
        else
            echo '已经安装过Redis'
        fi  
        
        install_redis 'https://download.redis.io/releases/' 'redis-5.0.9'
        ```

命令别名:
alias ‘ll=ls -l’
unalias ll

附:安装Python3.9

    ~ 下载:wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
    ~ 认证:md5sum Python-3.9.0.tar.xz   打印:6ebfe157f6e88d9eabfbaf3fa92129f6
    ~ 解压缩:xz -d Python-3.9.0.tar.xz ---> Python-3.9.0.tar
        -d - decompress 解压
        -z - zip 压缩
    ~ 解归档:tar -xvf Python-3.9.0.tarz
    ~ 或许用到:yum -y groupinstall "Development tools"
    ~ 补充底层依赖项 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libdb4-devel libpcap-devel xz-devel libffi-devel
        其中CentOS.8.x有两个依赖项招不到,因为默认有替代项,可以忽略
    ~ 配置:./configure --prefix=/usr/local/python3
    [make clean]
    ~ 构建和安装: make && make install (大约需要跑20分钟)

安装完成提示:
     WARNING: The script easy_install-3.9 is installed in '/usr/local/python3/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip3 and pip3.9 are installed in '/usr/local/python3/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
大概意思是: /usr/local/python3/bin 目录,没有放在PATH变量底下;

    ~ 配置环境变量:
        /etc/bashrc      ---> 系统环境变量
        ~/.bash_profile  ---> 用户环境变量
        export PATH=$PATH:/usr/local/python3/bin
    vim: visual editor modefied
        vim .bash_profile
        a 编辑
        PATH=$PATH:$HOME/bin:/usr/local/python3/bin
        zz(大写)保存退出;
    ~ 创建符号链接:
        ln -s /usr/local/python3/bin/python3 /usr/bin/python3
        ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

Python有很多种实现版本:

    C语言 ---> CPython ---> C/C++
    Java语言 ---> JPython ---> Java
    C#语言 ---> IronPython
    Python语言 ---> PyPy ---> JIT

SFTP-安装和使用vsftpd:

    ~ yum install -y vsftpd - 安装
    ~ systemctl enable vsftpd.service - 设置开机启动
    ~ systemctl start vsftpd.service - 启动
    ~ systemctl status vsftpd.service - 查看状态
    配置FTP打开配置文件:
        ~ vi /etc/vsftpd/vsftpd.conf
                # 修改配置 12 行
                anonymous_enable=NO
                修改配置 33 行
                # anon_mkdir_write_enable=YES
                修改配置48行
                # chown_uploads=YES
                修改配置72行
                # async_abor_enable=YES
                修改配置82行
                # ascii_upload_enable=YES
                修改配置83行
                # ascii_download_enable=YES
                修改配置86行
                # ftpd_banner=Welcome to blah FTP service.
                修改配置100行
                # chroot_local_user=YES
                在末尾添加:
                    use_localtime=YES
                    listen_port=21
                    idle_session_timeout=300
                    guest_enable=YES
                    guest_username=vsftpd
                    user_config_dir=/etc/vsftpd/vconf
                    data_connection_timeout=1
                    virtual_use_local_privs=YES
                    pasv_min_port=40000
                    pasv_max_port=40010
                    accept_timeout=5
                    connect_timeout=1
                    allow_writeable_chroot=YES
    防火墙设置:
        ~ vi /etc/sysconfig/iptables (iptables防火墙)
        添加:
            -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
            -A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT

    重启vsftpd服务器:
        ~ systemctl restart vsftpd.service
    客户端工具登录:
        ~ FileZilla - SFTP文件协议 - root - 密码

十一、进程管理

    ~ jobs:查看自己放到后台任务
    ~ bg %编号:把暂停的后台任务放到后台运行起来(background)
    ~ fg %编号:把后台任务放到前台运行起来(foreground)
    ~ 命令 &:把命令放到后台运行
    ~ ps:Processes - 查看进程
        - ps aux / ps -ef 查看所有进程
        - ps aux | grep redis 
    ~ kill -9 PID:根据PID(进程编号)结束进程
    ~ pkill / killall:根据进程的名字结束进程
    ~ top:进程管理器(相当于Windows系统资源管理器)

重定向和管道:

    ~ >:输出重定向(覆盖式写入)
    ~ >>:追加输出重定向(新内容写到原来内容的后面)
    ~ 2>:错误输出重定向
    ~ <: 输入重定向
    ~ | :管道 - 前一个进程的输出就是下一个进程的输入

十二、系统管理

    ~ uptime: 查看服务器运行时长
    ~ dmesg: 查看系统启动诊断信息
    ~ free:查看空闲内存
    ~ sar:查看系统资源(CPU)使用情况
    ~ df / du:查看外部设备挂载和使用的情况
    ~ fdisk:查看硬盘分区信息

十三、Linux系统获取帮助

    ~ man - 查看手册
    ~ --help - 查看命令帮助
    ~ 直接搜索在线文档:https://man.linuxde.net/
    ~ tldr - 三方查看命令帮助的工具(特别人性化)

安装tldr帮助工具

    ~ yum imstall -y nodejs
    ~ node --version
    ~ npm config set registry http://registry.npmmirror.com/  
    ~  npm config get registry 查看npm下载源
    ~ npm install -g tldr
    ~ tldr grep
    ~ tldr who

十四、Vim的使用

    ~ 命令模式:所有的按键代表一个操作命令
        - 进入编辑模式
            ~ i / I / a / A / o / O 
        - 移动光标:
            ~ h / j / k / l ---> 配合数字使用
            ~ 0 / $ / w ---> 行首 / 行尾 / 下一个单词
            ~ G / gg ---> 把光标移动到指定的行
            ~ Ctrl+e / Ctrl+y ---> 翻行
            ~ Ctrl+f / Ctrl+b ---> 翻页
        - 编辑内容:
            ~ dd 删除一行 可以配合数字; d0 / d$ / dw ---> 删除
            ~ u / ctrl+r ---> 撤销 / 重做
            ~ yy / p ---> 复制 / 黏贴  数字+命令
        - 保存退出:ZZ 
    ~ 编辑模式:可以编辑内容
        ESC 从编辑模式回到命令模式
    ~ 末行模式:在最下面一行进行操作(底线命令模式)
        : / ?
        set nu - 添加行号 set nonu - 去除行号
        - 退出:q退出 / q!强制退出 / wq保存退出 / qa退出所有
        - 查找:/关键词 ?关键词
            ~ n:正向搜索
            ~ N:反向搜索
        - 替换:
            1,$s/新闻/小猫
            1,$s/新闻/小猫/c
            1,10s/a/@/g

            c - confirm 确认
            g - global 全局
            i - ignore case 忽略
            e - error 错误
        - 设置:
            ~ set nu / set nonu   ---> 行号
            ~ set hls / set nohls ---> 高亮
            ~ set ruler / set niruler --->标尺
            ~ set ts=4  ---> 制表键的空格树
            ~ set expandtab   ---> 把制表键自动变空格
            ~ set autoindent  ---> 自动缩进
            ~ syntax off / syntax on ---> 语法高亮
        - 映射快捷键
            ~ map <F2> gg1000000ddi ---> 命令模式下的快捷键
            ~ imap <F2> if __name__ == '__main__' : ---> 编辑模式下的快捷键
            ~ inoremap _main if __name__ == '__main__':
        - 查看打开的文件
            ~ ls
            ~ b 编号
        - 拆分屏幕窗口
            ~ vc 垂直拆分 / sp 水平拆分
            ~ Ctrl+w 切换窗口

Vim配置文件:

    vim ~/.vimrc
        1 set nu
        2 set ts=5
        3 set expandtab
        4 set autoindent
        5 set nohls
        6 set ruler
        7 syntax on
        8 inoremap _main if __name__ == '__main__':

录制宏:

        ESC q+寄存器名字a 开始录制
        0回到行首 
        i编辑模式
        tab 缩进
        ESC 回到命令模式
        j下移下一行
        q结束录制

播放宏:

        22(几行)@a(录制的文件名称)

专业的Python代码规范检查工具:pylint / flake8

    ~ E - Error - 代码有错误
    ~ W - Warning - 警告
    ~ R - Refactor - 建议重构代码
    ~ C - Convention - 不符合编程管理

    pylint --disable=C0103 mycal.py 不检查C10103

Node.js
echo $PATH
    ~ wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz

十五、使用Hexo搭建博客:

    ~ 安装 Nodejs
    ~ wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz
    ~ 配置环境变量 PATH=$PATH:/root/node-v16.13.1-linux-x64/bin
    ~ 下载Hexo : npm install -g hexo-cli
    ~ 查看:hexo --version
    ~ 初始化: hexo init blog
    ~ 部署、更新:hexo g
    ~ 指定80端口并后台启动:hexo s -p 80 > hexo.log 2> hexo-error.log &
    ~ 博客配置:/root/blog/_config.yml 配置完需要 hexo g 并重新启动
    ~ 文章放置位置:/root/blog/source/_posts

十七、定时任务:

    ~ at 18:00+3days 创建定时
    ~ 回车后添加任务
    ~ Ctrl+d 结束添加任务
    ~ atq 查看定时任务
    ~ atrm 2 删除定时任
    重复周期性的定时任务(克隆表):
        ~ crontab -e
        ~ 0,1,10,11 1-6 * 7-12 * find /root -name "*.log" -delete   (分 小时 天 月 年)https://www.pppet.net/ 时间规则可以使用工具生成

铺垫已做好,继续加油💪🏻~☕️

python学习之linux极简教程

前言:此篇文章是为Python学习做铺垫,主要学习内容:01.操作系统历史概述02.购买和连接云服务器03.Bash和Linux命令04.获取命令的帮助05.文件操作相关命令-106.文件操作相关命令-207.使用包管理工具安装软件08.配置阿里云防火墙09.使... 查看详情

rust机器学习之tch-rs(代码片段)

Rust机器学习之tch-rstch-rs是PyTorch接口的Rust绑定,可以认为tch-rs是Rust版的PyTorch。本文将带领大家学习如何用tch-rs搭建深度神经网络识别MNIST数据集中的手写数字。本文是“Rust替代Python进行机器学习”系列文章的第五篇,其... 查看详情

linux运维学习之lamp搭建个人博客网站

    从开始学习Linux,我就知道搭建博客,也很好奇怎么搭建的博客,今天终于学到了这个知识点,网上的很多的教程感觉都是含糊其辞,对于基础稍微有点薄弱的,根本实现不出来,而今天我就来篇基础教程,基... 查看详情

linux快速入门打开你的学习之道

相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢?首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣,有的人是因为Linux比较好找工... 查看详情

linux学习-kubernetes学习之kubectl命令(代码片段)

kubernetes版本1.22.3问题1:Errorfromserver:Get"https://192.168.88.103:10250/containerLogs/default/client/client":dialtcp192.168.88.103:10250:connect:noroutetohost解决方法#经查看因为192.168.88.103上面fi 查看详情

linux学习-docker学习之私有registry(代码片段)

启动构建私有Registry#--restart=always参数表示在docker服务重新启动时自动启动此容器[root@docker~]#dockerrun-d-p5000:5000--restart=always-v/opt/registry:/var/lib/registryregistry[root@docker~]#dockerimagelsREPOSI 查看详情

深度学习之bert中文分类学习

深度学习之Bert中文分类学习BERT实验预训练结果分析tfhub_handle_preprocess="https://hub.tensorflow.google.cn/tensorflow/bert_zh_preprocess/3"bert_preprocess_model=hub.KerasLayer(tfhub_handle_preprocess)text_test=['我真是个天才啊! 查看详情

linux学习-docker学习之dockerfile(代码片段)

dockerfile命令FROM:基础镜像FROMcentos:6.9FROMcentos@ImageIDRUN:构建镜像过程中运行的命令bash程序–使用&&连接多个命令#仅限bash程序,多个命令通过&&连接RUNcd/etc/yum.repos.d&&mkdirbak&&mv*. 查看详情

linux学习-kubernetes学习之kubernetes安装部署(代码片段)

基于Centos7.5下kubeadm安装和部署kubernetes使用三台虚拟机进行部署(一台master,两台node)虚拟机IPmaster:192.168.88.101node1:192.168.88.102node2:192.168.88.103修改/etc/hosts配置#在三台虚拟机的/etc/hosts文件中添加主机名解析192.168.8 查看详情

麦子深度学习之-机器学习算法高级进阶

麦子深度学习之-机器学习算法高级进阶随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教... 查看详情

linux学习-docker学习之数据卷(代码片段)

Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,... 查看详情

从零入门机器学习之linux系统详解

  大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己... 查看详情

从零入门机器学习之linux系统详解

  大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己... 查看详情

集成学习之随机森林案例专题python机器学习系列(十七)(代码片段)

集成学习之随机森林案例专题【Python机器学习系列(十七)】文章目录1.Bagging与随机森林简介2.随机森林--分类任务2.1准备数据2.2python实现随机森林--分类任务2.3绘制ROC曲线与计算AUC2.4绘制决策树3.随机森林--回归任务集成... 查看详情

influxdb学习之influxdb的安装和简介

最近用到了InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学。本文主要介绍InfluxDB的功能特点以及influxDB的安装过程。更多InfluxDB详细教程请看:InfluxDB系列学习教程目录一、InfluxDB简介InfluxDB是用Go语言编写... 查看详情

workerman入门学习之基础教程-timer类的使用

1、ServerTimer.php代码:<?php/***定时器学习*/require_once__DIR__.‘/Workerman/Autoloader.php‘;useWorkermanWorker;useWorkermanLibTimer;//创建一个容器$worker=newWorker(‘websocket://0.0.0.0:12345‘);//连接回调$worker-& 查看详情

git学习之简介

 一.前言 史上最浅显易懂的Git教程!为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,... 查看详情

java学习之jdbc

  之前学习了数据库原理,上学期也学了oracle数据库,我的学习视频上是讲的mysql数据库,其实都差不多,复习了下sql知识,数据库的学习就没有写下来了,就从Java怎么操作数据库开始吧。  因为这年过完了,开始新的学习... 查看详情