rm命令反向选择删除文件
反向删除文件, 参考这篇文章.
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 ==!!,
!str : 历史命令中, 以str开头的命令
!?str?: 用??来表示"引号"包含...
这个配合ctrl+r来调用历史命令...是获取上次命令的参数: !^, !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命令反向选择删除文件的更多相关文章
- 将linux下的rm命令改造成移动文件至回收站【转】
转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...
- 将linux下的rm命令改造成移动文件至回收站
将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有 ...
- 运用sed命令高效地删除文件的特定行
运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...
- 命令行方式删除文件 && 文件夹
del File: 删除文件 rmdir Folder : 删除文件夹 [貌似只能删除空目录] rm -rf Folder: 删除非空文件夹 [用windows自带的cmd提示我“rm”不是内部命令 ...
- Linux命令行批量删除文件(目录)
快速-批量删除文件或目录 1-1.快速删除大文件夹(注意目录后的结束符'/')(对于含有海量文件的目录,不能直接rm -rf删除,这样效率很慢:) rsync -a --delete blank/ t ...
- window 命令行强制删除文件、文件夹
1. 强制删除文件文件夹和文件夹内所有文件 rd/s/q D:\app 2. 强制删除文件,文件名必须加文件后缀名 del/f/s/q D:\app.txt
- linux中find与rm实现查找并删除文件
find命令: find . -name '*.log' #查找当前目录下的log文件 查找并删除: find . -name '*.log' -type f -print -exec rm -rf ...
- 将linux下的rm命令改造成mv到指定的目录下
rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单#rm -rf ./*这没什 ...
- 如何将Linux rm命令删除的文件放入垃圾箱
因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...
随机推荐
- win10上安装redis
1.下载安装包: 下载地址: 链接:https://pan.baidu.com/s/1oGPrfQJvFz-fX_KNcTTNUw 提取码:eake 2.在适合的位置创建一个文件夹,并将下载到的压缩包 ...
- PCIe基础篇(二)、协议详解
一个完整的PCIe协议体系结构包括应用层.事务层(Transaction Layer).数据链路层(Data Link Layer)和物理层(Physical Layer).其中,应用层由用户需要自行 ...
- Django signal 信号量
参考博客:方法发及使用场景:https://my.oschina.net/linktime/blog/151871 部分源码解析:https://www.cnblogs.com/shizhengwen ...
- UITableViewCell选中后子View背景色被Clear
在TableView中,当cell 处于Hightlighted(高亮)或者Selected(选中)状态下,Cell上的子控件的背景颜色会被 Clear. 解决方法:(4种) 1. 直接设置子控件的 ...
- linux下解压缩.tar.bz2到某目录下
1\可先进入要解压的目的目录,然后使用tar命令 比如我要将桌面的a.tar.bz2解压到/var/b cd /var/b tar -xjf /root/Desktop/a.tar.bz2 ...
- MongoDB入门_MongoDB安装与配置
MongoDB运行环境 MongoDB环境:CentOS-6.7-i386 MongoDB版本:MongoDB 2.6.5 ssh工具:xshell 文本编辑工具:vim与editplus++ 编译M ...
- Granger Causality 格兰杰因果关系
(Granger Causality) 格兰杰(Granger)于 1969 年提出了一种基于“预测”的因果关系(格兰杰因果关系),后经西蒙斯(1972 ,1980)的发展,格兰杰因果检验作为一种 ...
- 计蒜客 蓝桥模拟 F. 结果填空:数独
代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream& ...
- BAT面试必问题系列:深入详解JVM 内存区域及内存溢出分析
前言 在JVM的管控下,Java程序员不再需要管理内存的分配与释放,这和在C和C++的世界是完全不一样的.所以,在JVM的帮助下,Java程序员很少会关注内存泄露和内存溢出的问题.但是,一旦JVM发生 ...
- Spring源码构建
1.下载spring源码并解压 https://codeload.github.com/spring-projects/spring-framework/zip/v5.0.2.RELEASE 打开bu ...