Linux杂碎2/SHELL

man hier  描述文件系统目录结构
dmesg 检测到的 硬件和启动信息
cat /proc/devices 当前配备的设备
sysctl  -a 显示所有系统限制

 

复制代码
make(){
 echo make4
 return 4
}
show(){
 echo show1
 return 1
}
make
echo $?
show
echo $?

执行结果:

make4
4
show1
1

复制代码

 

复制代码
检测某地址是否可通
ping -c 1 $1 |grep "100% packet loss"|wc -l

ping -c 1 $1  //只ping一次

if [ $? == 0 ];then

echo yes

else

echo no

fi

复制代码

 

关于 dd 命令  

dd if=/dev/zero of=/home/mnt/disk  bs=1M count=10   

/dev/zero   是一个字符设备,会不断返回零值字节。 

块大小可以使用的单位  k  M  G

一个命令结果的查询

 if netstat -tnpl | grep -q nginx;then
       echo "$NAME (pid ) already running."
       exit 1
 fi

一个命令是否存在的查询

command_exists() {
        command -v "$@" > /dev/null 2>&1
}

一个段落文字的输出

复制代码
cat <<-EOF

        If you would like to use Docker as a non-root user, you should now consider
        adding your user to the "docker" group with something like:

          sudo usermod -aG docker $your_user

        Remember that you will have to log out and back in for this to take effect!

EOF
复制代码

   一个命令的结果

 if netstat -tnpl | grep -q nginx;then          
    echo "$NAME (pid ) already running."          
    exit 1       
 fi

true命令,什么都不做,设置 退出码为0

false命令,什么都不做,设置 退出码为1

fuer  命令。

复制代码
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.

fuser -um /dev/sda2
显示使用某个文件的进程 这个命令在umount的时候很有用,可以找到还有哪些用到这个设备

fuser -m -k -i readme.txt
杀掉打开 readme.txt文件的进程

fuser -v -n tcp 80
查看哪些进程使用 tcp 80端口
复制代码

 一个awk的用法,ps -ef  获取第一列是mysql(user) 的进程pid号

ps -ef |grep -v grep |awk '{if($1=="mysql"){print $2}}'

 给PATH变量加路径

[root@localhost home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost home]# PATH=$PATH:/home/local
[root@localhost home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/local

 获取参数选项

https://segmentfault.com/a/1190000010171506

复制代码
#!/bin/bash

usage() {
    echo "Usage:"
    echo "  test.sh [-j JAVA_DIR] [-m MAVEN_DIR]"
    echo "Description:"
    echo "    JAVA_DIR, the path of java."
    echo "    MAVEN_DIR, the path of maven."
    exit -1
}

upload="false"

while getopts 'h:j:m:u' OPT; do
    case $OPT in
        j) JAVA_DIR="$OPTARG";;
        m) MAVEN_DIR="$OPTARG";;
        u) upload="true";;
        h) usage;;
        ?) usage;;
    esac
done

echo $JAVA_DIR
echo $MAVEN_DIR
echo $upload
复制代码

 信号的捕捉和处理

复制代码
[root@localhost ~]# cat 1.sh 
#!/bin/bash

trap "echo 'Sorry! I have trapped Ctrl-C'" SIGINT
for (( i = 0; i < 10; i++ )); do
    echo hello${i}
    sleep 1
done

[root@localhost ~]# sh 1.sh
hello0
hello1
^CSorry! I have trapped Ctrl-C
hello2
hello3
^CSorry! I have trapped Ctrl-C
hello4
hello5
hello6
hello7
hello8
^CSorry! I have trapped Ctrl-C
hello9


#!/bin/bash


make(){
echo "we have trapped ctrl + c"
}


trap make SIGINT
for (( i = 0; i < 10; i++ )); do
echo hello${i}
sleep 1
done

 
复制代码

 捕获一个脚本的推出,trap 后面加上EXIT 就行

复制代码
[root@localhost ~]# cat 1.sh 
#!/bin/bash

make(){
  echo "we exit"
}

trap make EXIT
echo "start"
sleep 1
echo "end"

[root@localhost ~]# sh 1.sh 
start
end
we exit
复制代码
复制代码
[root@localhost ~]# cat 1.sh 
#!/bin/bash

make(){
  echo "we exit"
}

trap make EXIT
echo "start"
sleep 1
echo "end"

[root@localhost ~]# sh 1.sh 
start
end
we exit
复制代码

 trap -- SIGINT (--、- 都可以恢复信号的默认行为)

 

文件内容赋值变量

read _RET < "${path}" || _RET="$ERROR"

while read line 
do 
    cmd 
done <FILE

 

posted on   思此狂  阅读(175)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示