用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/bash

 directory=/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目录下的主要内容,如果未能解决你的问题,请参考以下文章

.用 Shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目 录下

Linux Shell编程 test命令

shell条件判断总结

Shell中各种判断语法

Shell编程条件判断

Linux:shell基础