Linux-Shell编程之判断文件类型
前言
如需使用本博文源码或者撰写文章,请注明博文来源:https://www.cnblogs.com/johnnyzen/p/10534386.html,劳动所得,侵权必究。
题目
設計一個shell腳本:判斷當前工作目錄下所有的文件類型,如果是目錄,顯示目錄名;如果是文件,查看文件內容;如果都不是,則顯示提示信息。
源码
#!/bin/bash
# question:設計一個shell腳本:判斷當前工作目錄下所有的文件類型,如果是目錄,顯示目錄名;如果是文件,查看文件內容;如果都不是,則顯示提示信息。 # 對某目錄下所有文件類型的判定
directoryFilesType(){ #函數:bash shell中,函數也需:先聲明,後使用。
#文件目錄的初始化
dir='';
if [ -z $1 ] #如果未指定具體路徑時
then
dir='./'; #默認:當前路徑
else
dir=$1;
fi; i=0; #標記行號
ls -l $dir | while read line #重定向法/管道法 實現 逐行讀取文本數據
do
i=`expr $i + 1`;
if [ $i -ne 1 ] #跳過首行,首行的信息無用,形如:“总用量 172”
then
case ${line:0:1} in #${line:0:1}:截取字符串line的第[0,1]之間的字符, 即 第一位字符,該位字符表示了文件類型
'-') printf "[file]\t\t";;
'd') printf "[directory]\t";;
'b') printf "[block]\t";;
*) printf "[unknown]\t";;
esac
fi
echo $line; #輸出當前行(包括本行的換行符\n)
done
} #判斷某具體文件路徑下的“文件”類型是什麼。給定一條明確路徑,輸出文件類型
fileType(){
if [ -f $1 ]
then
type="file"; #$0:bash;$1才是首個參數,完整的文件路徑,形如:/etc/nginx/nginx.conf
elif [ -d $1 ]
then
type="directory";
elif [ -c $1 ]
then
type="character";
elif [ -b $1 ]
then
type="block";
else
type="unknown";
fi echo the type of \"$1\" is [$type]
return 0; #可添加函數的返回值
}
#echo `fileType filePath`
#echo $? #讀取函數的返回數值(且只能爲數值類型,範圍:[0,255]) if [ -z $1] # -z string:如果字符串爲空,則:真。
then
curentFilesType #此時,直接執行:對當前工作目錄下所有文件類型的判定
else #參數不爲空,則:判斷參數提供的文件路徑的文件類型
fileType $1 #此時,直接執行:給定一條明確路徑,輸出文件類型
fi; exit 0;
输出
:<<EOF #如果參數爲空時的輸出結果(當前工作路徑下的所有文件類型)
总用量 172
[file] -rw-rw-r-- 1 johnny johnny 2073 3月 13 13:50 Apache Tomcat.md
[file] -rw-r--r-- 1 johnny johnny 822 3月 14 19:45 demo-01-file.sh
[file] -rw-r--r-- 1 johnny johnny 745 3月 14 19:30 demo-02-array.sh
[file] -rw-r--r-- 1 johnny johnny 573 3月 14 19:45 demo-02.sh
[file] -rwx------ 1 johnny johnny 302 3月 13 19:25 demo-bash.sh
[file] -rwxrwxrwx 1 johnny johnny 8600 3月 13 10:43 hello.out
[file] -rw-rw-r-- 1 johnny johnny 211 3月 13 11:08 h.txt
[file] -rw-rw-r-- 1 johnny johnny 87 3月 13 11:08 h.txt.bz2
[file] -rw-rw-r-- 1 johnny johnny 211 3月 13 11:08 h.txt.out
[directory] drwxrwxr-x 3 johnny johnny 4096 12月 25 2017 Linux Shell
[file] -rw-rw-r-- 1 johnny johnny 4483 3月 13 15:25 nginx.md
[file] -rw-rw-r-- 1 johnny johnny 104 3月 13 18:15 text.txt
[file] -rw-r--r-- 1 johnny johnny 862 3月 14 19:20 tmp.txt
[file] -rw-rw-r-- 1 johnny johnny 108801 12月 13 2017 实验二.png
EOF
重点难点
1.Shell编程基础:管道与重定向、函数、控制语句(if、for、while、case等)、字符串处理、数组操作、变量(特殊变量)
2.逐行操作(读取)文本
Shell脚本编程扩展小练习
题目
設計Shell腳本:求控制臺給定數字X-Y之間的整數和,其中X<Y。
答案
#!/bin/bash # 設計Shell腳本:求控制臺給定數字X-Y之間的整數和,其中X<Y。 echo "please input interger X and Y [X < Y]:";
read X Y #從控制臺讀取變量X和Y if [ $X -ge $Y ] #如果X大於等於Y:則 置換
then
t=$X;
X=$Y;
Y=$t;
fi; sum=0;
x=$X; #x保留X的初始值
y=$Y; #y保留Y的初始值
while [ $X -le $Y ] #-le:小於等於≤
do
sum=`expr $sum + $X`;
X=`expr 1 + $X`;
done echo sum of [$x,$y]:$sum;

