反向删除文件, 参考这篇文章.
http://blog.csdn.net/web_go_run/article/details/46009723
shopt是设置shell的全局选项
shopt -p 打印所有选项
shopt -s 打印已经打开on的选项 | shopt -s extglob 则是打开某个选项(extglob是在shell中可以使用 正则的意思)
shopt -u 显示off选项 | shopt -u extglob 关闭某个选项
shopt -s cdspell 即使拼写错误也可以进入该目录:

==================================================================

有些命令可以一次操作多个文件, 因此可诶使用通配符/正则, 而有些命令则不可以使用通配符, 如 rpm -e ab*(会报错...)

命令中的参数通常使用 [大写单词], 允许使用多个参数或选项的, 用省略号表示:
如: rm [OPTION]... [FILE]...

!!!!!!!!!!!!!!!!!!
因此, 结合上面的两点, 反向删除某个目录下的文件:

rm -rf !(install_flash...)
rm -rf !(file1|file2)

===================================================================
xargs:
根据这个命令的名字, 就可以知道它的含义了:
x: transmit 传递, args: 多个参数, 正是: 向命令(不能带多个参数的命令, 如rpm -e)传递多个参数, 循环遍历处理.
xargs 就相当于一个for循环.

反向删除文件:
ls | grep -v 'install_falsh' | xargs rm -rf

上面的ls命令, 可以用find来代替, 这样就不只是局限在当前目录了:
find /opt/install_flash | grep -v 'install_flash' | xargs rm

===============================================================
!感叹号执行历史命令?
历史命令的倒过来数是从最后一条的-1开始计算. strpos等函数都是这样的;
在历史命令列表中, 从头开始数起, 某一条命令的排序数字是不变的.
感叹后面不能加 空格, 否则, 会认为后面的数字是一个命令, 而报错...

感叹号的作用主要有俩个: [参考文章: https://linux.cn/article-5608-1.html]

  1. 是执行历史命令: !-1 ==!!,

    !str : 历史命令中, 以str开头的命令
    !?str?: 用??来表示"引号"包含...
    这个配合ctrl+r来调用历史命令...

  2. 是获取上次命令的参数: !^, !command_name:param_num

!!是执行上一次的命令. 这个特别是在"permission denied"的情况下切换root用户执行刚才命令的时候有用!

  • 当以普通用户执行系统管理命令的时候, 会受到权限禁止, 这时候,就要切换到root;
  • 但是切换到root用户后, 你是无法用ctrl+p, up箭头调出刚才执行的命令的,因为每个账户都有自己的bash_history文件
    所以这时候, 可以在切换账户的同时, 附带使用 -c !! (切换root的同时执行刚才普通用户最后执行的命令)

su 如果不加用户名的话, 默认的就是切换到root账户.
如下图所是: if is not given, root is assumed.
su命令本身可以有 [options]: -c: --command...

??为什么使用su -c !!命令的时候会提示: "/etc/sudoers" 用户不存在
如下图所示:

  • 可以看到参数-c说的是, 只能执行一个单命令 "a single command"
  • 也就是说, -c后面只能有一个"参数", 只能有一个空格, 再后面空格后的那个参数就会当做是 "user".
  • 因此, 如果你执行的命令中不只 包含 一个空格如 : vi /etc/sudoers, 那么, 它只执行vi命令, 而/etc/sudoers则会被当作用户.
  • 所以 如果你要执行像上面的命令时, 要用双引号把命令括起来. 至于使用!! , 要看前面的命令时什么, 根据实际情况, 来决定是否添加双引号.
  • 因为shell会首先将命令进行替换, 然后再执行!

===========================================================

除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。

例如:

$./some-shell-command

$cat !!

则后一条命令就相当于cat ./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。

rm命令反向选择删除文件的更多相关文章

  1. 将linux下的rm命令改造成移动文件至回收站【转】

    转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...

  2. 将linux下的rm命令改造成移动文件至回收站

    将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有 ...

  3. 运用sed命令高效地删除文件的特定行

    运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...

  4. 命令行方式删除文件 && 文件夹

    del File: 删除文件 rmdir Folder : 删除文件夹 [貌似只能删除空目录] rm -rf Folder: 删除非空文件夹 [用windows自带的cmd提示我“rm”不是内部命令 ...

  5. Linux命令行批量删除文件(目录)

    快速-批量删除文件或目录 1-1.快速删除大文件夹(注意目录后的结束符'/')(对于含有海量文件的目录,不能直接rm -rf删除,这样效率很慢:) rsync -a --delete blank/ t ...

  6. window 命令行强制删除文件、文件夹

    1. 强制删除文件文件夹和文件夹内所有文件 rd/s/q D:\app 2. 强制删除文件,文件名必须加文件后缀名 del/f/s/q D:\app.txt

  7. linux中find与rm实现查找并删除文件

    find命令: find . -name '*.log' #查找当前目录下的log文件 查找并删除: find . -name '*.log' -type f -print -exec rm -rf ...

  8. 将linux下的rm命令改造成mv到指定的目录下

    rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单#rm -rf ./*这没什 ...

  9. 如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...

随机推荐

  1. Python虚拟环境命令

    cd D:\virtual\ virtualenv -p D\Python35\python.exe env1 cd env1 cd Scripts activate.bat # 激活该虚拟环境 de ...

  2. 搜索专题: HDU1372Knight Moves

    Knight Moves Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  3. jQuery之链式编程

    使用的思想:隐式迭代. <button>快速</button> <button>快速</button> <button>快速</but ...

  4. 03-Django-models

    # Models 模型 - ORM - ObjectRelationMap : 把面向对象思想转换成关系数据库思想.操作上把类等价于表格 - 类对应表格 - 类中的属性对应表中的字段 - 在应用中的m ...

  5. 隐藏系统和 Apache 的版本信息

    方法一: ※首先修改源文件,再进行 make && make install 编译安装 编辑源文件/usr/local/apache2/include/ap_release.h 文件 ...

  6. NOTIFY - 生成一个通知

    SYNOPSIS NOTIFY name DESCRIPTION 描述 NOTIFY 命令向当前数据库中所有执行过 LISTEN name, 正在监听特定通知条件的前端应用发送一个通知事件. 传递给前 ...

  7. Ubuntu配置python操作

    Ubuntu16.04 安装python 查看当前python情况root@localhost:/# cd /root@localhost:/usr/bin# cd /usr/binroot@loca ...

  8. L3-002 特殊堆栈 (30 分)

    大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作叫“查中值”,即返回堆 ...

  9. Hive 笔试题

    Hive 笔试题 考试时间: 姓名:____________ 考试成绩:____________ 考试时长:180 分钟 注意事项: 1. 自主答题,不能参考任何除本试卷外的其它资料. 2. 总成绩共 ...

  10. Installing MacOS to VirtualBox

    https://medium.com/@twister.mr/installing-macos-to-virtualbox-1fcc5cf22801