栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

shell编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell编程

dpkg相关命令
dpkg -i  安装本地文件上存在的软件包
dpkg -r  移除一个已经安装的软件包
​
apt相关命令
软件源配置文件 :/etc/apt/sources.list
更新源后需要 apt-get update 才有效
​
apt-get :
install 安装软件包
remove 卸载软件包
clean  删除缓存区所有已下载的文件
check  检查系统中依赖关系的完整性
​
apt-cache:
show 获取二进制软件包的详细描述信息
search  搜索相关字符的软件包
depends  获取软件包的依赖信息
policy  获取软件包当前的安装状态
​
​
​
shell
shell就是linux内核的一个外层保护工具,并负责完成用户与内核之间的交互
​
shell脚本:若干命令的集合
​
命令格式:
​
指令 选项 {参数.....}
​
    1、三要素之间需要空格隔开
​
    2、多个命令在一行书写,需要用分号隔开
​
    3、反斜杠 换行继续前行命令
​
shell中的特殊字符
file*        匹配以file开头的文件
file?       匹配文件,‘?’代替一个字符
file【abc】  匹配【】中任意一个字符
file[a-z]    匹配 a到z 所有文件
​
​
管道  |
前面的输出作为后面的输入
​
重定向
> file    将file文件重定向为输出源,新建模式
>>file    将file文件重定向为输出源,追加模式
或&>    将由命令产生的错误信息输入到
​
命令置换    ` `
将一个命令的输出作为另一个命令的参数
​
sudo shutdown -h now/+40  立即(40分钟后)关机
su  切换到超级用户
su  usr  切换到具体普通用户
​
id  查看当前用户 id
​
​
​
linux文件系统
目前ext4是Linux系统广泛使用的一种文件格式,
最大特点是日志文件系统,可以将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪
linux的文件组织模式犹如一颗倒置的树
​
绝对路径:以/根目录为起点
相对路径:除根目录以外的起点
​
​
文件类型
-:普通文件:指ASCII文本文件、二进制可执行文件,以及硬链接
b:块设备文件:块输入、输出设备文件
c:字符设备文件:原始输入、输出设备文件,每次io操作仅传送一个字符
d:目录文件:包含文件或子目录
l:符号链接文件:只保留了文件地址,而不是文件本身
p:命名管道:一种进程通信机制,用于进程间通讯的暂时文件
s:套接字:用于进程间通信,两台计算机间通讯的应用程序接口
硬链接与软链接
软链接:ln -s  源文件  链接名 
硬链接:ln 源文件  链接名
​
软连接及符号链接文件只是保存了源文件的路径,最好用绝对路径
硬链接,类似一个指针,同源文件都指向源文件对应的磁盘空间。
​
​
压缩与解压

gzip       gunzip      .gz   只能压缩一个文件,无法将多个文件压缩为一个文件  gzip 选项 file
bzip2      bunzip2     .bz2   
zip        unzip       .zip
​
tar  可以把多个文件打包,也可以打包并压缩
tar -cf  file.tar   file  把file目录下的文件打包成一个file。tar文件
tar -cjf  file.tar file  把file目录下的文件打包成一个file.tar文件,并压缩成file.tar.bz(bzip2)
​
tar -czf  file.tar file  把file目录下的文件打包成一个file.tar文件,并压缩成file.tar.gz(gzip)
tar -tvf  file.tar.gz  查看包内详细内容
​
​
解压
​
tar -xjf
tar -xzf


shell编程
shell脚本语言是解释性语言,其本质就是shell命令的有序集合
shell编程的基本过程
1、建立shell文件 touch 、vim、 vi
2、赋予文件执行权限:chmod
3、执行shell文件
./shell  ,bash shell,
shell变量
shell变量不支持数据类型,任何赋值都解释为字符串
shell变量不用定义申明,可以直接用
删除变量:unset 变量名
$0.....命令行参数
$#   命令行参数个数
$*  $@命令行所有参数
$? 前一个命令退出状态
$$ 正在执行进程id

