vi的使用
h左,l右,j下,k上
dd删除行,dG从当前删除到最后
:2定位到第二行,:G定位到文档最后
:/good搜索good,:%s/good/bad/g把good全部换成bad
:!执行shell命令,:r!把shell命令执行结果读入文档
:set nu设置行号,:set nonu取消行号,:1,10s/^/#/g在1到10行前加上#注释,:1,10s/#/^/g,:1,10>>把1到10行向右移两个TAB,<<向左移,:1,10d把1到10行删除
r替换单个字符,R替换多个字符,u撤销上次操作,ctrl+y恢复上次操作。
:w a.txt另存为a.txt
bash shell
Tab自动补全、历史命令、命令别名、标准输入输出、重定向操作和管道功能。
history,history -c,!加字母。
alias,unalias查看别名,设置别名,取消别名。
1>,2>分别是正确输出和错误输出。
查看变量:echo $变量, Env用于查看全局变量,set所有变量
双引号,单引号注意一下:
- [root@xiaoqi bin]# echo "111 $a 000"
- 111 1000 000
- [root@xiaoqi bin]# echo '111 $a 000'
- 111 $a 000
键盘键入变量
- [root@xiaoqi date]# read -p "please keyin your name:" -t 30 named
- please keyin your name:xiaoqi
- [root@xiaoqi date]# echo $named
- xiaoqi
环境变量配置文件/etc/profile我们可以通过path增加环境变量路径,将该路径下变量变为全局变量
- [root@xiaoqi etc]# PATH=$PATH:/root
- [root@xiaoqi etc]# echo $PATH
- /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/root
1、一个键盘交互的脚本
- #!/bin/bash
- #test1.sh
- read -p "please input your name:" name
- read -p "please input your name:" age
- echo -e "\n your name and age:$name $age"
- [root@xiaoqi date]# chmod 755 test1.sh
- [root@xiaoqi date]# ./test1.sh
- please input your name:xiaoqi
- please input your name:25
- your name and age:xiaoqi 25
2、数值运算,()
- read -p "first number:" first
- read -p "second number:" second
- total=$(($first*second))
- echo -e "\n the result of $first X $second is ==> $total"
- [root@xiaoqi date]# chmod 755 test2.sh
- [root@xiaoqi date]# ./test2.sh
- first number:8
- second number:9
- the result of 8 X 9 is ==> 72
3、每隔三天对数据库做一次备份,并记录磁盘信息
- #!/bin/bash
- DAY='date+%Y%m%d'
- SIZE='du -sh /var/lib/mysql'
- echo "Date: $DAY">> /tmp/dbinfo.txt
- echo "Date Size: $SIZE">> /tmp/dbinfo.txt
- cd /opt/dbbak
- tar zxvf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tem/dbinfo.txt
- rm -f /tmp/dbinfo.txt
没环境,没运行结果
经典命令
dd
- [root@xiaoqi date]# dd if=test1.sh of=test2.sh bs=1M count=1
- 记录了0+1 的读入
- 记录了0+1 的写出
- 142字节(142 B)已复制,0.0002068 秒,687 kB/秒
- [root@xiaoqi date]# vi test1.sh
- [7]+ Stopped vi test1.sh
- [root@xiaoqi date]# vi test2.sh
- [8]+ Stopped vi test2.sh
- [root@xiaoqi date]#
用刚才的test1.sh和test2.sh,运行后2的文件跟1一样了。
把test2.sh里的东西都删掉,运行下面命令
- [root@xiaoqi date]# dd if=test1.sh of=test2.sh bs=1M conv=ucase
然后test2.sh里的内容是test1.sh里的大写的内容。
备份
- dd if=test1.sh of=test1.sh.bak1 bs=1k
恢复
- [root@xiaoqi date]# dd if=test1.sh.bak1 of=test1.sh
wc
统计行数
- [root@xiaoqi date]# wc -l test1.sh
- 1 test1.sh