linux系统及编程基础唐晓君,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;

输出

:<

总用量 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

答案

#!/bin/bash

# 設計Shell腳本:求控制臺給定數字X-Y之間的整數和,其中X

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;

fda3a6e5bc57a5e38abad247ae99a8ee.png

推荐文献

[1] 《Linux系统及编程基础》唐晓君 主编

Linux Shell编程 条件判断语法

if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

Linux中用st&lowbar;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&sol;O之判断文件类型

lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...

linux shell编程总结

linux shell编程总结 本周学习了unix/linux 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编程与编辑器使用详解

基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

随机推荐

ubuntu在命令行新建用户后无法进入桌面的原因

在命名行模式下 用useradd新建一个用户后 在图形界面输入密码无法登陆 这是因为未对新建的用户进行任何配置 用adduser命令新建用户即可进入桌面 下面说一下useradd 和 adduser的 ...

&lbrack;LintCode&rsqb; Paint House 粉刷房子

There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...

mysql跨数据库操作问题

跨数据库的操作,如果是命名符合mysql规范的直接database.table,如果不符合规范比如加了 -  等符号需要在数据库上面加`database`.table(不是'database'.tab ...

Android学习笔记之BitmapFactory&period;Options实现图片资源的加载&period;&period;&period;

PS:小项目总算是做完了...历经20多天...素材,设计,以及实现全由自己完成...心力憔悴啊...该写写博客记录一下学习到的东西了... 学习内容: 1.使用BitmapFactory.Optio ...

linux cd

cd -回到上一次 操作的目录 cd ..回到上级目录 cd ../../回到上两级目录

转载:c&plus;&plus; sort用法

sort函数使用模板: sort包含在头文件algorithm中 sort(start,end,排序方法) 1.在没有排序方法时是默认从小到大的排列,例 #include

nodejs cluster模块初探

大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...

vue 图片预览插件

https://github.com/daidaitu1314/vue2-preview //cnpm cnpm install vue2-preview -save //引入 import VueP ...

angular input 为file on-change 无效

l转自:https://blog.csdn.net/klo220/article/details/53331229 侵删 出现这个问题是因为input的type是file,这时如果用ng-change ...

POJ 2886 线段树单点更新

转载自:http://blog.csdn.net/sdj222555/article/details/6878651 反素数拓展参照:http://blog.csdn.net/ACdreamers/a ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值