首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

Linux下链接文件使用RM无法删除的解决办法

http://www.oklinux.cn  2007-09-21  来源: 赛迪网 sixth  会员收藏  游客收藏  【 】 

在进行U-boot开发的时候,遇到一个小问题。网友wanglida79前几天刚遇到过,我当时没有模拟出来,现在自己倒是遇上了。不过我想出了解决的办法,只不过原因不明确,或许使用方法不对,或许有bug。

 
  现象描述:
 
  我进行U-boot移植的开发,为了patch方便,将源码的名字命名为.orig,这样以示区分。但是名字太长,在命令行下操作不太方便,所以想法就是建立软链接。
 

[armlinux@lqm bootloader]$ tree -L 1
.
|-- patch
|-- u-boot-1.1.3
|-- u-boot-1.2.0
|-- u-boot-1.2.0.orig
|-- vivi
`-- vivi_origin

6 directories, 0 files

 
    上面是目录下的主要文件夹。现在将源码链接为orig,将开发部分链接为develop。
 

[armlinux@lqm bootloader]$ ln -s u-boot-1.2.0.orig/ orig
[armlinux@lqm bootloader]$ ln -s u-boot-1.2.0 develop
[armlinux@lqm bootloader]$ ls
develop orig patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

 
  如上。现在想要删除develop和orig。出现意外情况:
 

[armlinux@lqm bootloader]$ rm develop/
rm: cannot remove `develop/
': Not a directory
[armlinux@lqm bootloader]$ rm -f develop/
rm: cannot remove `develop/'
: Not a directory
[armlinux@lqm bootloader]$ unlink develop/
unlink: cannot unlink `develop/

 
  看来删不掉。删除orig也同样如此。转念又实验了利用find来删除:
 

[armlinux@lqm bootloader]$ find . -type l | xargs rm -f
[armlinux@lqm bootloader]$ ls
patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

 
  看来能够成功。
 
  现象分析与解决:
 
  上面提供的find and xargs的删除方法可以实现。但是只用rm为什么不能删除呢。我想应该是使用的方法上有问题,必须查阅rm和ln的用法。经过man查阅,ln的使用和rm的使用并没有问题。推翻了前面的想法,我想从rm直接删除和find删除的不同入手找到原因。
 

[armlinux@lqm bootloader]$ find . -type l
./develop
./orig

 
  看来原因找到了。我在使用rm的时候总是习惯使用TAB键补全命令,但是TAB补全命令的时候,最后是以“/”结尾的。很明显的原因,rm也好,unlink也好,并不能很好的处理这种情况,这算是一处bug。我在前面写shell脚本来实现autozip时的时候,自己遇到过这个问题,采用了awk解决。原有的脚本如下:
 

[armlinux@lqm bin]$ cat autozip
#!/bin/bash
# Copyright 2007 (c), Shandong University
# All rights reserved.
#
# Filename : autozip
# Description: Compress files, and print "OK" out if the file
# can be compressed successfully.
# Syntax : autozip [filename | directory name]
# Author : Liu Qingmin
# Version : 1.0
# Date : 07-04-29
#

# Func: get_target()
# Desc: Obtain the name of target file
# Para: $1 -- file name that will be compressed
# Ret : TARGET -- current file name
get_target()
{
        TARGET=`echo $1 | \
                awk -F/
'{if ($NF == "") print $(NF-1); \
                          else print $(NF)}'
`
}

# Handle Parameters
if [ $# != 1 ];then
        echo "Usage: `basename $0` "
        exit 1
fi

# Assign the parameter to the Macro OPT
OPT=$1

# Uncompress files
if [ -d $OPT ]; then
        get_target $OPT
        tar zcvf ${TARGET}.tar.gz $OPT && echo "OK"
elif [ -f $OPT ]; then
        get_target $OPT
        cp $OPT tmp
        gzip tmp
        cp tmp.gz ${TARGET}.gz
        rm tmp.gz
        if [ -x ${TARGET}.gz ]; then
                chmod -x ${TARGET}.gz
        fi
        echo "OK"
fi

共2页: 上一页 1 [2] 下一页

上一篇:Linux文件系统的隐藏权限:chattr lsattr   下一篇:关于Linux系统下文件特殊权限的解释


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·关于Linux系统下文件特殊权限的解释
·如何使用Logmnr方法分析数据库日志
·怎样把Linux系统服务器当作Mac的服务器
·网上邻居中文目录显示为乱码的处理方法
·Linux系统下使用Fsck命令修复损坏的分区
·Linux系统在低配置电脑上的使用
·Windows访问Ext3和Reiser分区的工具
·Linux下Split分割大文件的方法
·让虚拟机Linux与宿主机Windows资源共享
·创建自己的操作系统开发环境
·关于Linux系统中Compress的注意事项
·Linux系统攻略 使用Script录制终端会话
·Linux下清除GRUB/修复MBR的实用技巧
·Ubuntu7.0 Gvim乱码解决办法
·开启Firefox地址栏的自动完成特性
·备份Linux操作系统的几种方式
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·安装Ubuntu分区的推荐方案及方法
·成功升级到红旗Linux6.0 SP1经验分享
·Ubuntu游戏之平行球的安装
·Ubuntu与Windows双系统使用时的注意事
·Ubuntu下安装矩阵实验室Matlab
·Ubuntu 7.10下wine-0.9.57的中文配置
·Linux初学指南 Ubuntu下rpm包的安装方
·Fedora 8正式版下载地址分享
·惠普笔记本6510B中安装Fedora 8成功例
·Fedora 8 下JDK 6.0 配置技巧
·Ubuntu 3D桌面特效展示!超绚目(图)
·解析Linux系统下GRUB故障修复
  阅读排行
·Linux爱好者入门教程
·Linux操作系统下的串口通信学习笔记
·从硬盘安装RHEL 5(Red Hat Enterprise
·Vim实用技术第一部分:实用技巧
·Vmware Workstation 5.0.0使用说明
·VM中Linux虚拟机下安装VMware Tools
·新手看招:调试工具GDB基本知识全接触
·如何在Linux/FreeBSD下玩模拟器游戏
·Gentoo版Linux操作系统的前世今生
·Linux进程间通信:管道及有名管道
·探索Linux 操作系统内存模型和管理
·Linux系统中用ALSA驱动声卡流程详解
·并不绝对安全:Linux下安全十二法则
·Linux 技巧: Bash 参数和参数扩展
·Linux操作系统网络驱动程序编写详解
网摘收藏: