批量创建文件:touch student{1..1000}
> 表示覆盖原来的文件进行添加
>> 在原来的文件内容上走最后面进行内容的追加
xargs -n 2 < sjf.txt (将文件的内容以两个进行分组,两两作为一行的输出)
tr " " "\n" < sjf.txt 将文件中的空格用换行进行输出
echo 123 1>a.txt 2>b.txt
如果是正常的没错误那么123将放入a.txt里面,如果出现错误错误将会出现在b.txt里面
seq 100 >> ett.txt seq表示序列 生成1到100数字放入ett.txt
sed 流编辑器
sed -n "20,30"p ett.txt -n的作用是取消默认输出 不加-n打印全部 p打印
awk "NR>19 && NR<31" ett.txt
grep过滤
grep print sjf.txt 过滤文件中含有print的内容
grep -v print sjf.txt 加上-v就可以过滤print之外的内容
grep 20 -A 10 ett.txt 打印当前行之后的10行
grep 20 -C 5 ett.txt 打印当前行的前后各五行
grep 30 -B 10 ett.txt 打印当前行的前10行
sed的使用
sed "s#(需要替换的内容)#(替换后的内容)#g" old.txt
[root@localhost data]
[root@localhost data]
oldboy oldgirl
[root@localhost data]
oldboy print
[root@localhost data]
oldboy oldgirl
上面只是输出改了 加上 -i才可以改内容
[root@localhost data]
[root@localhost data]
oldboy print
替换data文件夹下面的.sh里面的oldboy为print
[root@localhost data]
[root@localhost data]
mkdir -pv test/{1..3}/{4..6} -pv查看创建的过程
Ctrl + a 移动光标到行开头
Ctrl + e 移动光标到行结尾
Ctrl + u 剪切光标前面的内容
Ctrl + k 剪切光标后面的内容
ssh连接不上的原因
1.服务端防火墙阻挡
/etc/init.d/iptables stop (临时关闭开机自启)
/etc/init.d/iptables status(查看防火墙状态)
永久关闭防火墙: chkconfig iptables off(开机不启动)
2.端口没开放,服务器没有监听你连接的端口
netstat -lntup|grep 22
netstat -lntup|grep sshd
/etc/init.d/sshd restart
很多服务的启动都在、etc/init.d 下面
网卡的配置命令: cat /etc/sysconfig/network-scripts/ifcfg-eth0
UUID网卡的唯一标识
route -n 查看网关
cat /etc/resolv.conf 查看DNS
/etc/init.d/network restsrt 重启所有网卡
更改主机名:
hostname sjf(主机名) 临时改动
长期修改:
cat /etc/sysconfig/network
sed -i "s#HOSTNAME=old#HOSTNAME=sjf#g" /etc/sysconfig/network
/etc/fstab:实现开机要挂载的文件系统的一个文件
/etc/rc.local 用于存放开机自启动程序命令的文件
chkconfig --list 查看所有运行级别对应的服务
chkconfig --list|grep "3:on" 查看3级别的服务 on表示自动启动
chkconfig sshd off 默认情况下关闭2 3 4 5 级别
清除日志脚本
LOG_DIR = /var/log
ROOT_UID = 0
if ["$UID" -ne "$ROOT_UID"]
then
echo "Must be root to run this script."
exit 1
fi
cd $LOG_DIR || {
echo "Cannot change to necessary directory." > &2
exit 1
}
cat /dev/null > messages && echo "Logs cleaned up."
exit 0
man test
-n 字符串的长度不为0
-z 字符串的长度为0
string1 = string2 判断字符串的长度是否相等
[root@localhost data]
1
[root@localhost data]
1
[root@localhost data]
0
[root@localhost data]
1
[root@localhost data]
0
编写shell脚本 vi menu.sh
执行脚本 sh menu.sh
menu(){
cat << END
1.[install lamp]
2.[install lnmp]
3.[exit]
pls input the num you want:
END
}
menu
read num
[ "$num" = "1" ]&&{
echo "start installing lamp."
[ -x server/scripts/lamp.sh ]|| exit 2
/bin/sh/server/scripts/lamp.sh
exit 0
}
[ "$num" = "2" ]&&{
echo "start installing lnmp."
[ -x server/scripts/lnmp.sh ]|| exit 2
/bin/sh/server/scripts/lnmp.sh
exit 0
}
[ "$num" = "3" ]&&{
echo "byebye"
exit 0
}
echo "Input Error"
exit 1
运算符 | 说明 | 举例 | 单词 |
---|
-eq | 等于 | [ a -eq b ] 返回 false | equal |
-ne | 不等于 | [ a -ne b ] 返回 true | not equal |
-gt | 大于 | [ a -gt b ] 返回 false | greater than |
-lt | 小于 | [ a -lt b ] 返回 true | less than |
-ge | 大于等于 | [ a -ge b ] 返回 false | greater equal |
-le | 小于等于 | [ a -le b ] 返回 true | less equal |
bc命令可以用于整数也可以用于小数计算
[root@local data]
[root@local data]
[root@local data]
3
[root@local data]
0.1
[root@local data]
1+2+3+4+5+6+7+8+9+10 = 55
S[]的基本用法
[root@local data]
[root@local data]
[root@local data]
4
[root@local data]
[root@local data]
7
shell数值运算的方法
expr (()) let bc $[] awk typest
read [参数] [变量名]
read 有两个参数
-p prompt 设置提示信息
-t timeout 设置等待时间(超过时间自动退出)
[root@local data]
pls num33333
[root@local data]
pls num:3333
[root@local data]
pls num:[root@local data]