vim编辑器与shell命令

vim编辑器与shell命令

最近看《linu就该这么学》,做个笔记哈。书里是红帽系统,我自己的是utubun,虽说有些地方是不一样的,但是觉得这本书还是很适合新手的,就把差异的地方跳过了,或者是遇到有差的地方,去网上搜一下,现在还很基础,这些基础的东西应该差别不太大吧。

vim文本编辑器

vim编辑器有三种模式:命令模式、末行模式、输入模式

  • 命令模式:控制光标移动,可以对文本进行删除、复制、粘贴等工作。
  • 输入模式:正常的文本录入。
  • 行末模式:保存、退出与设置编辑环境。

每次运行vim编辑器后默认是命令模式

下面是一些快捷键 

vim编辑器命令模式常用快捷键
命令作用
dd剪切光标所在行
5dd剪切从光标开始的5行
yy复制光标所在行
5yy复制从光标开始5行
p之前dd、yy操作的数据粘贴到光标后
/string从上往下搜索字符串
?string从下往上搜索字符串
n显示搜索命令定位到的下一个字符串
N显示搜索命令定位到的上一个字符串
u撤销上一步的操作
vim编辑器末行模式常用命令

命令

作用
:w保存
:q退出
:q!强制退出 不保存修改内容
:wq保存修改内容并退出
:set nu显示行号
:set nonu不显示行号
:命令执行命令
:整数跳转到该行

 

了解Shell脚本

查看系统中所有可用的shell解释器:
cat /etc/shells

查看当前的shell解释器:
echo $SHELL

一个完整的shell脚本则应该包括 脚本声明 注释信息 可执行语句

  • 脚本声明 #! :告诉系统用何种shell来解释
  • 注释信息 #     :注释
  • 可执行语句    :执行的具体命令

简单的shell脚本 :shelltest.sh

#!/bin/bash
echo "hello world"

执行 3中方法:
./shalltest.sh
sh shalltest.sh
sourc shalltest.sh

第一种./shelltest.sh,需要设置下权限 chmod u+x shelltest.sh

shell脚本可以接收用户输入的参数,命令名 参数1 参数2 参数3 

可以接收用户参数的shell脚本

vim example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"

执行:
sh example.sh
shell预定义变量
$0当前执行shell脚本的程序名
$1-9,${1 0},¥{1 1}……参数的位置变量
$#一共有多少个参数
$*所有位置变量的值
$?判断上一条命令是否执行成功,0为成功,非0失败

shell脚本的条件测试语句能够测试特定 的表达式是否成立,当条件成立返回值为0,否则非-

测试语句格式 : [ 条件表达式 ] 注意中括号两边都有空格

测试语句:文件测试、逻辑测试、整数值测试、字符串比较

  • 文件测试
测试/etc/abc是否是目录
[ -d /etc/abc ]
echo $?  #显示执行结果

测试/etc/abc.txt是否为文件
[ -f /etc/abc.txt ] 
echo $?  #显示执行结果
文件测试操作符说明
操作符作用
-d

测试是否为目录

-e测试文件或目录是否存在
-f判断是否为文件
-r当前用户是否有权限读取
-w当前用户是否有权限写入
-x当前用户是否有权限执行
  • 逻辑测试
若当前登录的用户不是root,则输出user
[ $USER != root ] && echo "user"
逻辑测试操作符说明
操作符作用
&&逻辑与,而且的意思
||逻辑或,或者的意思
逻辑非,不的意思
  • 数值比较
# 10是否大于10?
[ 10 -gt 10]
echo $?

# 10 是否等于10?
[ 10 -eq 10 ]
echo $?
整数值比较操作符说明
操作符作用
-eq

判断是否等于

-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于
  • 字符串比较
# 判断string变量是否为空:
[ -z $stirng]
echo $?
字符串比较操作符说明
操作符

作用

=比较字符串内容是否相同
!=字符串内容是否不同
-z判断字符串内容是否为空

 

 

条件测试语句

if条件语句、for条件语句、while条件语句、case条件语句

  • if条件语句:
# 语法
if 条件测试操作
    then 命令序列
fi


if 条件测试操作
    then 命令序列1
else
    命令序列2
fi


if 条件测试操作
    then 命令序列1
elif 
    then 命令序列2
else
    命令序列3
fi
# 例 输出成绩等级

#!/bin/bash 
read -p "Enter your score(0-100):" GRADE 
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]  
then 
        echo "$GRADE is Excellent" 
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] 
then 
        echo "$GRADE is Pass" 
else 
        echo "$GRADE is Fail" 
fi
  • for条件语句
# 语法
for 变量名 in 取值列表
do
    命令序列
done
# 从列表文件读取主机地址,逐个测试是否在线。

# 首先创建主机地址列表:
vim ipadds.txt
192.168.10.10
192.168.10.11
192.168.10.12

vim for.sh

#!/bin/bash
HLIST=$(cat ~/ipadds.txt)
for IP in $HLIST
do
        ping -c 3 -i 0.2 -W 3 $IP $> /dev/null
        echo "IP is : $IP"
        if [ $? -eq 0 ]
        then
                echo "Host $IP is up."
        else
                echo "Host $IP is down."
        fi
done
  • while条件语句
# 语法
while 条件测试操作
do 
    命令序列
done
# 猜一个0-999的整数
vim while.sh

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
        read -p "请输入你猜测的价格数目:" INT
        let TIMES++
        if [ $INT -eq $PRICE ]
        then
                echo "恭喜你答对了,实际价格为$PRICE"
                echo "你总共猜测了 $TIMES 次"
                exit 1
        elif [ $INT -gt $PRICE ]
        then
                echo "太高了!"
        else
                echo "太低了!"
        fi
done
  • case条件语句
# 语法
case 变量值 in
模式1)
    命令序列
    ;;
模式2)
    命令序列
    ;;
*)
    默认命令序列
esac
# 判断用户输入的字符为字母还是数组还是其它
vim case.sh

#!/bin/bash
read -p"请输入一个字符,并按enter键确认:" KEY
case "$KEY" in
        [a-z]|[A-Z])
                echo "您输入的是 字母"
                ;;
        [0-9])
                echo "您输入的是 数字。"
                ;;
        *)
                echo "您输入的是 空格/功能键或其他控
制字符。"
esac

 

计划任务服务

1 .一次性任务服务,是有atd服务/进程来实现的,计划的管理操作是 at 命令

来看个例子

在 23:00 创建一个文件夹 pidan

#  at 23:00
at > mkdir pidan
按ctrl+d来保存退出

可以用atq 来查看任务列表,任务完成后会自己在列表中消失

at命令参数
参数作用
at<时间>安排一次性任务
atq 或 at -l查看任务列表
at -c 序号预览任务与设置环境
atrm 序号删除任务

2 .创建长期可循环的计划任务,则用到cron服务

创建、编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]

在创建、编辑计划任务时有个固定的格式

分钟 小时 日期 月份 星期 命令

例 每周1、3/4的凌晨3点25分将/home/wwwroot目录打包备份为backup.tar.gz
25 3 * *1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值