![常用shell脚本指令[精辟].doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/22/c6ef9f26-23c3-4475-89ed-06841e17ef46/c6ef9f26-23c3-4475-89ed-06841e17ef461.gif)
![常用shell脚本指令[精辟].doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/22/c6ef9f26-23c3-4475-89ed-06841e17ef46/c6ef9f26-23c3-4475-89ed-06841e17ef462.gif)
![常用shell脚本指令[精辟].doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/22/c6ef9f26-23c3-4475-89ed-06841e17ef46/c6ef9f26-23c3-4475-89ed-06841e17ef463.gif)
![常用shell脚本指令[精辟].doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/22/c6ef9f26-23c3-4475-89ed-06841e17ef46/c6ef9f26-23c3-4475-89ed-06841e17ef464.gif)
![常用shell脚本指令[精辟].doc_第5页](http://file.renrendoc.com/FileRoot1/2020-1/22/c6ef9f26-23c3-4475-89ed-06841e17ef46/c6ef9f26-23c3-4475-89ed-06841e17ef465.gif)
已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常用shell脚本命令1、显示包含文字aaa的下一行的内容: sed -n /aaa/n;p; filename2、删除当前行与下一行的内容: sed -i /aaa/N;d; filename3、 删除当前行与下两行的内容: sed -i /aaa/N;N;d; filename 依次类推,删除三行,则为N;N;N;d;,分析知:N为next4、得出以空格为分割的字符串中单词的个数,即统计个数: awk print NF 如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f 则执行 echo $VALUE | awk print NF 后的结果为65、在linux中建立一个文件与另一文件的链接, 即符号链接 ln -s /var/named/chroot/etc/named.conf named.conf 这要就建立了当前目录的文件named.conf对/var/named/chroot/etc/named.conf 的符号链接。即操作named.conf就意味着操作实际文件/var/named/chroot/etc/named.conf ,这时用ll命令查看的结果如: lrwxrwxrwx 1 root root 32 Mar 22 12:29 named.conf - /var/named/chroot/etc/named.conf 注意:当用sed来通过named.conf来删除一部分信息时,会将符号链接的关系丢掉,即会将named.conf变成一个实际文件。所以 需对实际文件进行删除操作。6、显示指定字符范围内的内容: 如:显示文件test.txt中字符#test begin与#test end之间所有的字符 sed -n /#test begin/,/#test end/p test.txt 或 awk /#test begin/,/#test end/ test.txt在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可 以完成大部分功能了,也就是2/8原则.1. 单引号和双引号的区别单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符 ,不会作变量的引用,直接输出字符窜。请看如下例子: rootlinux # name=HaHa rootlinux # echo $name HaHa rootlinux # myname=$name is wow rootlinux # echo $myname HaHa is wow rootlinux # myname=$name is wow rootlinux # echo $myname $name is wow 从上面例子可以看出,使用了单引号的时候,那么$name只是普通字符,直接输出而已! 2. 逐行读取文件 使用for循环来读取文件 for line in cat file.txt do echo $line done注意:由于使用for来读入文件里的行时,会自动把空格和换行符作为一样分隔符,如果行里有空格的时候,输出的结果会很乱,所以 只适用于行连续不能有空格或者换行符的文件 使用while循环读取文件 cat file.txt |while read line do echo $line done 或者: while read line do echo $line done file.txt注意:由于使用while来读入文件里的行时,会整行读入,不会关注行的内容(空格.),所以比for读文件有更好的适用性, 推荐使用while循环读取文件3. bash shell 脚本中常用隐含变量$0当前执行的脚本或者命令名称$1-$9代表参数的位置. 举例 $1 代表第一个参数.$#脚本调用的参数的个数$所有参数的内容$*所有参数的内容$当前运行脚本的进程号$?命令执行后返回的状态$!后台运行的最后一个进程号注意: $? 用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错) $ 变量最常见的用途是用做暂存文件的名字以保证暂存文件不会重复。 $* 和 $ 如果输出是一样的,但是在使用for循环,在使用 双引号()引用时 $* 会输出成一个元素 而 $ 会按照每个参数是一个元素方式输出 请看测试例子 #cat test.sh #!/bin/sh echo $ output. for i in $ do echo $i done echo $* output . for i in $* do echo $i done输出结果 #sh test.sh a b c d $ output. a b c d $* output . a b c d从输出结果可以看出 $* 输出是一行 而 $ 输出则是四行4. 变量内容的删除与替换我们在一些情况下,需要对变量中的字符窜进行查找删除或者替换,就需要使用下表列出的方法变量设定方式说明$变量#关键字若变量内容从头开始的资料符合关键字,则将符合的最短资料删除$变量#关键字若变量内容从头开始的资料符合关键字,则将符合的最长资料删除$变量%关键字若变量内容从尾向前的资料符合关键字,则将符合的最短资料删除$变量%关键字若变量内容从尾向前的资料符合关键字,则将符合的最长资料删除$变量/旧字串/新字串若变量内容符合旧字串则第一个旧字串会被新字串取代$变量/旧字串/新字串若变量内容符合旧字串则全部的旧字串会被新字串取代举例如下(删除字符窜中的某个字符): rootlinux # export test_str=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin rootlinux # echo $test_str#/*kerberos/bin: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin5. 变量条件测试赋值在某些时刻我们需要判断某个变量是否存在,若变量存在则将此变量值赋值给新的变量,若变量不存在则将其他值赋值给新的变量.变量设定方式str 未定义str 为空字串str 已赋值为非空字串var=$str-exprvar=exprvar=var=$strvar=$str:-exprvar=exprvar=exprvar=$strvar=$str+exprvar=var=exprvar=exprvar=$str:+exprvar=var=var=exprvar=$str?exprexpr 输出至 stderrvar=var=$strvar=$str:?exprexpr 输出至 stderrexpr 输出至 stderrvar=$strvar=$str=exprvar=exprvar=var=$strvar=$str:=exprvar=exprvar=exprvar=$str举例如下: rootlinux # test_name= rootlinux # test_name=$test_name-root rootlinux # echo $test_name = 因为 test_name 被设定为空字符窜!所以当然还是保留为空字符窜! rootlinux # test_name=$test_name:-root rootlinux # echo $test_name root = 加上:后若变量内容为空或者是未设定,都能够以后面的内容替换!基本上这种变量的测试也能够透过 shell script 内的 if.then. 来处理,不过通过上述提及的简单的方法来测试变量,是程序看起来更精简一些!6. shell 中分隔符 : 变量IFS 使用shell脚本中,如果使用for循环一个字符窜的话,默认使用空格来分割字符窜.还有前面所提到的 使用for循环逐行读取文件内容时候,文件行中如果有空格的话输出的结果也会变乱.这个时候 使用 IFS 变量来设置特定的字符窜分割符来,达到输出正确的目的.默认情况下 IFS 是使用 , 空格 t n 来作为默认的分割符的.我们将前面使用for逐行读取文件的例子 改进下就可以输出正确了,请看下面 #!/bin/bash IFS_old=$IFS #将原IFS值保存,以便用完后恢复 IFS=$n #更改IFS值为$n for line in cat file.txt do echo $line donefile.txt 文件内容如下 rootlinux$ cat file.txt sdfsdfsdfsdf ssssss ssssss ssssss sssss sdfsdfsdfsdfsdf执行测试程序 输出结果如下(正确输出) rootlinux$ sh test.sh sdfsdfsdfsdf ssssss ssssss ssssss sssss sdfsdfsdfsdfsdf如果未设置IFS变量,使用默认的IFS变量值 ,输出结果如下 rootlinux$ sh test.sh sdfsdfsdfsdf ssssss ssssss ssssss sssss sdfsdfsdfsdfsdf从以上测试程序输出结果,可以根据自己的需求来设定 IFS变量,在举一个例子如下: while IFS=: read userName passWord userID groupID geCos homeDir userShell do echo $userName - $homeDir done /etc/passwd7. shell 数组的使用数组赋值方式: (1) array=(var1 var2 var3 . varN) (2) array=(0=var1 1=var2 2=var3 . n=varN) (3) array0=var1 arrya1=var2 . arrayn=varN计算数组元素个数或者长度: (1) $#array (2) $#array*了解了数组基础语法,举例说明,请看: #!/bin/bash NAMESERVERS=(. . .) # 得到数组长度 tLen=$#NAMESERVERS # 循环数组 for ( i=0; i$tLen; i+ ); do echo $NAMESERVERS$i done在看一个复杂一点的例子,将文件内容读取到数组中: #!/bin/bash # 设置IFS将分割符 设置为 换行符(n) OLDIFS=$IFS IFS=$n # 读取文件内容到数组 fileArray=($(cat file.txt) # restore it IFS=$OLDIFS tLen=$#fileArray # 循环显示文件内容 for ( i=0; i; mergeecho i=0 ; mergeecho while $i -lt $pieces ; ; mergeecho do ; mergeecho echo merge: $file.$i ; mergeecho if ! -f $file.$i ; then ; mergeecho echo merge: $file.$i missed ; mergeecho rm -f $file.merged ; mergeecho exit ; mergeecho fi ; mergeecho dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i ; mergeecho let i=$i+1 ; mergeecho done ; mergechmod u+x merge 如何查找日期为某一天的文件CODE:Copy to clipboard#!/bin/sh # The right of usage, distribution and modification is here by granted by the author. # The author deny any responsibilities and liabilities related to the code. # OK=0 A=find $1 -print if expr $3 = 1 ;/dev/null ; then M=Jan ; OK=1 ; fi if expr $3 = 2 ;/dev/null ; then M=Feb ; OK=1 ; fi if expr $3 = 3 ;/dev/null ; then M=Mar ; OK=1 ; fi if expr $3 = 4 ;/dev/null ; then M=Apr ; OK=1 ; fi if expr $3 = 5 ;/dev/null ; then M=May ; OK=1 ; fi if expr $3 = 6 ;/dev/null ; then M=Jun ; OK=1 ; fi if expr $3 = 7 ;/dev/null ; then M=Jul ; OK=1 ; fi if expr $3 = 8 ;/dev/null ; then M=Aug ; OK=1 ; fi if expr $3 = 9 ;/dev/null ; then M=Sep ; OK=1 ; fi if expr $3 = 10 ;/dev/null ; then M=Oct ; OK=1 ; fi if expr $3 = 11 ;/dev/null ; then M=Nov ; OK=1 ; fi if expr $3 = 12 ;/dev/null ; then M=Dec ; OK=1 ; fi if expr $3 = 1 ;/dev/null ; then M=Jan ; OK=1 ; fi if expr $OK = 1 ; /dev/null ; then ls -l -full-time $A 2;/dev/null | grep $M $4 | grep $2 ; else echo Usage: $0 path Year Month Day; echo Example: $0 1998 6 30; fi 如何计算当前目录下的文件数和目录数CODE:Copy to clipboard# ls -l * |grep -|wc -l - to count files # ls -l * |grep d|wc -l - to count dir 如何只列子目录?CODE:Copy to clipboardls -F | grep /$ 或者 alias sub = ls -F | grep /$(linux)ls -l | grep d 或者 ls -lL | grep d (Solaris)如何实现取出文件中特定的行内容CODE:Copy to clipboard如果你只想看 文件的前5行,可以使用head命令,如: head -5 /etc/passwd 如果你想查看文件的后10行,可以使用 tail命令,如: tail -10 /etc/passwd 你知道怎么查看文件中间一段吗?你可以使用sed命令 如: sed -n 5,10p /etc/passwd 这样你就可以只查看文件的第5行到第10行。如何查找含特定字符串的文件CODE:Copy to clipboard例如查找当前 目录下含有the string you want find.字符串的文件:$find . -type f -exec grep “the string you want find.” ; -print 如何列出目录树CODE:Copy to clipboard下面的短小的 shell程序可以列出目录树, 充分利用了sed强大的模式匹配能力. 目录树形式如下: . -shellp -updates -wu-ftpd-2.4 | -doc | | -examples | -src | | -config | | -makefiles | -support | | -makefiles | | -man | -util 脚本如下:#!/bin/sh # dtree: Usage: dtree any directory dir=$1:-. (cd $dir; pwd) find $dir -type d -print | sort -f | sed -e s,$1, -e /$/d -e s,/*/(/*)$,-1, -e s,/*/,| ,g 如何实现取出文件中特定的列内容CODE:Copy to clipboard我们经常会遇 到需要取出分字段的文件的某些特定字段,例如/etc/password就是通过“:”分隔各个字段的。可以通过cut命令来实现。例如,我们希望将系统 账号名保存到特定的文件,就可以:cut -d: -f 1 /etc/passwd ; /tmp/users-d用 来定义分隔符,默认为tab键,-f表示需要取得哪个字段。当然也可以通过cut取得文件中每行中特定的几个字符,例如:cut -c3-5 /etc/passwd就是输出/etc/passwd文件中每行的第三到第五个字符。-c 和 f 参数可以跟以下子参数:N 第N个字符或字段N- 从第一个字符或字段到文件结束N-M 从第N个到第M个字符或字段-M 从第一个到第N个字符或字段 在vim中实现批量加密CODE:Copy to clipboard密码中还是不 能带空格,不管了,能加密就好,先这么用着。=#!/bin/bash# Encrypt file with vimif (test $# -lt 2) then echo Usage: decrypt password filenameelse vim -e -s -c :set key=$1 -c :wq $2 echo $2 encrypted.fi=weederSMTH weeder$ for file in *.txt ; do encrypt test $file ; donetest2.txt encrypted.test4.txt encrypted.test9.txt encrypted.kick.txt encrypted. echo $2 encrypted.fiweederSMTH weeder$ for file in *.txt ; do encrypt test $file ; donetest2.txt encrypted.test4.txt encrypted.test9.txt encrypted.kick.txt encrypted.too_old.txt encrypted.too_old_again.txt encrypted.bg5.txt encrypted.weederSMTH weeder$ $等特定shell变量的含义CODE:Copy to clipboard在shell 脚本的实际编写中,有一些特殊的变量十分有用:$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个$ 脚本运行的当前进程ID号$! 后台运行的最后一个进程的进程ID号$ 与$#相同,但是使用时加引号,并在引号中返回每个参数$- 显示shell使用的当前选项,与set命令功能相同$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。如何使程序的执行结果同时定向到屏幕和文件CODE:Copy to clipboardprogram_name |tee logfile这样程序执行期间的显示都记录到logfile同时显示到标准输出(屏幕)。 如何用sendmail给系统所有用户送信CODE:Copy to clipboard首先在 aliases文件里面建立一个alias:alluser: :include:/etc/mail/allusers并执行 newaliases使之生效,然后在/etc/mail/allusers里面列出所有用户,可以使用下面的命令:awk -F: $3 ; 100 print $1 /etc/passwd ; /etc/mail/allusers如何查找某条命令的相关库文件CODE:Copy to clipboard在制作自己的 发行版时经常需要判断某条命令需要哪些库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行。在Linux环境下通过ldd命令即可实 现,在控制台执行:ldd /bin/ls即可得到/bin/ls命令的相关库文件列表。 如何使用host命令获得更多信息CODE:Copy to clipboardHost能够 用来查询域名,然而它可以得到更多的信息。host -t mx 可以查询出L的MX记录,以及处理Mail的Host的名字。Host -l 会返回所有注册在下的域名。host -a 则会显示这个主机的所有域名信息。 如何停止终端多个进程CODE:Copy to clipboard以下是脚本: echo 系统当前用户echo -who | awk print $2 echo -echo 输入要杀死终端的终端号:read $TTY kill -9 $K=ps -t $TTY | grep 0-9 | awk print $1 如何转存用户bash_history文件# 把以下代码添加到/etc/profile文件内export HISTTIMEFORMAT=%F %T USER_IP=who -u am i 2/dev/null| awk print $NF|sed -e s/()/g LOCAL_name=hostname HISTDIR=/var/log/.hist/$LOCAL_name_date +%Y%m%d_auditlog # 判断$USER_IP是否为空,如果为空则使用hostname记录. if -z $USER_IP then USER_IP=hostname fi if ! -d $HISTDIR then mkdir -p $HISTDIR # 为$HISTDIR赋值权限,让所有用户都可以访问. chmod 777 $HISTDIR fi if ! -d $HISTDIR/$LOGNAME then mkdir -p $HISTDIR/$LOGNAME chmod 300 $HISTDIR/$LOGNAME fi export HISTSIZE=4096 DT=date +%Y%m%d_%T export HISTFILE=$HISTDIR/$LOGNAME/$USER_IP_$LOGNAME_$DT chmod 600 $HISTDIR/$LOGNAME/*.hist* 2/dev/null2009年04月28日Program, Shellshell 技巧 脚本shell常用技巧用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少.1,建立自己的函数库mkdir functionlib然后将常用的脚本改成函数的语法,如:function filename command ; 将filename拷贝到functionlib中,2,修改环境文件,在/etc/profile中添加export FPATH=$HOME/functionlib3,重登录一下这样的话,你就可以随时用像ls那样运行你自己的filename”命令”而不需要用什么dot,sh,来运行你的函数/脚本啦如果在脚本中运行,可以在脚本顶部用#!/bin/sh#autoload filename /来自动导入函数.filename /调用函数用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少.1,建立自己的函数库mkdir functionlib然后将常用的脚本改成函数的语法,如:function filename command ; 将filename拷贝到functionlib中,2,修改环境文件,在/etc/profile中添加export FPATH=$HOME/functionlib3,重登录一下这样的话,你就可以随时用像ls那样运行你自己的filename”命令”而不需要用什么dot,sh,来运行你的函数/脚本啦如果在脚本中运行,可以在脚本顶部用#!/bin/sh#autoload filename /来自动导入函数.filename /调用函数技巧:pkill的妙用 有的时候有很多进程或运行或睡眠或僵死,占用了很多宝贵的内存空间,kill固然可以杀掉某些进程,但更好的方法是用pkill,举例:代码:root/rootps -APID TTY TIME CMD1045 ? 00:00:00 kdeinit1052 ? 00:00:00 kdeinit1054 pts/0 00:00:00 xterm1056 pts/1 00:00:00 bash1082 pts/0 00:00:00 psroot/rootfreetotal used free shared buffers cachedMem: 252340 212036 40304 0 5752 103200-/+ buffers/cache: 103084 149256Swap: 610460 0 610460root/rootpkill -9 xterm;free1+ Killed xtermtotal used free shared buffers cachedMem: 252340 210776 41564 0 5760 103200-/+ buffers/cache: 101816 150524Swap: 610460 0 610460在我杀掉了xterm这个进程后,看看你的free内存空间相应增加不少?.详细使用方法请:man pkill or pkill help用stty和dd实现暂停,只须按一个键就可.#!/bin/ksh#function char settty=$(stty -g)stty rawdd if=/dev/tty bs=1 count=1 2 /dev/nullstty -rawstty $setttyprint “Press any key to continue”input=$(char)技巧:如何检查用户的输入? 有的时候,我们对用户的输入要作必要的检测,如,限制输入的长度/类型.举例说明:代码:#!/bin/ksh#要求用户必须输入四个数字while truedoecho -n “请输入四个数字:”read numlen=$#num#变量len存放输入的长度if $num != 0-90-90-90-9 | $len != 4 then#进行检测,如果你输入有非数字字符,或者长度不等于四个,便提示错误信息echo “错误! 重新输入”continueelseecho “输入正确,退出!”;exit 0fidone这是个例子,在我们编写脚本中可以借鉴shell变量传递给sed,awk,grep简单方法 有时候在脚本编写中,需要往诸如awk等工具中传递shell的变量,举个简单的例子,如:ps -aux|sed -n 1pread input?”please field number your want to see:”ps -aux|awk print $”$input”read enter?”please line number your want to see:”ps -aux|sed -n $enterpread user?”please username your want to see:”ps -aux|grep $user注:上述文件无实际意义,只为说明而已.开启小键盘数字灯的方法 在man setleds的描述中,有一段设置字符控制台数字灯的脚本:代码:INITTY=/dev/tty1-8for tty in $INITTYdosetleds -D +num /dev/nullstty -cbreak echoprintf “Please input your passwd: ”while : ; doret=getcharif -z $ret ; thenechobreakfistr=”$str$ret”printf “*”doneecho “Your password is: $str” 技巧:数值转换 代码:#!/bin/bash#scriptname:conver#在BASH下简单实现十进制到二进制和十六进制的转换cat技巧:统计文本中单词数量的方法 有些单词在一篇文章中经常会出现很多次,怎么统计这个单词的个数呢?!如:文件kshfile,统计shell这个单词的个数,$cat kshfilekshThe “Korn” shell, written by David Korn of AT&T Bell Labs (now Lucent). Written as a major upgrade to “sh”, it is compatible with it, but has many more internal commands for the most frequently used functions. It also incorporates most of the same features from tcsh which enhance interactive use (command line history recall etc.). This shell is now available on most systems. It was slowto gain acceptance because earlier versions were encumbered by AT&T licensing.$cat kshfile|tr ” ” ” “|grep -wc shell2技巧:显示文本奇数偶数的方法 javalee/home/javalee/myshellcat tmpaaaaaaddddddkasdkfkkdjhasdjfdfddfkjsdfklklsasdfjklkas#显示文件tmp的奇数行的内容:javalee/home/javalee/myshellsed -n 1,$p;n tmpaaaaaakasdkfkkdfddfasdfjklkas#显示文件tmp的偶数行的内容:javalee/home/javalee/myshellsed -n 1,$n;p tmpdddddddjhasdjfkjsdfklkls技巧:倒读文本 例如文章:$cat -n tmp1 abcdefgh2 1232342343 sjdfk234231,行号倒序:$cat -n tmp|tac #tac和cat很有趣吧3 sjdfk234232 1232342341 abcdefgh2,每行倒读:$cat tmp|revhgfedcba43243232132432kfdjs3,全部倒过来:$cat -n tmp|rev|tac32432kfdjs 3432432321 2hgfedcba 14,用sed也可以解决
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025四川攀枝花市第三人民医院招聘护士10人笔试备考题库及答案解析
- 2025年齐齐哈尔第一中学校后勤人员招聘1人备考考试题库附答案解析
- 内盘交易策略优化-洞察及研究
- 1山东八年级第一学期物理第一次月考9月份考试试题以及答案适合沪科版
- 油墨厂仓库主管培训办法
- 河南省周口市扶沟县等2地2026届高三上学期开学考试物理试卷(含答案)
- 广西钦州市第十三中学2025年秋季学期高二年级第五周考试政治试卷(含答案)
- 2024-2025学年山西省长治市人教版三年级上册期中测试数学试卷(无答案)
- 学生走失安全培训课件
- 手套的保暖性介绍
- 高中英语词汇3500词(含音标)
- 凝结水泵解体检修课件
- TDTG提升机说明书
- 度基本公卫工作整改台账
- 大宗商品贸易业务风险管理指引
- 公务员第二批
- 银行保险机构声誉风险管理办法(试行)-全文及解读
- 阳宅风水培训讲义课件
- 1《材料科学基础》第一章晶体学基础课件
- 【VIP专享】第1模块-立业德为先(塘栖成校)课件
- 电子商务数据分析教学课件汇总完整版电子教案
评论
0/150
提交评论