当前位置:  技术问答>linux和unix

用shell编程判断一文件是不是字符设备文件

    来源: 互联网  发布时间:2016-07-01

    本文导语:  有一道shell编程的题目:用shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下。 给出的答案如下: #!/bin/bash directory=/dev for file in anaconda-ks.cfg install.log install.log.syslog do if [ -f $file ] then c...

有一道shell编程的题目:用shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下。
给出的答案如下:
#!/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

我觉得这个答案有点问题。
(1)首先anaconda-ks.cfg install.log install.log.syslog是什么文件?跟字符设备文件有什么关系?
(2)为什么要把文件拷贝到$directory/$file.bak?
如果这个程序有错的话,应该如何正确写这个程序?

|
anaconda-ks.cfg install.log install.log.syslog 
一般系统安装完成后, 在/root目录下会有这三个文件, 都是文本文件, 分别是安装系统所用的kickstart配置, 安装系统log, 和syslog记录的一些log.

显然所给的shell程序是不符合要求的. 判断文件是否是字符设备文件可以用
if [ -c $file ] ; then
....
else
....
fi

|
(2)为什么要把文件拷贝到$directory/$file.bak?
就是把文件拷贝到/dev下 并加了个.bak的后缀 这没什么错误啊 改个名而已啊

|
字符型设备是在/dev目录下,属性为c的,属性为b的是块设备文件。看ls出来的属性列的第一个字母

[root][~]# ls -l /dev/
total 0
crw-rw---- 1 root video    10, 175 2009-08-27 10:51 agpgart
drwxr-xr-x 2 root root         620 2009-08-27 10:51 block
drwxr-xr-x 2 root root          60 2009-08-27 10:51 bsg
drwxr-xr-x 3 root root          60 2009-08-27 10:51 bus
lrwxrwxrwx 1 root root           3 2009-08-27 10:51 cdrom -> hda
drwxr-xr-x 2 root root        2.6K 2009-08-27 10:52 char
crw------- 1 root root      5,   1 2009-08-27 10:52 console
lrwxrwxrwx 1 root root          11 2009-08-27 10:51 core -> /proc/kcore
crw-rw---- 1 root root     10,  63 2009-08-27 10:51 cpu_dma_latency
drwxr-xr-x 5 root root         100 2009-08-27 10:51 disk
crw-rw---- 1 root audio    14,   9 2009-08-27 10:51 dmmidi
lrwxrwxrwx 1 root root          13 2009-08-27 10:51 fd -> /proc/self/fd
crw-rw-rw- 1 root root      1,   7 2009-08-27 10:51 full
brw-rw---- 1 root cdrom     3,   0 2009-08-27 10:51 hda

你可以ls一下/dev的目录,然后看下有没有这三个文件,要是有看看他们的属性。我的系统不是redhat的,

所以没有这三个文件...

|
$ file /dev/tty1
/dev/tty1: character special (4/1)

    
 
 

您可能感兴趣的文章:

  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • 请教 一个shell问题 如何通过shell获得一个日志文件中的增量部分
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • 请教一个shell编程的问题,就是如何在shell编程中读一个文件的内容?谢谢啦!
  • 在调用shell的程序文件时,怎样才能使编译后的可执行文件运行,象在shell状态下那样直接用咋不行呢?
  • shell:sql问题,如何shell循环将不同表数据写入文件中...
  • 在shell命令行中敲一个可执行文件,起一个进程pc,这个进程属于shell进程
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • 请教:shell遍历文件夹,处理其中的文件。
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • shell脚本剪切文件文件,并生成新文件的问题
  • shell 按当前时间作为文件名建立文件夹
  • 我想写一个shell脚本 把当前文件夹下的所有文件名改名
  • 请问如何用shell脚本将一个文本文件的某几行输入到另一个文件中。
  • 如何删除目录中文件名小于某个字符串的所有文件 shell
  • 求一个shell脚本 统计文件数目并删除一些文件
  • 怎么用shell创建连续文件名的文件??
  • 合并一个文件夹下多个文件内容的单行shell命令
  • Shell获取文件的文件名和扩展名的例子
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 如何用shell实现将指定文件中的指定的字符串替换为我指定的另外的字符串
  • shell如何取一个字符串中最右边的三个字符?
  • shell如何去掉字符串中的一些字符?
  • shell如何只替换字符串的第一个字符?
  • shell怎么搜索文件中指定字符串,然后将该字符串后面的数字输出
  • 急问bash shell中替换字符串中某字符为通配符的问题。
  • 问一个简单的shell问题:如何将一个文件中的字符串A全部用另外一个字符串B替换?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux->shell-> if 条件判断,关于软连接的判断!
  • shell如何判断文件是否存在,如何判断变量是否为空
  • shell,我有2个txt文档,如何那shell进行判断?
  • shell脚本判断telnet主机端口是否通,在线等
  • shell 如何判断目录是否空
  • Shell条件判断疑问?
  • 怎么判断shell的exec方法所执行的方法是否正确?
  • 求助shell 如何判断目录是否空,或者不为空?
  • shell中关于sql查询结果的判断?
  • shell中if判断用法??
  • 怎么在SHELL中判断我输入的是数字
  • 想写个shell脚本configure和make一个Linux Kernel怎么判断成功还是失败呢?
  • linux 在shell里read num怎样判断输入的是合法的数字。?
  • 在shell脚本中如何判断某个文件是否存在?
  • shell如何判断当前进程是否是当天运行的进程?
  • linux bash shell命令:grep文本搜索工具简介 iis7站长之家
  • 在线求解-shell编程-如何判断一个目录是空目录
  • shell编程---如何判断文件有匹配的行
  • 在C SHELL中,如何判断在某一指定目录下是否有已知文件名存在?
  • 还有,shell中可以判断文件是否存在吗?
  • linux bash shell命令:grep文本搜索工具简介
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3