博客
关于我
Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
阅读量:790 次
发布时间:2023-02-03

本文共 3479 字,大约阅读时间需要 11 分钟。

Linux系统配置与脚本指南

环境变量设置

在Linux系统中,环境变量的配置文件通常位于/etc/profile,而用户自定义的环境变量一般存放在~/.bashrc中。为了让修改后的配置文件在不重启系统的情况下生效,可以在终端执行source ~/.bashrc

环境变量目录

系统查找环境变量时,会按照以下顺序依次查找:

/etc/profile/etc/profile.d/*.sh~/.bash_profile~/.bashrc/etc/bashrc

终端欢迎信息

  • 本地终端欢迎信息:存放在/etc/issue文件中,使用\n表示换行。
  • 远程终端欢迎信息:存放在/etc/issue.net文件中,转义符在此文件中不生效。要显示次欢迎信息,需在/etc/ssh/sshd_config中添加Banner /etc/issue.net
  • 登录后的欢迎信息:存放在/etc/motd文件中,无论是本地还是远程终端都会显示。

正则表达式

正则表达式用于匹配特定模式的字符串,常用于grep、awk、sed等命令中。通配符则用于匹配文件名,常用于ls、find等命令,但这些命令不支持正则表达式。

常用正则表达式示例:

  • *:匹配零个或多个任意字符。
  • ^:匹配行首。
  • $:匹配行尾。
  • []:匹配中括号内的任意一个字符。
  • [^]:匹配中括号外的任意一个字符。
  • \:转义符,用于转义特殊字符。
  • \{n\}:匹配前面的字符恰好n次。
  • \{n,m\}:匹配前面的字符n次到m次。

示例命令:

  • grep "a*" test.txt:匹配所有包含"a"的行。
  • grep "aa*" test.txt:匹配至少含有一个"a"的行。

cut命令

cut命令用于提取文件中的特定部分。常用选项包括:

  • -f:指定要提取的字段编号。
  • -d:指定字段分隔符。

示例:

  • cut -f 2 student.txt:提取第二列。
  • cut -d ":" -f 2,3 /etc/passwd:以":"为分隔符提取第二、第三列。

print和printf命令

  • printf:根据格式输出内容。
    示例:printf 'Hello %s\n' $(cat student.txt)
  • print:默认会在输出后添加换行符,且在awk中使用时会自动加上换行符。
    示例:printf 'Hello\n'

awk命令

awk用于处理文本文件,常用语法为awk '条件{动作}' 文件名

示例:

awk 'BEGIN{print "welcome!!!"}{print $2"\t"$3}' student.txtawk -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1"\n"}'cat student.txt | grep -v Name | awk '$6 >= 60 {print $2}'

sed命令

sed用于编辑和处理文本文件,支持多种操作选项。常用选项包括:

  • -n:抑制输出。
  • -i:直接修改文件。
  • a:在当前行后添加内容。
  • i:在当前行前插入内容。
  • d:删除行。
  • p:输出行。
  • s:替换字符串。

示例:

sed -n '2p' /etc/passwdsed '2immm' /etc/passwdsed -e 's/root//g;s/michael/leon/g' /etc/passwd

sort命令

sort用于对文件内容进行排序,常用选项包括:

  • -f:忽略大小写。
  • -n:按数值型排序。
  • -r:反向排序。
  • -t:指定分隔符。
  • -k:指定排序字段范围。

示例:

sort -t ":" -k 3,3 /etc/passwdsort -n -t ":" -k 3,3 /etc/passwd

判断命令

test命令用于判断文件和目录的存在性及属性。常用选项包括:

  • -e:文件或目录存在。
  • -f:文件。
  • -d:目录。
  • -s:文件非空。
  • -r:文件具有读取权限。
  • -z:字符串为空。
  • 整数比较:-eq-gt-lt等。

示例:

[ -d /root ] && echo yes || echo notest -e /root

if、for、case结构

if判断

if [ 条件判断式 ]; then    程序fi

for循环

for i in $(cat ls.log) do    tar -zxf $i > /dev/nulldone

case语句

case $变量名 in    "值1")        程序1        ;;    "值2")        程序2        ;;    *             默认程序        ;;esac

监控磁盘使用率

#!/bin/bashrate=$( df -h | grep /dev/sda5 | awk '{print $5}' | cut -d '%' -f 1 )if [ $rate -ge 80 ]; then    echo '/dev/sda5 is full'fi

备份MySQL数据库

#!/bin/bashntpd ate asia.pool.ntp.org > /dev/nulldate=$(date +%y%m%d)size=$(du -sh /var/lib/mysql)if [ -d /tmp/dbbak ]; then    echo 1 > /dev/null    mkdir /tmp/dbbakfiecho "Date:$date!" >> /tmp/dbbak/dbinfo.txtecho "Size:$size!" >> /tmp/dbbak/dbinfo.txtcd /tmp/dbbaktar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt > /dev/nullrm -rf /tmp/dbbak/dbinfo.txt

判断Apache是否启动

#!/bin/bashdate=$(date +%y%m%d)port=$(nmap -sT 192.168.1.156 | grep tcp | grep http | awk '{print $2}')if [ "$port"=="open" ]; then    echo "$date httpd is ok!" > /tmp/autostart-acc.logelse    /etc/rc.d/init.d/httpd start > /dev/null    echo "$date restart httpd!" > /tmp/autostart-acc.logfi

批量解压缩脚本

#!/bin/bashcd /lamplfor i in $(cat ls.log) do    tar -zxf $i > /dev/nulldonerm -rf /lamp/ls.log

批量添加指定数量的用户

#!/bin/bashread -p "username:" -t 30 nameread -p "number of users:" -t 30 numread -p "password of users:" -t 30 passif [ ! -z $name && ! -z $num && ! -z $pass ]; then    y=$(echo $num | sed 's/[0-9]//g')    if [ -z $y ]; then        for(( i=1; i<=$num; i++ )); do            /usr/sbin/useradd $name$i > /dev/null            echo $pass | /usr/bin/passwd --stdin $name$i > /dev/null        done    fifi

while和until循环

while [ 条件 ]; do    程序doneuntil [ 条件 ]; do    程序done

以上脚本涵盖了Linux系统配置与日常操作的常用命令及实用脚本,适用于日常工作和自动化操作。

转载地址:http://rqzfk.baihongyu.com/

你可能感兴趣的文章
Linux内核创建一个新进程的过程
查看>>
Linux内核参数调优
查看>>
Linux内核学习之道
查看>>
Linux内核架构详解
查看>>
Linux分区方案
查看>>
linux创建普通用户附详解
查看>>
Linux初级阶段学习笔记-本地源YUM配置
查看>>
linux删除乱码文件[转载]
查看>>
linux删除卸载npm,卸载安装node npm (Mac linux )
查看>>
linux删除路由
查看>>
linux加载动态库.so的3种方法
查看>>
linux卸载node
查看>>
linux卸载python模块_以Linux为平台在Python中删除文件和目录(文件夹)的方法
查看>>
Linux卸载和安装mysql:yum方式安装
查看>>
Linux卸载和安装yum
查看>>
linux卸载软件
查看>>
Linux压缩和归档命令的速查表
查看>>
Linux压缩和打包
查看>>
linux压缩和解压缩命令
查看>>
linux压缩解压缩命令:gzip、tar、zip、bzip2
查看>>