在编写Shell脚本时,处理文件路径参数是一个常见的需求。路径参数可能是相对路径或绝对路径,如何编写一个兼容两者的Shell脚本并进行路径检查,是本文的主要内容。...一、问题背景与需求 在处理文件路径时,我们需要: 兼容相对路径和绝对路径的输入。 检查路径是否有效,即路径所指向的文件或目录是否存在。...二、实现思路 判断路径类型:根据路径的第一个字符判断是相对路径还是绝对路径。 转换相对路径为绝对路径:对于相对路径,需要将其转换为绝对路径,以便后续处理。...路径检查:检查路径是否存在,并确认其是文件还是目录。 三、具体实现 以下是一个Shell脚本的示例,实现了上述功能: sh #!...这不仅提高了脚本的灵活性,还增强了健壮性,避免因路径问题导致的错误。
1、shell:命令解释器 1)可支持的shell保存在/etc/shells中 2)默认shell为/bin/bash 2、shell脚本编写: 1)使用vi编辑器 2)每行一条命令,依次执行 3...)赋予可执行权限(x) 3、执行方式: 1)脚本文件路径:有两种,相对和绝对路径,必须有x权限 2)Sh脚本文件路径:无须x权限,相对和绝对路径都可以,在子shell上 3)Source(或 .)脚本文件路径...:无须x权限,在当前sell执行 4、脚本组成: 1)脚本声明:指定脚本执行的shell,以#!...4)SHELL:当前用户的shell 5)HOME:当前用户的宿主目录 6)HISTSIZE:记录的历史命令数,默认为1000条 7)UID:当前用户ID 9、位置变量:命令参数的位置,由$1~$9代表...,第一个到第九个 10、预定义变量: 1)$#:命令行中位置变量的个数 2)$*:所有位置变量的内容 3)$?
/bin/bash while read line do echo $line done < filename 示例:要读取的文件我这里四test.txt 首先vi新建一个文件.sh结尾 [root...@uc-crawl01 test]# vi read_file.sh 然后照着上面的方法编写脚本 #!.../bin/bash for line in `cat filename` do echo $line done 还有一种以文件描述符方式的,但是我没怎么用过就不写了,以上三种就是比较常用的shell...读文件的方法 参考:https://blog.csdn.net/qq_48135964/article/details/115450286
shell脚本 welcome.sh.x 是二进制格式的加密shell脚本 welcome.sh.x.c 是welcome.sh文件的C源代码。...可以使用file命令查看文件的类型: [root@localhost scripts]# file welcome.sh welcome.sh: POSIX shell...脚本: 现在,让我们执行加密的Shell脚本,确保能够运行: [root@localhost scripts]# ....即在这个到期日期之后,当有人尝试执行Shell脚本时,将收到错误消息。使用shc -e选项创建一个新的加密Shell脚本,指定到期日期。到期日期以dd/mm/yyyy 格式指定。 ...# 删除之前创建的.x , .x.c文件 [root@localhost scripts]# rm -rf welcome.sh.x* # 创建带有过期时间的加密脚本
一、脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip,文件名除了_hcip固定字符串外,文件名还包含8个小写随机的字符。...3.创建的12个文件后缀名改为大写的PY,固定字符串改为_hcie 二、脚本内容 #!...in $(ls /python) do file1=$(echo $files |cut -d '_' -f1) mv $files ${file1}_hcie.PY done 三、脚本运行结果...root 0 Jun 15 04:26 c3e589a2_hcie.PY -rw-r--r-- 1 root root 0 Jun 15 04:26 e4f82be8_hcie.PY 总结 到此这篇关于Shell...脚本之文件批量创建与修改的文章就介绍到这了。
需求:将用户家目录(考虑到执行脚本的用户可能是普通用户也可能是root)下面小于5KB的文件打包成tar.gz的压缩包,并以当前日期为文件名前缀,例如今天打包的文件为2017-09-14.tar.gz
/xx.sh /etc 关键字 方式执行 2.脚本可以查询关键字所在的目录位置 #!
1.对于多次的网段进行封禁 2.加入定时任务,定期检查 #!.../bin/bash #获取多次重复的网段 netstat -anptu |awk '{print $5}' |awk -F':' '{print $1}' | sort | uniq |awk -F'....NEW -m tcp -s ${line} --dport 80 -j DROP done < /error-ip.txt #再筛选加入 while read line do #number是重复的次数...,network是要封闭的网段 number=`echo $line |awk '{print $1}'` ip=`echo $line |awk '{print $2}'` network
清理hdfs小文件shell脚本 #!...-------------" echo "BASH_VERSION: $BASH_VERSION" echo "参数说明: " echo "从外部只传递零个参数时,遍历字典,删除 hdfs 对应日期下的文件目录..." echo "从外部只传递一个参数时,根据指定的 hive 外表,删除 hdfs 对应日期下的文件目录" echo "从外部只传递两个参数时,第一个参数必须是 hdfs-to-hive 的外表名,第二个必须是...当前hive 外表: $hive_ext_tbl, 清除的 hdfs 文件目录是: $path" # hadoop fs -rm -r $path elif [ $# == 2 ]; then...当前hive 外表: $hive_ext_tbl, 清除的 hdfs 文件目录是: $path" # hadoop fs -rm -r $path else echo "Date
我们写的shell脚本里面通常会包含帐号密码等信息或者你不想让别人看到的信息,那么把写好的shell脚本进行简单的加密显得有些必要了。...常用的shell加密方法有两种,一种是通过gzexe加密,另一种是通过shc加密。 我们先给一个简单的脚本,然后用它来进行加密解密演示,脚本abc.sh内容如下 1 2 #!...gzexe加密与解密shell脚本 (tips:绿色为输出内容) 1 2 3 4 5 6 7 8 9 bash abc.sh # 执行后显示内容 hello world!...但是通过gzexe加密的shell脚本并不是很安全,细看我们如何通过abc这个乱码的执行文件还原成原来的shell脚本。 ?...但是通过gzexe加密的shell脚本并不是很安全,细看我们如何通过abc这个乱码的执行文件还原成原来的shell脚本。
下载 jq插件。 Mac 可以直接 brew install jq { "menu": { "id": "file", ...
Linux发邮件shell脚本与群发邮件shell脚本 说明:因为明天统计疫情健康打卡,需要通知同学完成打卡,最开始是一个人一个人的进行QQ通知,为了方便通知,我利用Linux写了一个shell定时群发邮件提醒脚本...,如果大家有需要的可以参考我的方式方法 下面我将我进行配置的方法分享给大家 1.Linux安装邮件服务 因为Linux默认没有安装mail邮件服务,我们将进行安装,输入安装命令等待几秒即可安装成功...yum install mailx 2.配置发送邮件服务即你的邮箱 2.1 在命令行中输入 vim /etc/mail.rc 后回车 2.2在文件的最后添加下面配置 编辑该文件前需要 先按键盘...i 进入编辑状态 # smtp服务器认证的用户名 set from=xiaoandx@qq.com # smtp服务器的地址 set smtp=smtps://smtp.qq.com:465...4.邮件测试 echo "测试邮件" | mail -s -v "测试" xiaoandx@qq.com 如果收到邮件即测试成功 5.编写shell脚本 根据我的实际情况,我需要一个群发邮件的脚本,考虑到群发
2.1、 命令和文件自动补全 Tab只能补全命令和文件 (RHEL6/Centos6) 2.2、 常见的快捷键—提升操作熟练度 ^c 终止前台运行的程序 ^z 将前台运行的程序挂起到后台 ^...shell脚本精髓 学会60% 按照顺序执行。 它是解释型的,意味着不需要编译。...重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。 ①自动化分析处理 ②自动化备份 ③自动化批量部署安装 ④等等… 如何学习shell脚本?...尽可能记忆更多的命令 掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本) 必须熟悉掌握脚本的基本语法(重点) 学习脚本的秘诀: 多看(看懂)——>多模仿(多练)——>多思考 4、shell...表示读取文件,执行文件里的命令 – 命令式脚本执行方法: 定义命令路径变量 PATH PATH=$PATH:脚本路径 备注:脚本必须给执行权限 三、学习视频 视频:编程语言介绍 视频:shell介绍
基础知识 .sh文件是什么? .sh文件即 Shell 脚本文件,通常用来执行一系列的命令。...Shell脚本文件使用Shell编程语言编写,可以包含各种命令、条件判断、循环等,用于自动化任务、执行系统管理任务等。Shell脚本文件可以通过终端或者其他脚本执行器运行。...Shell脚本本质上是一系列的Shell命令和控制结构的集合。...下面是一个简单的.sh文件示例,它会输出"Hello, World!"到终端: 创建sh文件,比如我创建一个名为 test01.sh 的shell脚本. vi test01.sh 内容如下: #!...: 2.2 示例二 输入输出+创建 以下是一个简单的Shell脚本示例,它会提示用户输入姓名,并向用户打印一条欢迎消息: 创建sh文件,比如我创建一个名为 test02.sh 的shell脚本. vi
Shell脚本条件测试 语法 说明 test 利用test命令进行条件测试 [] 通过[]进行条件测试 [[]] 通过[[]]进行条件测试 (()) 通过(())进行条件测试 test语法 test...-L 文件 文件存在且为链接文件为真,及测试表达式成立 f1 -nt f2 文件f1比文件f2新则为真,即表达式成立,根据文件的修改时间来计算 f1 -ot f2 文件f1比文件f2旧则为真,即表达式成立...,根据文件的修改时间来计算 字符串测试表达式 字符串测试符 说明 -n "字符串" 若字符串不为“0”,则为真,即表达式成立 -z "字符串" 若字符串为“0”,则为真,即表达式成立 "串1" = "...= "串2" 若字符串1不等于字符串2,则为真,即表达式成立 整数二次元比较符 在[]以及test中使用的比较符 在(())和[[]]中使用的比较符 说明 -eq ==或者= 相等 -ne !...在[[]]和(())中使用的操作符 说明 -a && and,与,两端为真,则结果为真 -o 双竖线 or,或,两端一个为真,则结果为真 !
;; *) echo "wrong" shift ;; esac done if test $RM -eq 1;then #$RM=1,则选择的是...--rm命令,RMFILE是--rm后面接的需要操作文件。...if test -e $I;then #-e判断该文件是否存在,然后-f是一般文件,-d是目录文件。..." else [ $DEBUG -eq 1 ] && echo '该文件不存在!'...sed 's/,/ /g'`;do if id $I &>/dev/null;then [ $DEBUG -eq 1 ] && echo "用户名是$I的用户已经存在
shell脚本中 '$' 与不同的符号搭配其表示的意义也会不同 特殊标志符 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数 $?...上个命令的退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
以下是shell自动备份用的: 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。 具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中。...1)crontab -l:列出所有自动运行的脚本 2)crontab -e:将要执行的脚本假如到自动运行中去 2、关于find命令: find pathname -options [-print -exec...-print find命令将匹配的文件输出到标准输出。 -exec find命令对匹配的文件执行该参数所给出的shell命令。...-ok 和- exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行. 1....p - 管道文件。 l - 符号链接文件。 f - 普通文件。 6. 使用-size选项 ,按文件的大小查找文件的
1.进行检测目录的添加,可以多个目录 2.添加定时任务,可以一分钟一次,有改动会输出改动情况 #!.../bin/bash #2020-3-14 #监测文件是否被修改脚本 #监测目录 dir_file=(/etc) file_list=/usr/local/file_list.txt error_file...file_list} file_check number=`wc -l ${file_list} |awk '{print $1}'` echo "统计完成,总共${number}个文件...;then rm -rf $error_file check if [[ -f $error_file ]];then echo "修改过的文档如下...:" cat $error_file else echo "没有修改过的文件" fi else echo "${file_list
因此,archive归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志。本文给出了清除归档日志的脚本。...1、清除归档日志shell脚本 robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh #!... a、该脚本通过一个外部循环来读取oratab中定义的数据库的SID来寻找对应数据库的归档日志路径以及datapump dump路径。 ...b、使用了一个for循环来清除归档日志,且保留最后的2个归档日志文件。 ...c、接下来的另一个for循环则用来清除当前SID下对应的dump(Oracle datapump)目录下导出的dump文件。 d、同清除归档日志一样,设定了保留dump目录最近的5个文件。
领取专属 10元无门槛券
手把手带您无忧上云