linux shell中,unlink和rm命令有什么区别

Linux文件删除终极指南:unlink vs rm命令的隐藏区别与实战技巧 本文深入解析Linux系统中unlink与rm命令的核心差异与实战应用。从文件系统底层原理出发,详细对比了两者在权限检查、错误处理、性能表现及脚本适用性上的隐藏区别,并提供了针对自动化脚本、日志清理等场景的安全操作指南与最佳实践。 阅读详情
strace 跑 rm 與 unlink,結果有不同地方.

1. strace rm 1.txt 片段

access("1.txt", W_OK)                   = 0

unlinkat(AT_FDCWD, "1.txt", 0)          = 0



2. strace unlink 2.txt 片段
unlink("2.txt")                         = 0



我想可以再看看 unlink 與 unlinkat 的 manpage 說明應該有答案 ? :)

       The  unlinkat() system call operates in exactly the same way as either unlink(2) or rmdir(2) (depending on

       whether or not flags includes the AT_REMOVEDIR flag) except for the differences described in  this  manual

       page.



       AT_REMOVEDIR

              By default, unlinkat() performs the equivalent of unlink(2) on pathname.  If the AT_REMOVEDIR  flag

              is specified, then performs the equivalent of rmdir(2) on pathname.



測試用 strace rm -r testdir 方式刪除一個目錄與其下的檔案目錄,結果為:

access("testdir", W_OK)                       = 0

unlinkat(AT_FDCWD, "testdir", AT_REMOVEDIR)   = 0



所以結論一般命令用 rm 或是 unlink 都可以刪除檔案,因為都是一樣的意思。系統面呼叫來說刪除檔案一般還是使用 unlink() 呼叫,只是有另外提供 unlinkat 提供相同機制,但是可以刪除檔案或是空目錄。

不過我想其他系統的 rm 與 unlink 是有差異的,比方 solaris 就不一樣。

-bash-3.00$ uname -a

SunOS solaris 5.10 Generic_118855-33 i86pc i386 i86pc



man unlink :

System Administration Commands                           link(1M)



NAME

     link, unlink - link and unlink files and directories



SYNOPSIS

     /usr/sbin/link  existing-file new-file



     /usr/xpg4/bin/link  existing-file new-file



     /usr/sbin/unlink  file



DESCRIPTION

     The link and unlink  commands  link  and  unlink  files  and

     directories.  Only  super-users  can  use  these commands on

     directories.



我想詳細部份需要自行測試:p

转http://www.chinaunix.net/jh/4/920666.html

Linux/Mac文件删除安全指南:从rm -rf风险到生产环境最佳实践 文件删除是操作系统基础功能,涉及文件系统对inode和目录项的更新机制。在Linux/Unix系统中,rm命令直接操作文件系统索引,而图形界面删除通常只是移动文件到回收站目录。理解这一原理对数据安全至关重要,特别是rm -rf组合命令具有强制递归删除能力,误操作可能导致不可逆的数据丢失。在生产环境中,通过环境变量检查、预览删除内容、使用trash-cli替代方案等实践,可有效控制风险。针对开发环境清理、缓存文件删除等常见场景,结合find命令条件删除和日志记录机制,既能提升效率又能保障系统稳定性。本文聚焦r 阅读详情

相关推荐

Linux软链接安全删除指南:原理、命令与避坑实践

