反向删除文件, 参考这篇文章.
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. webpack面试题(转载)

    1:webpack打包原理 把所有依赖打包成一个bundle.js文件,通过代码分割成单元片段并按需加载. 2:webpack的优势 (1)       webpack是以commonJS的形式来书写 ...

  2. Api接口管理工具推荐

    在App开发过程中少不了跟服务端打交道,各种HTTP接口调试.返回数据处理占据了不少开发时间,一款好的接口管理工具就非常有必要了.接口管理工具一方面起到链接后台开发人员和App开发人员的作用,另一方面 ...

  3. iOS 审核app被拒绝的各种理由以及翻译

    原 apps被拒绝的各种理由以及翻译:http://my.oschina.net/201003674/blog/356189#OSC_h1_3 1. Terms and conditions(法律与条 ...

  4. AsyncDisplayKit

    Facebook发布了其iOS UI框架AsyncDisplayKit(ASDK)1.0正式版,这个框架被用于Facebook自家的应用Paper中,能够提高UI的流畅性并缩短响应时间. 下载和使用 ...

  5. java交换两个变量值a,b的多钟方法

    首先我们定义两个变量用来检查方法可行性 int a=5; int b=3; 方法一,也是最容易想到的,就是建立中间变量法 int temp; temp=a; a=b; b=temp; System.o ...

  6. Nginx 编译安装工程优化

    1.减小 nginx 编译后的文件大小 在编译 nginx 时,默认以 debug 模式进行,在 debug 模式下会插入很多跟踪和 assert 之类的信息. 在 nginx 源码文件解压后,找到源 ...

  7. .net Core——SqlSugar使用

    一.DbContext配置 public class DbContext { public DbContext() { Db = new SqlSugarClient(new ConnectionCo ...

  8. puppet使用rsync模块

    puppet使用rsync模块同步目录和文件   环境说明: OS :    CentOS5.4                         i686puppet版本:               ...

  9. 多对多关系表的创建方式、forms组件

    目录 多对多关系表的三种创建方式 1.全自动,Django自动创建 2.纯手撸 3.半自动(推荐使用) forms组件 小例子 forms组件 校验器 钩子函数 局部钩子 全局钩子 forms组件常用 ...

  10. SpringCloud学习系列-Eureka服务注册与发现(4)

    actuator与注册微服务信息完善 1.主机名称:服务名称修改 当前问题 含有主机名称 修改修改microservicecloud-provider-dept-8001 的yml文件 修改内容 eu ...