用Shell编程,判断文件是否字符设备文件,如果是将其拷贝到/dev目录下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Shell编程,判断文件是否字符设备文件,如果是将其拷贝到/dev目录下相关的知识,希望对你有一定的参考价值。
用Shell编程,判断文件是不是字符设备 文件,如果是将其拷贝到/dev目录下。
字符设备文件的第一个属性为[c],因此shell脚本如下:myfile=/path/filename
#
换成你实际的文件全路径
fd=`ls
-l
myfile`
#
获取文件详细信息
fp=$fd:0:1
#
截取第一个属性值
[
"$fp"
=
"c"
]
&&
cp
myfile
/dev
#
如果该属性值为c,则为字符设备文件,拷贝到/dev目录 参考技术A #!/bin/bash
if[-c $file]
then
cp $file /dev/$file.bak
echo "Copied 字符设备文件至 /dev"
fi追问
到fi就完了???看不到后面的
追答这就是拷贝已经完成了。
追问谢谢你了。。。。
参考技术B #!/bin/bashdirectory=/dev
for file in anaconda-ks.cfg install.log install.log.syslog
do
if [ -f $file ]
then
cp $file $directory/$file.bak
echo " HI, $LOGNAME $file is backed up already in $directory !!"
fi
done追问
不全啊?莫非手机看不到?
追答done 代码结束,另外如果是在linux下可以利用ls命令来对其操作,代码如下:
cp -p `ll | grep '^l' | awk -F/ 'print $NF'` /dev/本回答被提问者采纳shell判断文件是不是存在
test -e filename返回0则存在,返回1则不存在。
或者
if [ -e $filename ]
空格很关键,注意哦。
判断文件的参数如下,本人自己整理的。
-e 文件存在
-f file 是一个 regular 文件(不是目录或者设备文件)
-s 文件长度不为 0
-d 文件是个目录
-b 文件是个块设备(软盘,cdrom 等等)
-c 文件是个字符设备(键盘,modem,声卡等等)
-p 文件是个管道
-h 文件是个符号链接
-L 文件是个符号链接
-S 文件是个 socket
-t 关联到一个终端设备的文件描述符 这个选项一般都用来检测是否在一个给定脚本中的 stdin[-t0]或[-t1]是一个终端
-r 文件具有读权限(对于用户运行这个 test)
-w 文件具有写权限(对于用户运行这个 test)
-x 文件具有执行权限(对于用户运行这个 test) 参考技术A 你用命令
man [
看看帮助就知道了
[ -f filename] && echo "ok" || echo "ko"
以上是关于用Shell编程,判断文件是否字符设备文件,如果是将其拷贝到/dev目录下的主要内容,如果未能解决你的问题,请参考以下文章