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