推荐文献
[1] 《Linux系统及编程基础》唐晓君 主编
[2] Linux Shell编程之变量与字符串处理 | 菜鸟教程
[3] Linux命令大全 | 菜鸟教程
Linux-Shell编程之判断文件类型的更多相关文章
- Linux Shell编程 条件判断语法
if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...
- Linux中用st_mode判断文件类型
Linux中用st_mode判断文件类型 2012-12-11 12:41 14214人阅读 评论(4) 收藏 举报 分类: Linux(8) C/C++(20) 版权声明:本文为博主原创文章, ...
- shell判断文件类型和权限
shell 判断文件类型. -d 文件 判断该文件是否存在,并且是否为目录(是目录为真) -e文件 判断该文件是否存在(存在为真) -f文件 判断该文件是否存在,并且是否为文件(是普通文件为真) - ...
- linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行
linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行 crontab每分钟执行一次,但5秒以上才有更新数据,有时候一分钟可能跑不完上一个进程,需要先等10秒再判 ...
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...
- linux shell编程总结
linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- linux shell 编程参考
#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...
- Linux Shell编程与编辑器使用详解
<Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...
随机推荐
- git之命令git checkout
git checkout 最常用的就是切换分支,最近又发现一种新的用法: 有时候,在看代码的时候,不小心改动了部分代码,但跟项目没啥关系,这个时候,想不去提交这些代码,怎么处理呢? 使用git che ...
- CSS动画总结与呼吸灯效果
首先,先介绍一下主要用到的css属性:animation,text-shadow. text-shadow就不再介绍了,上一篇已经详细介绍了用法.这里先介绍一下animation属性. 1.anima ...
- 如何注册一个google账号
注册过google账号的人都知道,在注册的过程中会需要短信验证. 可我大天朝偏偏连这个都锁了,导致根本验证不了. 所以,经过网上方法的不断尝试,排除了很多的方法:例如使用qq邮箱注册等,现在已经不能用 ...
- Spire.XLS,生成Excel文件、加载Excel文件
一.组件介绍 Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET.旗下有Spire.Doc,Spire XL ...
- 记录学习antd design pro dva的过程,主要记错, 多图预警,如有理解偏差,忘指出,多谢!
首要问题: 如何增加菜单项 答案: 在router.config中添加路由,在locales语言国际化增加选项 问题1: 答案1: 问题2: 这个要修改state,正确写法 存在的疑惑:为什么不能直接 ...
- H5活动页开发有关
活动页开发流程 针对各种节日各种活动,临时定稿开发的活动页,往往时间安排都比较急 ---- 产品定下需求方向 UI实现设计稿 1. 草图和交互逻辑定稿=>多少个页面,每个页面表达的含义以及和用户 ...
- Android Studio3.x上使用Lombok
1.添加gradle依赖 implementation 'org.projectlombok:lombok:1.16.8' //添加lombok依赖implementation 'org.glassf ...
- [Alpha阶段]无人转会申请
Alpha阶段无人转会申请 大家好,我们是Water_T团队.我们团队在Alpha阶段较好完成了预期目标,团队成员合作愉快,氛围良好,配合默契,且完成的产品在alpha阶段中是用户可互动.可使用的功能 ...
- 新人大餐:2018最新Office插件开发之ExcelDNA开发XLL插件免费教学视频,五分钟包教包会
原始链接:https://www.cnblogs.com/Charltsing/p/ExcelDnaVideoCourse.html QQ: 564955427 先解释一下,为什么要做这个视频: 我在 ...
- centos 7 修改网卡名字
1.编辑网卡信息 cd /etc/sysconfig/network-scripts/ #进入网卡目录mv ifcfg-en067761 ifcfg-eth0 #重命名网卡 cat ifcfg-eth ...