在Linux/Unix系统中,符号链接(软链接)是一种特殊的文件类型,其本质是一个存储目标路径的指针文件,而非数据本身。理解其与硬链接的核心区别——软链接拥有独立inode并仅存储路径信息,是安全操作的基础。从文件系统层面看,删除软链接实质是移除该指针文件,不影响目标文件,这一特性在系统维护和自动化脚本中极具技术价值。正确操作需掌握`rm`命令默认不跟随链接的行为、避免路径末尾误加`/`的陷阱,并善用`find -type l`进行批量安全处理。本文聚焦**软链接删除**的常见风险场景,通过解析`rm`、`

weixin_30732487的博客 380

Linux 从 lsof 开始,深入理解 Linux 虚拟文件系统!

背景 有时会出现这样的情况,磁盘空间显示已经被占满,但是在查看磁盘的具体文件占用情况时,发现磁盘仍然有很大的空余空间。 1. 执行df命令查看磁盘使用情况,发现磁盘已经满了。 -bash-4.2$ df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 30G 30G 0 100% / devtmpfs devtmpfs 489M 0

小楼一夜听春雨,深巷明朝卖杏花 566

Linux终端本质:Shell、文件系统与命令行协议深度解析

Linux终端不是图形界面的黑色替代品,而是一套基于文本协议的进程交互系统。其核心在于shell作为用户级守护进程的运行机制、路径作为全局唯一坐标的文件系统抽象,以及stdin/stdout/stderr三流分离与管道组合的数据流范式。理解shell是独立进程、命令行是纯文本协议、路径是挂载点而非盘符,才能穿透`command not found`、`No such file or directory`等表层报错,定位到环境变量PATH失效、跨系统路径语义差异或标准流重定向逻辑错误等根本原因。本文聚焦零基础

子夜轻风 460

linux command ------ unlink 和 rm 的区别

unlink 不能用于删除文件夹,rm 可以删除文件和文件夹 当删除文件时,rm 和 unlink 是完全一样的。 转载于:https://www.cnblogs.com/god-of-death/p/8631059.html

dee53994040的博客 673

Linux rm -rf 深度解析:从Swoole清理到误删恢复

Linux下的rm命令是文件删除的基础工具,但-r和-f参数组合背后涉及shell通配符展开、inode引用计数等底层机制,稍有不慎就可能造成远超预期的数据丢失。理解命令执行原理,才能安全地利用它完成编译产物的清理工作,例如在Swoole扩展源码目录的反复构建与清理中,通配符的静默失效和路径匹配陷阱是常见的隐患。当误删发生时,文件恢复的可能性与文件系统类型、进程占用状态密切相关,借助lsof、extundelete或快照手段可争取有限的反悔机会。通过别名防护、路径检查、回收站替代和备份兜底等方法,可以构建可

weixin_33585822的博客 157

Linux命令行入门:从pwd理解终端工作原理

Linux命令行不是图形界面的简化版,而是操作系统内核与用户交互的底层接口。其核心在于进程上下文、路径解析和环境变量等系统级机制。以pwd为例,它并非简单显示路径,而是查询当前进程的cwd(当前工作目录)字段,直连内核task_struct结构;结合cd、$PWD、readlink等工具,可深入理解物理路径与逻辑路径、符号链接解析、shell变量性能差异等关键概念。这些知识构成终端操作的底层认知框架,支撑文件管理、环境配置、脚本调试等真实场景,尤其适用于Ubuntu、WSL、国产麒麟/UOS等主流Linux

dichengyan0013的博客 396

linux shell unlink,linux shell中,unlink和rm命令有什么区别

strace跑rm與unlink,結果有不同地方.1.stracerm1.txt片段access("1.txt",W_OK)=0unlinkat(AT_FDCWD,"1.txt",0)=02.straceunlink2.txt片段unlink("2.txt")...

weixin_42355252的博客 449

实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)

使用本章节代码请引用此优快云链接,尊重知识、尊重他人劳动。这一小节将正式进入代码实现部分。我们会结合实际业务需要和拉流解码流程实现一个灵活、轻便、易用的视频拉流解码模块,支持多路视频拉流解码且可以动态更新更新内部参数。在开始设计之初,我们首先考虑的是使用大家所熟知的 **OpenCV(cv2.VideoCapture)**来实现拉流和解码功能。它的 API 简单直接,几行代码就能实现从网络流中读取帧,对于快速原型验证来说非常方便。然而,在经过深入的调研和测试后,我们发现 OpenCV 在处理多路视频流、追

soulproficiency的博客 2268

linux unlink 函数,linux – unlink和rm有什么区别?

两者都是同一基本函数的包装器,它是一个unlink()系统调用.权衡用户土地利用率之间的差异.RM(1):>更多选择.>更多反馈.>理智检查.>由于上述原因,单个呼叫的速度会慢一些.>可以同时使用多个参数调用.(1)取消关联:>减少健全性检查.>无法删除目录.>无法递归.>一次只能拿一个参数.>由于它的简单性,在单个呼叫方面更加精简.&g...

weixin_39609483的博客 696

别再傻傻分不清了!Anaconda和Miniconda到底选哪个?附保姆级安装与镜像源配置(Windows/Mac)

本文详细解析了Anaconda和Miniconda的核心差异,包括体积、预装内容、系统资源占用等关键维度,并提供了针对不同需求的决策框架。附有Windows和Mac双平台的详细安装与配置指南,帮助用户根据实际需求选择最适合的conda工具,提升开发效率。

weixin_30315723的博客 426

InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)

本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。

g9h0i1的博客 960

php unlink rm,linux shell中,unlink和rm命令有什么区别 | 学步园

strace跑rm與unlink,結果有不同地方.1.stracerm1.txt片段access("1.txt",W_OK)=0unlinkat(AT_FDCWD,"1.txt",0)=02.straceunlink2.txt片段unlink("2.txt")...

weixin_36071371的博客 193

BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network(2018,妆容迁移)

论文下载地址:BeautyGAN | Proceedings of the 26th ACM international conference on Multimedia 目的:在实例级实现化妆图像和非化妆图像的妆容迁移 方法:全局域集损失和本地实例级损失合并到一个双输入/输出对抗生成网络。步骤:使用一对鉴别器将非化妆面传输到化妆域,鉴别器从域的真实样本中分辨出生成的图像。在域集迁移的基础上,采用基于不同人脸区域的像素级直方图损失来实现实例级迁移。为了保持人脸的一致性和消除伪影,在总体目标函数中加入了.

weixin_53965540的博客 664

Linux软链接安全删除指南:避免rm -rf误删数据的正确方法

在Linux文件系统中,软链接(Symbolic Link)是一种通过路径指向目标文件或目录的特殊文件类型,其本质是一个独立的inode,存储着目标路径字符串而非实际数据。理解软链接与硬链接的核心差异在于,软链接是路径引用,而硬链接共享inode,这一原理决定了删除操作的不同风险。从技术价值看,正确管理软链接能保障数据安全,避免因误操作导致的生产事故。在应用场景中,运维人员常需清理缓存、管理部署或维护项目结构,此时若使用rm -rf命令处理目录软链接,可能跟随链接误删源目录内容。本文聚焦于软链接的安全删除实

weixin_30550081的博客 304

深入解读ES8388寄存器:从录音到播放,如何用代码控制这颗音频Codec

本文深入解析ES8388音频编解码器的寄存器设置,从录音到播放的完整控制流程。详细介绍了寄存器架构、录音通道配置、播放通道优化以及直通(Bypass)模式的高级应用,帮助开发者通过代码精准控制这颗高性能音频Codec,解决实际开发中的音质问题。

weixin_30275415的博客 550

Aurix TC3XX Cache memory分析

Aurix Cache memory 分析

qwe0405080615的博客 4348

Unix_Linux_AIX_常用命令总结

■前言 Unix,Linux 介绍 https://blog.youkuaiyun.com/sxzlc/article/details/103652857(介绍内容在文章底部) ■各种命令 0.cd 目录跳转 1.uname uanme -a 显示服务器全部信息 uname -n 显示服务器名字 2.ifconfig ifconfig -a 查看网络配置 3.who 显示当前在线用户 4.chown ch...............

sun0322 4万+

2.1 amdgpu BO的类型和用途

AMDGPU驱动中,amdgpu_bo_create_user和amdgpu_bo_create_kernel分别用于创建用户空间和内核空间的buffer对象(BO)。用户空间BO支持元数据、tiling flags等属性,由GEM handle管理生命周期;内核BO则用于驱动内部资源如ringbuffer,自动pin并可选CPU映射。二者在返回类型、生命周期管理和使用场景上存在根本差异,前者面向图形渲染/AI等应用,后者服务于驱动内部任务。

图形/计算GPU的驱动与虚拟化技术分享园地 2210

Linux命令全称解析:从记忆到高效运维

Linux命令作为操作系统核心交互方式,其命名规则蕴含着UNIX哲学的设计智慧。从技术原理看,命令缩写体系通过首字母组合(如`grep`=Global Regular Expression Print)或功能描述(如`ssh`=Secure SHell)实现语义压缩,这种设计既降低输入成本又保留可追溯性。在工程实践中,理解命令全称能显著提升运维效率:当`tar`命令出现异常时,知晓其Tape ARchive的原始设计意图可快速定位磁带设备兼容性问题;掌握`awk`由三位开发者姓氏组成的历史,有助于理解其文本

weixin_34295316的博客 452

Qt/C++ 音视频开发: 共享解码线程/重复利用解码/极低CPU占用/画面同步/进度同步

通过共享解码线程和重复利用解码技术,可以显著降低CPU占用,提高多媒体应用的性能。同时,画面和进度同步技术保证了视频播放过程的平滑体验。

走向CTO的路上... 988

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

嵌入式LINUX常见符号与常用命令

注意:Linux是区分大小写的。 Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 Ubuntu打开命令行的3种方式 1、快捷键ctrl+alt+t 2、桌面右键:Open in Terminal 3、界面或者搜索Terminal,双击打开终端 关于root Linux中有普通用户和特权用户的区别。特权用户就是root用户。普通用户权限受到限制,譬如说普通用户不能cd /root,普通用户不能使用apt-get install 来装软件。 可以使用su 用户名来在不

qq_28576837的博客 2511

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux rm命令深度解析:从文件系统原理到生产安全实践

rm命令表面是文件删除工具,实则是Linux文件系统中inode链接管理的核心操作——它不擦除数据,只减少硬链接计数,依赖ext4等文件系统的底层机制实现资源回收。理解这一原理,是掌握权限控制、递归行为、路径展开规则及--preserve-root等安全选项的技术基础。其技术价值在于精准控制存储生命周期,在日志清理、Docker缓存管理、CI/CD临时目录回收等场景中承担关键角色。本文结合硬链接、shell通配符、目录空判断等核心机制,系统拆解rm -r/-f/-i选项组合的执行逻辑与风险边界,直击生产环境

weixin_33923762的博客 345

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深入理解Shell核心原理:从命令解释器到高效配置与脚本编程

Shell作为操作系统的命令解释器,是用户与内核交互的关键桥梁。其核心工作原理包括命令的读取、解析、展开与执行,通过环境变量管理进程间配置传递,并区分内置命令与外部命令以平衡效率与功能。理解Shell的配置逻辑,特别是登录Shell与非登录Shell下配置文件的加载顺序(如Bash的.bash_profile与.bashrc),对于构建高效、稳定的开发环境至关重要。掌握这些原理能帮助开发者避免常见脚本错误,例如变量引用未加引号或环境配置混乱,从而提升自动化任务的可靠性与效率。本文聚焦Shell的核心机制与配

weixin_30399155的博客 356

Linux基础命令与文件系统核心知识总结

本文将对Linux核心基础知识点进行系统梳理,涵盖文件目录结构、常用操作命令、权限管理、查找工具、压缩包管理、路径规则及用户管理等内容,同时补充实操中的关键细节,助力快速上手Linux基础操作。本文梳理了Linux入门的核心知识,涵盖文件系统结构、基础操作命令、权限管理、查找检索、压缩包管理、路径规则及用户管理,这些知识点是Linux使用的基础,也是后续学习shell脚本、服务运维的前提。是最常用的格式(打包+压缩,体积小、兼容性好),tar是Linux原生的打包工具,可单独打包或配合压缩算法压缩。

枕星而眠的博客 648
上一篇: man c++手册
下一篇: gdb调试与信号
RunBoying
博客等级 码龄17年 41粉丝 117原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值