Linux就该这么学--第四章
Posted jylcss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux就该这么学--第四章相关的知识,希望对你有一定的参考价值。
- Vim文本编辑器
Vim是Vi的升级版,升级的功能之一为颜色标注
• 三种模式:
◇ 命令模式(进入编辑器时的模式):控制光标移动,复制粘贴删除查找
◇ 输入模式(命令模式通过a、i、o键进入,通过esc回到命令模式):正常的文本录入
? a :光标后面位置进入
? i :光标当前位置进入
? o:光标的下面再创建一个空行
◇ 末行模式(命令模式通过:进入,通过esc回到命令模式):保存或退出文档,以及设置编辑环境
• 常用命令:
◇ dd 删除(剪切)光标所在行
◇ 5dd 删除(剪切)从光标处开始的5行
◇ yy 复制光标所在整行
◇ 5yy 复制从光标开始的5行
◇ u 撤销上一步的操作
◇ p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
◇ n 显示搜索命令定位到的下一个字符串
◇ N 显示搜索命令定位到的上一个字符串
◇ 在命令模式下,首先执行gg,这里是跳至文件首行,再执行:dG
◇ 末行模式可用命令:
? :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
? ?字符串 从文本中从下至上搜索字符串
? /字符串 从文本中从上至下搜索字符串 - 配置主机名、网卡、yum源
• 配置主机名称:
◇ 修改文件/etc/hostname,然后重启
• 配置网卡信息:
◇ 文件位置:
? /etc/sysconfig/network-scripts/ifcfg-*
◇ 网卡配置文件中的共同参数:
? 设备类型:TYPE=Ethernet
? 地址分配模式:BOOTPROTO=static
? 网卡名称:NAME=eno1
? 是否开机启动:ONBOOT=yes
? IP地址:IPADDR=192.168.10.10
? 子网掩码:NATMASK=255.255.255.0
? 网关地址:GATEWAY=192.168.10.1
? DNS地址:DNS1=192.168.10.1
? MAC地址:HWADDR=00:0c:29:44:7F:DC (可以通过ifconfig或者ip addr命令查看 此选项可以换成uuid)
• 配置yum源
◇ 文件位置:
? /etc/yum.repo.d/*.repo
◇ 参数说明:
? [rhel-medir]:yum源软件仓库唯一标识符,防止与其他库冲突
? name=linuxprobe:yum源软件仓库的名称描述,易于识别仓库用处
? baseurl=file:///*** (or ftp://*** or http://***):仓库提供的方式,注意:文件方式里面有三个///
? enabled=1:yum源是否可用,1可用,0不可用
? gpgcheck=1:设置此源是否需要校验文件,1需要,0不需要
? gpgkey=file:///*** (or ftp://*** or http://***):校验文件位置
◇ 后续操作:
? (本地源) yum clean all && yum makecache
? (网络源)
- yum clean all
- yum makecache
- yum install httpd -y(尝试安装一下,看看好不好使) - 编写shell脚本
• 脚本声明:
◇ #!/bin/bash:使用哪种shell解析器执行该脚本
• 逻辑运算结果,符合为0,不符合为1
◇ 例如:[ $USER = root ],当前登录用户为root,则结果为0,否则为1。
◇ 如果想要当前登录用户为root时,输出为1,则需要非一下 [ ! $USER = root ]
◇ shell终端中的与、或、非
? 命令1 && 命令2 命令1成功执行后才会执行命令2
? 命令1 || 命令2 命令1执行失败后才会执行命令2
? ! 命令 将命令的结果取反
• 文件测试所用参数(使用方法[ -d /etc/fstab ])
◇ -d 是否为目录
◇ -e 文件是否存在
◇ -f 是否为一般文件
◇ -r 当前用户是否有权限读取
◇ -w 当前用户是否有权限写入
◇ -x 当前用户是否有权限执行
◇ -z 测试变量是否被用过,例如[ -z $LANG ],如果返回1,则已经用过,0则代表这个变量没用过
◇ 补充:
$? 可以获取上条指令的返回值,若要显示在终端上,可以使用echo $?
$0 文件名称
$# 参数个数
$* 参数分别是什么
• 可用的整数比较运算符:
◇ -eq 等于
◇ -ne 不等于
◇ -gt 大于
◇ -lt 小于
◇ -le 小于等于
◇ -ge 大于等于
• 常见的字符串比较运算符:
◇ = 比较字符串是否相同
◇ != 比较字符串是否不同
◇ -z 判断字符串是否为空
• 流控制语句
◇ if条件测试语句(then单独一行,那么if后不加分号;then和命令序列同行,也不需要加分号)
? 模式一:
- if 条件测试操作;then
命令序列
fi
? 模式二
- if 条件测试操作;then
命令序列1
else
命令序列2
fi
? 模式三
- if 条件测试操作1;then
命令序列1
elif 条件测试操作2;then
命令序列2
else
命令序列3
fi
◇ for条件循环语句
? for 变量名 in 取值列表
do
命令序列
done
◇ while条件循环语句
? while 条件测试操作
do
命令序列
done
◇ case条件测试语句
? case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
......
*)
默认命令序列
esac
• 命令补充
◇ ping [参数] [IP地址]:测试网络是否联通
? 参数:
- -c 尝试次数
- -i 每个数据包的发送间隔
- -W 定义等待超时时间
◇ read [参数] [变量]:获取用户输入
? 参数:
- -p 要显示的文字
- -t 设置等待输入的秒数
- -s 隐藏方式读取(输入密码是使用)
? 例子:
- 基本读取
→ echo -n "Enter your name: "
read name
#生成提示的echo命令使用了-n选项。该选项不会在字符串末尾输出换行符,允许脚本用户紧跟其后输入数据,而不是下一行。这让脚本看起来更像表单。
→ read -p "Please enter your age: " age
→ read -p "Enter your name: " first last
输入:Enter your name: Rich Blum
#read命令会将提示符后输入的所有数据分配给单个变量,要么你就指定多个变量。输入的每个数据值都会分配给变量列表中的下一个变量。如果变量数量不够,剩下的数据就全部分配给最后一个变量。
- 超时
→ read -t 5 -p "Please enter your name: " name
- 隐藏
→ read -s -p "Enter your password: " pass
- 读取文本
→ cat test.txt | while read line
◇ let 算数运算 :执行一个算数运算并将结果赋予一个变量 - 计划任务
• 一次性计划任务
◇ 命令:
? at 时间:交互式设置一次性任务
如果不想使用交互式,可以使用管道符进行参数传递,例如:
echo “systemctl restart httpd” | at 23:30
? at -l:查看已经设置好但是还未执行的任务
? atrm 任务序列号:删除一次性任务
• 周期性计划任务
◇ 命令:
? crontab -e 创建或编辑计划任务
? crontab -l 查看当前计划任务
? crontab -r 删除某条计划任务(全部删除)
? crontab -u 用户名 编辑其他用户任务(如何使用????)
? 格式:
- 分 时 日 月 星期 命令
? 配置文件:
- /etc/crontab
/var/spool/cron/“username”
? 注意事项:
- 使用,来分别表示多个时间段(8,10,12),使用-来表示一段连续的时间(8-12),使用/表示执行任务间隔(*/2)
- “分”字段必须有数值,绝对不能为空或者*;“日”和“星期”字段不能同时使用,否则会发生冲突
- 手动执行成功而crontab不能执行的时候,是执行环境的问题,例如相关路径的设置问题。
解决方案:在代码最前面执行 source /home/user/.bash_profile
- 脚本中涉及文件路径时写全局路径
- 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
- 在crontab中%是有特殊含义的,表示换行的意思。
如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。? 执行环境配置:
- 参数
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
- 解释
SHELL变量指定了系统要使用哪个shell
PATH变量指定了系统执行命令的路径,即使用哪些环境变量
MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户
HOME变量指定了在执行命令或者脚本时使用的主目录
以上是关于Linux就该这么学--第四章的主要内容,如果未能解决你的问题,请参考以下文章