vim编辑器、tmux使用、脚本执行方式

1. vim简介

Linux里面的编辑工具:vi、vim、emacs、gedit

  • vi是Linux里默认安装的文本编辑器
  • vim是vi的升级版
  • centos 7/8 最小的安装,默认是没安装vim的

yum install/remove vim -y 安装卸载软件
在这里插入图片描述

编码问题

  • wiidows:记事本识别vim的文本的换行符号不友好,用sublime打开比较好
  • Linux: vim编辑器可以打开sublime和记事本编辑的文件内容,但是打开记事本的可能有乱码
    原因: 记事本默认采用的编码(ANSI)和linux (Unicode、UTF-8)的不一样, 将记事本打开的文件另存为其他编码即可在linux里面打开不乱码
    Unicode是万国码,utf8属于unicode的一个分支
    python3默认的是utf-8

2. 模式切换

在这里插入图片描述
/root/.vimrc 这个配置文件,vim打开文件时会自动加载里面的配置

2.1 输入模式

操作键功能
i光标在哪里,就在哪里输入
I光标跳到行首并进行输入
o在光标的下一行进行输入
O在光标的上一行进行输入
a在光标的后退一格进行输入
A光标退到行尾并进行输入
s删除光标所在字符进行输入
S删除光标所在行并进行输入

2.2 末行模式

命令功能
:w!放弃保存
:w aa.txt另存为,接绝对路径
:w只保存不退出
:set number = set nu行号设置
:set nonumber =set nonu取消行号设置
:help :w查看帮助
: q!强制退出不保存
:wq = :x保存并退出
:wq!= :x!强制退出并保存(只用root用户可以)
:q只在没有修改的时候起作用
:r mobile_phone.txt 或 :r /etc/hosts导入(读 read)文件里的内容
:e /lianxi/tang.txt退出当前文件,去打开另外一个文件tang.txt
:set ts=4设置一个tab键占4个空格,默认一个tab键占8个
:set paste设置粘贴的时候,按照原来的格式,保障格式不乱
:set cursorline显示光标所在行 line 行 cursor 光标
:set cursorcolumn显示光标所在列 column 列

末行模式里跳转

命令功能
:n第n行
: $最后一行

文件内容替换

命令功能
: s/old/new/将当前行中查找的第一个字符"old"替换为new
: s/old/new/g将当前行中查找的所有字符串"old"替换为new
:#,# s/old/new/g在行号“#,#”范围内的所有字符串"old"替换为new
: %s/old/new/g在整个文件范围内替换所有的"old"为new
: s /old/new/gc对每个动作提示确认
:%s/feng//g将所有的feng删除

经典案例

  1. 批量注释1到15行 :1,15s/^/#/
  2. 从21行到30行中所有的“/usr/local”改为“/root” :21,30s/\/usr\/local/\/root/g
  3. :0或:1 跳到文件第一行
  4. :$ 跳到文件最后一行

2.3 命令模式

命令功能
ZZ命令模式中 保存并退出
x删除单个字符(相当于剪切)
dd删除当前光标所在行
#dd删除从光标处开始的#行内容
d^删除当前光标之前到行首的所有字符
d$删除当前光标之后到行尾的所有字符
dw删除一个单词(word),以空格、冒号等符号
yy复制当前行整行的内容到剪贴板
#yy复制从光标处开始的#行内容
p将缓冲区中的内容粘贴到光标位置处之后
P粘贴到光标位置处之前
u撤销

命令模式里跳转

项目Value
nG跳到第n行
G跳到最后一行

查找字符串

命令功能
/word从上而下在文件中查找字符串“word”
?word从下而上在文件中查找字符串“word”
n定位下一个匹配的被查找字符串
N定位上一个匹配的被查找字符串
u撤销
ctrl+r恢复

2.4 替换模式

R replace 替换
直接移动光标到某个位置,直接输入内容,就会替换
撤销: 退格键

2.5 可视模式

主要用来选择复制区块文本
在命令模式下,使用v或V键可以进入可视模块
可视或者可视块模式可以复制或者删除一部分单词,选中一部分单词,然后进行操作。

命令模式操作
小v可视模式从当前位置到光标最后停止的位置之间的部分
大V可视行模式从当前位置到光标最后停止位置 所在行
ctrl+v可视块模式从当前位置到光标最后停止位置 选择块(矩形)
按y复制  x删除
按p粘贴
另起一行,按o,再按esc,再p
ctrl+V 进入可视行模式,选中多行,ctrl+> 向右全部缩进

