码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux 下 rm 为什么要这么写?


    在我们的培训课程改为长期课之后 (易生信培训改为长周期模式),大家学习、练习、理解宏基因组、扩增子、转录组、全基因组各个分析流程的时间也多了,每次直播都能提出很多代码使用的问题,更加促进了 代码的理解、培训知识的落地、应用于自己的分析。有时一次直播全用来回答最近一周练习时出现的问题,这是一个很好的形式。

    其中提到有一个问题是:下面代码中的rm 为什么要写成/bin/rm?

    1. 大文件清理,高宿主含量样本可节约>90%空间
    2. /bin/rm -rf temp/qc/*contam* temp/qc/*unmatched* temp/qc/*.fq
    3. ls -l temp/qc/

    这是一个很好的问题,观察很仔细, 也带着了自己的思考。

    rm是 Linux 下的一个危险命令,用于删除文件或文件夹,删除后很难恢复。程序员常做的删库跑路之一就是rm -rf /,在有权限的情况下递归删除服务器所有文件。

    通常为了避免误删或使用方便,一般大家会在自己的~/.bashrc 或类似的文件中重定义一些命令,比如alias rm='rm -i'或复杂一些,  如下

    1. function rm(){
    2. if [[ $# -lt 1 ]]; then
    3. echo "Usage: rm input"
    4. return 1
    5. fi
    6. /bin/mkdir -p ~/trash
    7. /bin/mv $@ ~/trash
    8. }

    所以,看上去同样写法的命令在不同的电脑上行为可能完全不一样。

    我们自己在写脚本时要尽量保证代码适用于不同的电脑,所以这里我们用了复杂写法,直接指定用/bin 目录下的rm,看上去是麻烦了些,但好处是不受用户自定义行为的影响,更通用。类似的/bin/cp 和/bin/mv 也是常用的写法。

    往期精品(点击图片直达文字对应教程)

    83650f67c12a031cf7e5f5b27576ee24.jpeg

    e94dac78c0739faf9a428aeecc230719.jpeg

    589d34e77d52ed5f17c3647c8fd0ad85.jpeg

    0ffd8f8959848ac95e091efccdf12dc7.jpeg

    bd0a62c741a5edd16bcf263bf4c05cc6.jpeg

    277da7b20d5d898eaee9a5a6115a0641.jpeg

    3243a3734e89e9a502538e94b8db68bc.jpeg

    f4d50f5395abc6d53e845dee3c21ace1.jpeg

    c5f18e802c9393ca34a125226a29d639.jpeg

    d6cc5e52386ce046c3517b4b56ab0d19.jpeg

    9e65acaa62541737bb569d242dbc594c.jpeg

    73ccaad66db77cb2281619dbe5fa4b3f.jpeg

    de38cd0e1ff993475bae029821a0b430.png

    550e09dd3dd190a48ddd5cc0e9f3c0e3.png

    a6ba5fad2d65fb76490d700c79c05250.png

    f5f9688b6846ca310e6a8137f50869c7.png

    0e9f8a22c10897804c2423f66cd80148.jpeg

    846fd5558d0cfba2be4bfdc170d7e7f8.jpeg

    4f9c081d6fb3bbc86c45497e16212390.jpeg

    89b500459249f979d7aafde016bb3e79.jpeg

    6288fe5327327f5495185935aa5750ab.png

    7da8c3e419b475d5c438625fdafed638.png

    3e90953edbcefbed6b79692d84ef3d87.jpeg

    dacc052e19ea2dcfc86a5df7f0a44b2d.png

    ac3ca8c904e700f673ad5f67bc9563e2.png

    ad10febaf4d712a60418222691f92fa2.jpeg

    06101fd08270ca8da8957c3a9f3b2a2f.png

    1e0e0ea17b00c21f46924f85836b5a69.png

    机器学习

    后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

    b8ed19c3f03abb5160ce3ed6190f3eb0.jpeg

    77d3653ba28770f90608a8508580f175.jpeg

    802819c91399ed81905bc939b201383b.png

    6e4898557a05e44e9fb777843882cdd5.png

    题图:https://pixabay.com/illustrations/banner-header-light-lightning-949943/

  • 相关阅读:
    MySQL关于查询条件中:字符串类型的值忽略英文字母的大小写以及字符串尾部包含空格的问题
    Radis基础命令(String类型)Value为JSON
    Android Jetpack解析之——LiveData
    Python21天学习挑战赛Day(5-6)·python操作xml文件(应用)
    设计模式-解释器模式
    什么叫防御式编程
    常见大厂面试题(SQL)02
    详解FreeRTOS:FreeRTOS任务调度器开启过程源码分析(进阶篇—5)
    如何全面提升架构设计的质量
    Polygon zkEVM Memory状态机
  • 原文地址:https://blog.csdn.net/qazplm12_3/article/details/126900088
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号