工作积累最常用的shell脚本编程基础,一文扫盲流程控制语句
gudong366 2025-07-23 14:55 4 浏览
4.1 条件选择
4.1.1 选择执行if语句
格式:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else
COMMANDS; ] fi
单分支
if 判断条件;then
条件为真的分支代码
fi
双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if 判断条件1; then
条件1为真的分支代码
elif 判断条件2; then
条件2为真的分支代码
elif 判断条件3; then
条件3为真的分支代码
...
else
以上条件都为假的分支代码
fi
说明:
多个条件时,逐个条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
if 语句可嵌套
范例:
#根据命令的退出状态来执行命令
if ping -c1 -W2 station1 &> /dev/null; then
echo 'station1 is UP'
elif grep -q 'station1' ~/maintenance.txt; then
echo 'station1 is undergoing maintenance'
else
echo 'station1 is unexpectedly DOWN!'
exit 1
fi
范例:
[root@centos8 ~]#cat if_bmi.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2019-12-25
#FileName: if_bmi.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
read -p "请输入身高(m为单位): " HIGH
if [[ ! "$HIGH" =~ ^[0-2].?[0-9]{,2}$ ]];then echo "输入错误的身高"; exit 1; fi
read -p "请输入体重(kg为单位): " WEIGHT
if [[ ! "$WEIGHT" =~ ^[0-9]{1,3}$ ]];then echo "输入错误的体重"; exit 1; fi
BMI=`echo $WEIGHT/$HIGH^2|bc`
if [ $BMI -le 18 ] ;then
echo "你太瘦了,多吃点"
elif [ $BMI -lt 24 ] ;then
echo "身材很棒!"
else
echo "你太胖了,注意节食,加强运动"
fi
4.1.2 条件判断case语句
格式:
case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;
esac
case支持glob风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[]:指定范围内的任意单个字符
|: 或,如 a或b
范例:
[root@centos8 script40]#cat case_yesorno.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2019-12-25
#FileName: case_yesorno.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
read -p "Do you agree(yes/no)? " INPUT
INPUT=`echo $INPUT | tr 'A-Z' 'a-z'`
case $INPUT in
y|yes)
echo "You input is YES"
;;
n|no)
echo "You input is NO"
;;
*)
echo "Input fales,please input yes or no!"
esac
[root@centos8 script40]#cat case_yesorno2.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2019-12-25
#FileName: case_yesorno.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
read -p "Do you agree(yes/no)? " INPUT
case $INPUT in
[yY]|[Yy][Ee][Ss])
echo "You input is YES"
;;
[Nn]|[Nn][Oo])
echo "You input is NO"
;;
*)
echo "Input fales,please input yes or no!"
esac
练习
- 编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
- 编写脚本 yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
- 编写脚本 fifiletype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
- 编写脚本 checkint.sh,判断用户输入的参数是否为正整数
4.2 循环
4.2.1 循环执行介绍
将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件
重复运行次数
循环次数事先已知
循环次数事先未知
常见的循环的命令:for, while, until
4.2.2 for循环
格式1:
for 变量名 in 列表;do
循环体
done
执行机制:
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
for循环列表生成方式:
- 直接给出列表
- 整数列表:
{start..end}
$(seq [start [step]] end)
- 返回列表的命令:
$(COMMAND)
- 使用glob,如:*.sh
- 变量引用,如:$@,$#
范例: 九九乘法表
#!/bin/bash
for i in {1..9};do
for j in `seq $i`;do
echo -e "${j}x${i}=$[i*j]\t\c"
done
echo
done
范例:生产案例
[root@centos8 ~]#cat /data/script40/for_rename.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: /data/script40/for_rename.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
DIR=/data/test
cd $DIR
for FILE in * ;do
PRE=`echo $FILE | sed -nr 's/(.*)\.([^.]+)$/\1/p'`
# SUFFIX=`echo $FILE | sed -nr 's/(.*)\.([^.]+)$/\2/p'`
mv $FILE $PRE.bak
done
范例:M37期面试题,要求将目录YYYY-MM-DD/中所有文件,移动到YYYY-MM/DD/下
#1 yyyy-mm-dd10.sh 创建YYYY-MM-DD,当前日期一年前365天到目前共365个目录,里面有10个文件,$RANDOM.log
[root@centos8 ~]#cat dir20.sh
#!/bin/bash
for i in {1..365};do
DIR=`date -d "-$i day" +%F`
mkdir $DIR
cd $DIR
for n in {1..10};do
touch $RANDOM.log
done
cd ..
done
#2 移动到YYYY-MM/DD/下
#!/bin/bash
#
DIR=/data/test
cd $DIR
for DIR in * ;do
YYYY_MM=`echo $DIR |cut -d"-" -f1,2`
DD=`echo $DIR |cut -d"-" -f3`
[ -d $YYYY_MM/$DD ] || mkdir -p $YYYY_MM/$DD &> /dev/null
mv $DIR/* $YYYY_MM/$DD
done
格式2
双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使bash Shell实现C语言风格
的变量操作
I=10;((I++))
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do
循环体
done
说明:
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断
范例:
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: for_sum2.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
for((sum=0,i=1;i<=100;sum+=i,i++));do
true
done
echo $sum
范例:九九乘法表
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: for_99_2.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
for ((i=1;i<10;i++));do
for((j=1;j<=i;j++));do
echo -e "${j}x${i}=$[i*j]\t\c"
done
echo
done
练习:用 for 实现
- 判断/var/目录下所有文件的类型
- 添加10个用户user1-user10,密码为8位随机字符
- /etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34fifilename stop S66fifilename start
- 编写脚本,提示输入正整数n的值,计算1+2+…+n的总和
- 计算100以内所有能被3整除的整数之和
- 编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态
- 打印九九乘法表
- 在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html
- 打印等腰三角形
10、猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少?
4.2.3 while循环
格式:
while CONDITION; do
循环体
done
说明:
CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环,因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件:CONDITION为true
退出条件:CONDITION为false
范例:
#配置发邮件的邮箱
[root@centos8 ~]#cat .mailrc
set from=29308620@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=29308620@qq.com
set smtp-auth-password=esvnhbnqocirbicf
set smtp-auth=login
set ssl-verify=ignore
[root@centos8 ~]#cat while_diskcheck.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: while_diskcheck.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
WARNING=80
while :;do
USE=`df | sed -rn '/^\/dev\/sd/s#.* ([0-9]+)%.*#\1#p' |sort -nr|head -n1`
if [ $USE -gt $WARNING ];then
echo Disk will be full from `hostname -I` | mail -s "disk warning"
29308620@qq.com
fi
sleep 10
done
练习:用while实现
- 编写脚本,求100以内所有正奇数之和
- 编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态,并统计在线和离线主机各多少
- 编写脚本,打印九九乘法表
- 编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值
- 编写脚本,实现打印国际象棋棋盘
- 后续六个字符串:efbaf275cd、4be9c40b8b、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令: echo $RANDOM|md5sum|cut –c1-10后的结果,请破解这些字符串对应的RANDOM值
无限循环
while true; do
循环体
done
4.2.4 until循环
格式:
until CONDITION; do
循环体
done
说明:
进入条件: CONDITION 为false
退出条件: CONDITION 为true
无限循环
until false; do
循环体
Done
4.2.4 循环控制语句 continue
continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层
格式:
while CONDITION1; do
CMD1
...
if CONDITION2; then
continue
fi
CMDn
...
done
范例:
[root@centos8 script40]#cat continue_for.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: continue_for.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
for ((i=0;i<10;i++));do
for((j=0;j<10;j++));do
[ $j -eq 5 ] && continue 2
echo $j
done
echo ---------------------------
done
[root@centos8 script40]#bash continue_for.sh
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
4.2.5 循环控制语句 break
break [N]:提前结束第N层整个循环,最内层为第1层
格式:
while CONDITION1; do
CMD1
...
if CONDITION2; then
break
fi
CMDn
...
done
范例:
[root@centos8 script40]#cat break_for.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: continue_for.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
for ((i=0;i<10;i++));do
for((j=0;j<10;j++));do
[ $j -eq 5 ] && break
echo $j
done
echo ---------------------------
done
范例:
[root@centos8 script40]#cat break_for.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: continue_for.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
for ((i=0;i<10;i++));do
for((j=0;j<10;j++));do
[ $j -eq 5 ] && break 2
echo $j
done
echo ---------------------------
done
[root@centos8 script40]#bash break_for.sh
0
1
2
3
4
范例:
[root@centos8 script40]#cat menu.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: menu.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
sum=0
COLOR='echo -e \033[1;31m'
COLOR2='echo -e \033[1;32m'
END="\033[0m"
while true;do
echo -e "\033[33;1m\c"
cat <<EOF
1) 鲍鱼
2) 满汉全席
3) 龙虾
4) 燕窝
5) 帝王蟹
6) 退出
EOF
echo -e "\033[0m"
read -p "请点菜: " MENU
case $MENU in
1|4)
$COLOR'菜价: $10'$END
let sum+=10
;;
3|5)
$COLOR'菜价: $20'$END
let sum+=20
;;
2)
$COLOR'菜价: $1000'$END
let sum+=1000
;;
6)
$COLOR2"你点的菜总价格是 $sum"$END
break
;;
*)
echo "点错了,没有这道菜"
;;
esac
$COLOR2"你点的菜总价格是 $sum"$END
done
范例:
[root@centos8 script40]#cat guess.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: guess.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
NUM=$[RANDOM%10]
while read -p "输入 0-9 之间的数字: " INPUT ;do
if [ $INPUT -eq $NUM ];then
echo "恭喜你猜对了!"
break
elif [ $INPUT -gt $NUM ];then
echo "数字太大了,重新猜!"
else
echo "数字太小了,重新猜!"
fi
done
4.2.6 循环控制 shift 命令
shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。
参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍历位置参量列表时,常用到 shift
范例:doit.sh
#!/bin/bash
# Name: doit.sh
# Purpose: shift through command line arguments
# Usage: doit.sh [args]
while [ $You can't use 'macro parameter character #' in math mode# -gt 0 ] # or
(( $# > 0 ))
do
echo $*
shift
done
./doit.sh a b c d e f g h
范例:示例:shift.sh
#!/bin/bash
#step through all the positional parameters
until [ -z "$1" ]
do
echo "$1"
shift
done
echo
./shfit.sh a b c d e f g h
范例:
[root@centos8 script40]#vim shift_batch_user.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: shift_batch_user.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
if [ $# -eq 0 ];then
echo "Usage: `basename $0` user1 user2 ..."
exit
fi
while [ "$1" ];do
if id $1 &> /dev/null;then
echo $1 is exist
else
useradd $1
echo "$1 is created"
fi
shift
done
echo "All user is created"
[root@centos8 script40]#bash shift_batch_user.sh
Usage: shift_batch_user.sh user1 user2 ...
[root@centos8 script40]#bash shift_batch_user.sh tom alice jack
tom is exist
alice is exist
jack is created
All user is created
练习
- 每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本
- 随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出
- 用文件名做为参数,统计所有参数文件的总行数
- 用二个以上的数字为参数,显示其中的最大值和最小值
4.2.7 while read 特殊用法
while 循环的特殊用法,遍历文件或文本的每一行
格式:
while read line; do
循环体
done < /PATH/FROM/SOMEFILE
说明:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line
范例:
[root@centos8 ~]#echo magedu | read X ; echo $X
[root@centos8 ~]#echo magedu | while read X ; do echo $X;done
magedu
[root@centos8 ~]#echo magedu | { read X ; echo $X; }
magedu
[root@centos8 ~]#echo magedu | ( read X ; echo $X )
magedu
[root@centos8 ~]#echo mage wang zhang | ( read X Y Z; echo $X $Y $Z )
mage wang zhang
[root@centos8 ~]#echo mage wang zhang | while read X Y Z; do echo $X $Y $Z;done
mage wang zhang
范例:
cat while_read_diskcheck.sh
#!/bin/bash
WARNING=80
MAIL=root@wangxiaochun.com
df |sed -nr "/^\/dev\/sd/s#^([^ ]+) .* ([0-9]+)%.*#\1 \2#p"|while read DEVICE
USE;do
if [ $USE -gt $WARNING ] ;then
echo "$DEVICE will be full,use:$USE" | mail -s "DISK WARNING" $MAIL
fi
done
范例:
cat while_read_check_dos.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: while_read_check_dos.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
lastb | sed -rn '/ssh:/s@.* ([0-9.]{1,3}{3}[0-9]{1,3}) .*@\1@p'|sort |uniq -c
|while read count ip ;do
if [ $count -gt 3 ];then
iptables -A INPUT -s $ip -j REJECT
fi
done
范例:
cat while_read_passwd.sh
#!/bin/bash
#
#********************************************************************
#Author: wangxiaochun
#QQ: 29308620
#Date: 2020-01-03
#FileName: while_read_passwd.sh
#URL: http://www.magedu.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
while read line ;do
if [[ "$line" =~ /sbin/nologin$ ]] ;then
echo $line | cut -d: -f1,3
fi
done < /etc/passwd
4.2.8 select 循环与菜单
格式:
select variable in list ;do
循环体命令
done
说明:
- select 循环主要用于创建菜单,按数字顺序排列的菜单项显示在标准错误上,并显示 PS3 提示符,等待用户输入
- 用户输入菜单列表中的某个数字,执行相应的命令
- 用户输入被保存在内置变量 REPLY 中
- select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止脚本。也可以按ctrl+c 退出循环
- select 经常和 case 联合使用
- 与 for 循环类似,可以省略 in list,此时使用位置参量
范例:
cat select.sh
#!/bin/bash
#
sum=0
PS3="请点菜(1-6): "
select MENU in 北京烤鸭 佛跳墙 小龙虾 羊蝎子 火锅 点菜结束;do
case $REPLY in
1)
echo $MENU 价格是 100
let sum+=100
;;
2)
echo $MENU 价格是 88
let sum+=88
;;
3)
echo $MENU价格是 66
let sum+=66
;;
4)
echo $MENU 价格是 166
let sum+=166
;;
5)
echo $MENU 价格是 200
let sum+=200
;;
6)
echo "点菜结束,退出"
break
;;
*)
echo "点菜错误,重新选择"
;;
esac
done
echo "总价格是: $sum"
本文为《企业级shell脚本编程实战》系列教程第四部分,作者为Linux段子手王晓春老师,上一篇见文末扩展链接,后续会分享更多shell脚本编程知识,感兴趣的朋友可以关注下!
【电子版领取见下图!!】
相关推荐
- Linux系统dev和proc目录详解(linux中dev目录干嘛的)
-
简介:Linux系统里的/dev和/proc目录那可是相当重要的系统文件。在Linux系统中,/dev目录专门用来存放设备文件。不光有设备文件,系统里还有好多特殊功能也是通过设备的形式...
- 21、linux命令-lsof(linux lsof命令详解)
-
21、linux命令-lsof文章目录1.命令简介2.命令格式3.选项说明4.输出字段说明5.常用示例参考文献1.命令简介lsof(listopenfiles)用于查看进程打开的文件,是十分方便的...
- Linux Namespace原理(linux常见的namespace类型有哪些)
-
LinuxNamespace是内核提供的轻量级虚拟化技术,通过隔离全局系统资源(如进程树、网络栈、挂载点等)实现进程间的环境隔离。其内核实现原理可分为以下核心模块:一、Namespace内核数据...
- Linux必学技能 | 17个案例带运维小白快速精通Awk命令,拿来即用
-
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行地读入,以空格为默认分隔符将每行切片,切开的部分再进行各种...
- 重新分配扇区计数警告可以修复吗(重新分配扇区计数警告有什么影响)
-
当硬盘的“重新分配扇区计数(ReallocatedSectorsCount)”出现警告时,意味着硬盘可能已出现物理损坏隐患。不过,不同情况下仍有相应的应对策略,以下为你详细解读。“重新分配扇区...
- Linux分区页框分配器之水位(linux分区调整工具)
-
我们讲页框分配器的时候讲到了快速分配和慢速分配,其中伙伴算法是在快速分配里做的,忘记的小伙伴我们再看下:staticstructpage*get_page_from_freelist(gfp_t...
- Linux使用中的一些问题及解决过程(记录1)
-
1.在Linux虚拟中安装dhcpv6后,Server发送的dhcpv6advertise报文中的udp校验和出错,导致用户不能获取IPv6地址修正方法:将该接口的校验关闭ethtool--of...
- 图文详解Linux的IO模型和相关技术
-
阻塞IO模型(BlockingI/O)Linux内核一开始提供了read与write阻塞式操作。当客户端连接时,会在对应进程的文件描述符目录(/proc/进程号/fd)生成对应的文件描述符...
- iptables -m connlimit导致内存不足
-
题描述:Udp高频攻击导致slabkmalloc-64持续申请,导致内存不足。A7低版本内核无该问题,MA35/AM62在kernel6版本上也无该问题,此问题只出在A7kernel6上。问...
- linux 汇编2-关于寄存器及系统调用
-
后续主要在linux操作系统下学习基于X86的32位汇编语言32位的X86处理器中有8个32位的通用寄存器(EAX、EBX、ECX、EDX、ESI、)。EDI、ESP、EBP),由于历史的原因,EAX...
- Linux NameSpace的机制(linux namespace是一种资源限制方案)
-
一、Namespace核心原理隔离类型Linux支持6种Namespace:PID:隔离进程ID,不同Namespace的进程可拥有相同PID。Network:隔离网络设备、IP地址、端口等。Moun...
- Linux信号量(2)-POSIX 信号量(linux信号量与pv操作实验)
-
上一章,讲述了SYSTEMV信号量,主要运行于进程之间,本章主要介绍POSIX信号量:有名信号量、无名信号量。POSIX信号量POSIX信号量进程是3种IPC(Inter-ProcessComm...
- Linux文本三剑客:grep/sed/awk组合技,解决90%文本处理难题
-
一、grep:文本世界的"探照灯"当你面对GB级日志文件大海捞针时,grep就是那盏精准的探照灯。--color=auto参数能让匹配内容瞬间穿上"红马甲",在黑底白字...
- AWK 语法速查表(Linux 文本处理工具实用指南)
-
本文适用于系统管理员、运维工程师、开发人员以及数据处理人员,提供速查+示例的格式,方便在使用AWK时快速查阅。1.基本结构awk'条件{动作}'文件名条件:可以是模式匹...
- linux/unix下如何统计文件行数(linux统计文件行数,单词数,字节数)
-
在日志分析过程中,经常会遇到文件行计数的情况。它可以帮助我们分析业务数据。那么在Linux中如何使用linux命令行统计文件行数呢?使用linuxwc命令统计文件行数wc-ltest.txt使...
- 一周热门
- 最近发表
-
- Linux系统dev和proc目录详解(linux中dev目录干嘛的)
- 21、linux命令-lsof(linux lsof命令详解)
- Linux Namespace原理(linux常见的namespace类型有哪些)
- Linux必学技能 | 17个案例带运维小白快速精通Awk命令,拿来即用
- 重新分配扇区计数警告可以修复吗(重新分配扇区计数警告有什么影响)
- Linux分区页框分配器之水位(linux分区调整工具)
- Linux使用中的一些问题及解决过程(记录1)
- 图文详解Linux的IO模型和相关技术
- iptables -m connlimit导致内存不足
- linux 汇编2-关于寄存器及系统调用
- 标签列表
-
- linux一键安装 (31)
- linux运行java (33)
- ln linux (27)
- linux 磁盘管理 (31)
- linux 内核升级 (30)
- linux 运行python (28)
- linux 备份文件 (30)
- linux 网络测试 (30)
- linux 网关配置 (31)
- linux jre (32)
- linux 杀毒软件 (32)
- linux语法 (33)
- linux博客 (33)
- linux 压缩目录 (37)
- linux 查看任务 (32)
- 制作linux启动u盘 (35)
- linux 查看存储 (29)
- linux乌班图 (31)
- linux挂载镜像 (31)
- linux 软件源 (28)
- linux题目 (30)
- linux 定时脚本 (30)
- linux 网站搭建 (28)
- linux 远程控制 (34)
- linux bind (31)