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 ...
随机推荐
- 数据库与前端与Django目录
数据库 [怀心抱素]初步认识数据库 [怀心抱素]mysql的表操作 [怀心抱素]mysql记录操作 [怀心抱素]mysql索引与补充 [怀心抱素]python操作mysql 前端 [怀心抱素]HTML ...
- 【LGR-063】洛谷11月月赛 I & MtOI2019 Ex Div.2 (A-C)
[MtOI2019]黑蚊子多 : 按题意模拟 #include<iostream> #include<cstdio> #include<cstring> using ...
- angularJS(一):表达式、指令
简介 以 JavaScript 编写的库,是一个 JavaScript 框架 一.表达式 AngularJS 使用 表达式 把数据绑定到 HTML. 表达式写在双大括号内:{{ expression ...
- 利用中转输出表制作HijackDll
[原创]利用中转输出表制作HijackDll(附工具源码)作 者: baixinye时 间: 2012-08-05,16:48:45链 接: http://bbs.pediy.com/showthre ...
- spark数据结构之RDD
学习spark,RDD是一个逃不过去的话题,那么接下来我们看看RDD 1.什么是RDD? RDD叫做弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变.可分区.里面元素可以并行计算的集合 ...
- HTML文本格式化标签(Formatting)
<b>粗体文本</b> <code>计算机代码</code> <em>强调文本</em> <i>斜体文本</i ...
- GROUP BY关键字优化
1.group by实质是先排序后进行分组,遵照索引建的最佳左前缀 2.当无法使用索引列,增大max_length_for_sort_data参数的设置+增大sort_buffer_size参数的设置 ...
- new/delete、malloc/free 的区别
相同点 1.都可以动态的申请或释放内存 2.存储方式相同,动态申请的内存都存放在堆中,无法自动释放,要调用对应的delete和free 区别 1.new能自行的计算需要分配的空间,malloc需要 ...
- R语言parse函数与eval函数的字符串转命令行及执行操作
parse()函数能将字符串转换为表达式expression:eval()函数能对表达式求解 A <- : B <- 'print(A)' class(B) C <- parse(t ...
- python2和3的一些区别,编码方式
python2与python3的区别: #python2 print() print'abc' #range() xrange()生成器 #raw_input()#python3 #print('ab ...