练习:
编写一个程序实现随机产生字符串写到一个文件里,一行里面必须有50个字符,产生100万行的一个文本文件
Linux写法:

[root@localhost lianxi]# cat bigfile.sh
#!/bin/bash
#随机产生字符
for i in {1..1000000}
do
   mychar=$(mkpasswd -l 50)

   echo $i  $mychar>>sc_bigfile.txt
done

python写法:

[root@localhost lianxi]# cat bigfile.py
#!/usr/bin/python3

import string
import random

#产生10个小写字母
lowercase=random.sample(string.ascii_lowercase,k=10)

#将10个字母拼接起来
sc_lc="".join(lowercase)

with open("sc_bigfile2.txt","a+") as f:  #打开文件,以追加的方式向里面输入内容
    f.write(f"{sc_lc}\n")

在这里插入图片描述

3. 随机产生字符串

md5sum

根据一段文字或一个文件产生一个固定长度的字符串

[root@sc lianxi]# md5sum a.txt 
1c9f470f675a5a21f7583e1a33f88575  a.txt
[root@sc lianxi]# echo 123|md5sum 
ba1f2511fc30423bdbb183fe33f3dd0f  -
[root@sc lianxi]# echo 123123456|md5sum 
eafa8cafcb3f240cc2d23e0dbf638adf  -

hash函数

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。
这简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

mkpasswd

l–长度 d–数字 c–字母 s–符号
在这里插入图片描述

[root@localhost ~]# mkpasswd -l 50   指定密码长度
seczrgrpSegmqxt5f&cgfxhxupjtxddyiotW8smsdrmdnabhuu
[root@localhost lianxi]# mkpasswd -l 50 -d 10 -c 10 -s 10
7gx0s)sHx2.*mb9tCgp|bybju5ex)!j8;e2u?di93a2u%tv#qn

string库(python里的库)

>>> string.printable  # 打印出所有能作为密码的字符
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.ascii_lowercase  # 小写
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase  #大写
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits  #数字
'0123456789'
>>> string.punctuation  #特殊字符
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
import random
import string
>>> random.sample(string.ascii_lowercase,k=10) #随机产生10个小写字母数组
['z', 's', 'i', 'r', 'g', 'c', 'f', 'a', 'k', 'e']
>>> random.sample(string.ascii_uppercase,k=10)  #随机产生10个字符数组
['W', 'M', 'G', 'S', 'L', 'H', 'I', 'U', 'Q', 'K']
>>> random.sample(string.digits,k=10)  #随机产生10个数字
['0', '3', '4', '7', '8', '1', '9', '5', '2', '6']
>>> random.sample(string.punctuation,k=10)  #随机产生10个特殊字符
['`', '%', '/', '<', '-', '(', '?', "'", '"', ']']
>>> aa = random.sample(string.punctuation,k=10)   
>>> aa.
aa.append(   aa.copy(     aa.extend(   aa.insert(   aa.remove(   aa.sort(     
aa.clear(    aa.count(    aa.index(    aa.pop(      aa.reverse(  
>>> "".join(aa)   #join方法拼凑
"<>:'.^_+($"
>>> 

4、tmux工具使用

Tmux使用初体验

#安装
yum install tmux -y

命令终端输入: tmux
tmux ls 显示已有tmux列表(C-b s)

ctrl + b 接 shift+% 切左右屏
ctrl + b 接 shift+" 切上下屏
ctrl + b 接 上下左右键 就是调整光标的位置
ctrl + b 接 空格键 进行调整
ctrl + b 接 d 退出了并且保存状态
ctrl + b 接 c 是新增一页
ctrl + b 接 p 是翻页,上一页 接n就是下一页
ctrl + d 退出

5、脚本执行的四种方式

  • 在子进程里面运行
    • bash onekey_install_mysql.sh
    • ./ onekey_install_mysql.sh
  • 在当前进程中运行
    • . onekey_install_mysql.sh
    • source onekey_install_mysql.sh

bash onekey_install_mysql.sh的时候, echo ‘PATH=/usr/local/mysql/bin:$PATH’ >>/root/.bashrc这条命令的结果在当前终端并不生效。要重新su 或者重开一个终端,变量才生效。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值