Linux/Unix中的#!和!#
是不是在Terminal输入命令的时候,输入了很长的一个路径,然后发现还有在同一条命令中再输一次的时候很恼火,其实Shell是提供了trick的,就是使用!#(和#!不同哦)
习惯写脚本的猿,通常对于Shell(Bash,csh,tsh,zsh),Perl,Python,expect等的文件行首的 #!/usr/bin/**的格式都相当熟悉了,就是申明编译器的位置,开头的#!,被称为shebang木九十告诉编译器用什么命令运行该文件
但是还有一个和shebang很像的东西,就是命令行使用的!#,表示位置引用,用几个例子说明一下
1. 创建WPS的桌面快捷方式,因为默认的快捷方式是存在/usr/share/applications/下的,并且该目录下的文件均为不执行的,属主也是root,要在桌面创建,就必须更改属主,并添加可执行权限。
ubuntu@ray : ~ $ sudo cp /usr/share/applications/wps*.desktop ~/Desktop && sudo chmod u+x !#:3/wps*.desktop && sudo chown $USER:$USER !#:8
来解析一下:

1. 其实!#和(*,~,)的使用是一样的,都是Shell先把这些符号代表的内容扩充出来,然后再执行命令
cp ~/Desktop/*.desktop ~/.cache/Trash/的命令中,我们都知道 "~" 表示用户主目录,即/home/$USER,其实在运行的时候,Shell会先将~替换成/home/$USER,才运行的,其中的*表示可以匹配任意长度的非空格字符串,也是Shell将~/Desktop/下,所有符合*.desktop的文件名都扩张出来,再运行命令的
2. 运行的时候,Shell会将命令以空格分割成一段一段的,然后以第一个为0,第二个为1来建立索引,这样!#:0就表示索引的第一个元素"sudo",所有在这条命令中的都可以被重复利用的。
ubuntu@ray : ~ $ ldd wps-office_9.1.0.4937~a16p2_i386.deb &&sudo nice -9 gdebi !#:1
ldd wps-office_9.1.0.4937~a16p2_i386.deb &&sudo nice -9 gdebi wps-office_9.1.0.4937~a16p2_i386.deb
Linux/Unix中的#!和!#的更多相关文章
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在W ...
- 在linux/unix中查找大文件
在linux/unix中查找大文件,如查找大于100M文件的位置路径,查找等于10M文件的位置路径等等,下面就介绍几个实现快速查找的命令: 1. 查找指定目录下所有大于100M的文件,命令为 find ...
- Linux/Unix 中 wheel 组的来源
使用过 Linux/Unix 的朋友应该知道,将用户添加都 wheel用户组,让用户可以通过在命令在前加 sudo 临时获取 root 用户的权限.但是有没有朋友会想知道为何这个用户组要交 wheel ...
- Linux/Unix中系统级IO
Linux/unix I/O:将设备映射为文件的方式,允许Unix内核引出一个简单.低级的应用接口. Linux/unix IO的系统调用函数很简单,它只有5个函数:open(打开).close(关闭 ...
- Linux/Unix中的命令提示符prompt
用惯了DOS的伙计刚用Unix时最想干的事情就是想把Unix搞得像DOS一些, 其中的一条就是把Unix的提示符设置成$p$g那样的.下面就说一说做的方法. 不同的SHELL设置的方法不同,比较方便的 ...
- Linux/UNIX 下 “command not found” 原因分析及解决
在使用 Linux/UNIX 时,会经常遇到 "command not found" 的错误,就如提示的信息,Linux /UNIX 没有找到该命令.原因无外乎你命令拼写错误或 L ...
- 获得Unix/Linux系统中的IP、MAC地址等信息
获得Unix/Linux系统中的IP.MAC地址等信息 中高级 | 2010-07-13 16:03 | 分类:①C语言. Unix/Linux. 网络编程 ②手册 | 4,471 次阅读 ...
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免?
如题 Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免? 一个进程在调用exit命令结束自己的生命的时候,其实他并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结 ...
随机推荐
- JavaScript:JavaScript事件的处理
JavaScript事件处理 —————事件的处理流程: —————动态事件绑定: —————常用的事件处理. 1.事件的概念 在页面之中,会针对用户的每一个操作进行记录.在页面中的事件可以简单的理解 ...
- [Logstash]使用详解(转)
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...
- .net平台下深拷贝和浅拷贝
在.net类库中,对象克隆广泛存在于各种类型的实现中,凡是实现了ICloneable接口的类型都具备克隆其对象实例的能力.所以本文讲述的深拷贝和浅拷贝也是在实现ICloneable接口的基础上进行的. ...
- H3C Series Router MSR26-00与F3736 VPN IP SEC
注:建立链接之后经常断线,需要两边进行PING通才可以.待解决.
- C# ZedGraph 控件各属性以及示例
ZedGraph属性\方法介绍 Copy(Boolean) ->> 将图像复制到剪贴板.DoPageSetup()() ->> 打开打印设置对话框. DoPrint()() - ...
- Netty中BIO,NIO
同步阻塞io(BIO).伪异步io(PIO).非阻塞io(NIO).异步io(AIO)的概念及区别? 同步阻塞io(BIO):服务器端与客户端通过三次握手后建立连接,连接成功,双方通过I/O进行同步阻 ...
- configure: error: C++ compiler cannot create executables
今天装虚拟机LNMP环境 安装报错:configure: error: C++ compiler cannot create executables 这是因为 gcc 组件不完整,执行安装 yum i ...
- HTML语言的一些元素(一)
1)标题的六个等级:<h1>,<h2>,<h3>,<h4>,<h5>,<h6>.如果写了诸如:<h7>等,则作为正文 ...
- compilation filed Unable to write to path xxxxxx 遇到这种情况的话
如果是xib文件的话 查看target —>Build Phases —> Copy Bundle Resources里面查看路径. 可能有重复路径导致编译不通过.
- HDU 1890 区间反转
http://acm.hdu.edu.cn/showproblem.php?pid=1890 Robotic Sort Problem Description Somewhere deep in th ...