命令<文件 文件作为命令的输入
命令<<分界符 从输入中读入,直到遇到分界符
命令<文件1>文件2 以文件1为输入并输出到文件2
命令>文件 覆盖输出重定向 >>追加 2>覆盖错误输出 2>>追加
&> &>> 共同追加写入
| 管道操作符 将前一个的输出当作后一个的输入
通配符 *任意字符 *单个字符 [a-Z] [[:alpha:]] [[:upper:]] [[:lower:]] [[:digit:]] [[:alnum:]]字母+数字 [[:punct:]]标点符号 {x,x,x}选择其一
转移字符 \将后续变量变为单纯字符 ''将其中所有变量变成单纯字符串 ""保留其中变量属性不做转义 ` `执行其中命令并返回结果
举例:
[root@linuxprobe ~]# PRICE=5
[root@linuxprobe ~]# echo "Price is $PRICE"
Price is 5
环境变量 HOME 主目录 SHELL Shell解释器名称 HISTSIZE 输出的历史命令记录条数 RANDOM生成一个随机数字 PATH 定义解释器搜索用户执行命令的路径 PATH设定解释器搜索所执行命令的路径,找到其所在位置
export 将变量提升为全局变量 unset取消
vim
三种模式
命令模式:控制光标移动,可对文本进行复制,粘贴,删除,查找等功能
输入模式:正常文本录入
末行模式:保存或退出文档,以及设置编辑环境
输入《———》命令《——》末行 按esc返回命令模式 a,i,o进入输入 :进入末行
命令模式下的命令: dd删除/剪切所在整行 5dd删除5行 yy复制整行 yy5 n显示搜索命令定位到的下个字符串
N显示上个 u撤销上一步操作 p将之前删除/复制的黏贴到光标后
末行模式下的命令::w保存 :q退出 :q!强制退出(放弃修改) :wq!强制保存退出
:set nu显示行号 :set nonu不显示行号 :命令 执行命令 :整数 跳转到该行
:s/one/two 将所在行的第一个one改成two
:s/one/two/g 将所在行所有one改成two
:%s/one/two/g 将全文one改成two
?字符串 自下至上搜索 /字符串 自上至下
输入模式 a光标后一位进入输入模式 i光标当前位置 o光标下创建空行进入
shell两种工作模式 交互式和批处理
#! 使用哪种shell解释器
#注释
接受参数 $0 sh名字 $#参数个数 $*全部参数 $n第n个参数
判断参数 条件测试 格式: [ 条件表达式 ]
四种测试语句 文件/逻辑/整数值比较/字符串比较
参数 -d是否为目录类型 -e是否存在 -f是否为一般 -r读取权限 -w写入权限 -x执行权限
例子:
[root@linuxprobe ~]# [ -d /etc/fstab ]
[root@linuxprobe ~]# echo $?
1
&&与 第一个语句成功则执行第二个
[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist
||或 失败执行
!非 结果取反
[root@linuxprobe ~]# [ ! $USER = root ] || echo "administrator"
administrator
整数比较运算符 -eq是否等于 -ne是否不大于 -gt是否大于 -lt是否小于 -le是否等于或小于 -ge是否大于或等于
[root@linuxprobe ~]# [ 10 -gt 10 ]
[root@linuxprobe ~]# echo $?
1
字符串比较 = != -z是否为空
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
0
if语句
[root@linuxprobe ~]# vim mkcdrom.sh
#!/bin/bash
DIR="/media/cdrom"
if [ ! -d $DIR ]
then
mkdir -p $DIR
fi
for语句
for x in s
do
命令
done
/dev/null 黑洞
while语句
while
do
命令
(exit退出)
done
case语句
case 变量值 in
模式1)
命令
模式2)
命令
*)
默认
seac
计划任务
一次性任务,长期性任务
一次性任务: at 时间 -f 指定包含命令的任务文件 -q指定新任务名称
-l显示任务列表 -d删除指定任务 -m任务执行后发邮件
atrm 任务序号 删除任务
相差时间执行任务例子:
[root@linuxprobe ~]# at now +2 MINUTE
warning: commands will be executed using /bin/sh
at> systemctl restart httpd
at> 此处请同时按下<Ctrl>+<d>键来结束编写计划任务
job 3 at Wed Oct 14 22:50:00 2020
crontab 指定计划 -e编辑 -u指定用户 -l查看列表 -r删除
参数 分、时、日、月、星期 命令 *占位符
例子
[root@linuxprobe ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
要使用绝对路径
-持续 /间隔