HOME  用户主目录
IFS 默认空格 tab及换行符
PATH shell搜索路径
PS1 PS2  默认提示符$ 及换行提示符>
TERM 终端类型

shell程序和语句
说明性语句  以#开头的语句,不被执行,除文件开头#!/bin/bash第一句,表名用什么shell执行该文件
功能性语句:任意shell命令、用户程序或其它shell程序
结构性语句: 条件测试语句、多路分支语句、循环语句、循环控制语句

常用功能性语句
read var
read从标准输入读一行并赋值给var

read var1 var2 var3
把第一个单词给var1,第二个单词给var2,其余所有给var3

如果无数据输入,直到数据到来或被终止执行



expr
算术命令expr主要用于进行简单的整数运算。
test 语句可以测试三种对象:字符串、整数、文件
结构语句

if  表达式
then
命令表
fi



if 表达式
then 
命令表1
else
命令表2
fi

test命令使用
1、
test $name  -eq  $1
echo $?

2、
if  [ -f $file name ]
then
命令表
fi


3、 
if test -f $filename
then 
命令表
fi


多路分支语句

case  字符串变量 in
	模式1)
	命令表
	;;
	*)
	命令表
	
esac

循环语句
for 变量名  in 单词表
do
命令表
done

while 命令表达式
do
命令表
done


循环控制语句
break n  跳出n层
continue 马上转到最近一层循环语句下一轮循环上
continue n  转到最近n层循环语句的下一轮循环上

shell函数
1、函数在调用前必须先定义
2、调用程序可传递参数给函数,函数可用return语句把运行结果返回给调用程序
3、
函数只在当前shell中起作用,不能输出到子shell中
定义格式
function_name(){


}
调用格式
1
value_name=function_name [ arg1 arg2]

2
function_name [ arg1 arg2 ]
echo $?

函数变量作用域
全局变量
局部变量:
local name
自己写的shell脚本

1、使用for循环实现创建100个空白文件 file*.txt
#!/bin/bash
for var in {1..100}
do
    touch "file$var.txt"

done
2、根据命令行参数决定创建还是删除文件
echo "请输入文件名、创建(1)或 删除(2),并用空格隔开."
read num1 num2

if [ $num2 -eq 1 ] 
then 
    test -f $num1
    if [ $? -eq 0 ] 
    then
        echo "文件存在,程序退出。"
        exit
    elif [ $? -eq 1 ] 
    then
        touch "$num1"
    fi  
fi

    if [ $num2 -eq 2 ] 
    then
        test -f $num1
         m=$?
        if [ m -eq 1  ]
        then
            echo "文件不存在,程序退出。"
            exit
        elif [ m -eq 0 ] 
        then
            rm "$num1"
        fi
    fi 
 
3、使用while循环打印1-100所有的偶数 
i=1
while [ $i -le 100 ] 
do
    if [ `expr $i % 2` -eq 0 ] 
    then
        echo -n " $i "  
    fi  
    i=`expr $i + 1 `

done
echo ""
4、打印如下图形
  *
   ***
  *****
 *******
*********

#!/bin/bash

echo "请输入大小:"
read n
i=0
j=0

while [ $i -le $n ]
do

    x=$((RANDOM%6+31 ))
    j=0 
    while [ $j -le `expr $n - $i` ]
    do
        echo -ne " "
        j=`expr $j + 1`
    done

    j=0 
    while [ $j -le `expr 2 * $i` ]
    do
        #       x=$((RANDOM%8+30 ))
        echo -ne "33[0;49;"$x"m*33[0m"

        j=`expr $j + 1`
    done
    echo ""


    i=`expr $i + 1`
done
5、输入一个用户名判断该用户是否存在 检测/etc/passwd文件
#!/bin/bash


echo "请输入要查找的用户名:"

read usr 
grep $usr /etc/passwd
#echo $?
if [ $? -eq 0 ] 
then
    echo "用户存在。"
    exit
elif [ $? -eq 1  ]
then
    echo "用户不存在。"
fi
~   

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号