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变量指定了在执行命令或者脚本时使用的主目录

猜你喜欢

转载自www.cnblogs.com/JYLCSS/p/10545005.html