shell记录
多行复制
|
|
粘贴到行首
使用大写 P
在某个目录下查找包含某个字符串的文件
|
|
xargs命令
作用:将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。
|
|
查找指定时间范围的文件
|
|
字符串参与条件判断或者计算时,必须加上双引号
|
|
注意: shell会把字符串按照IFS进行分割处理
多行字符串:IFS换行符
|
|
批量重命名文件
|
|
期待一元表达式
异常信息:
|
|
对应语句:
|
|
|
|
使用大写 P
|
|
作用:将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。
|
|
|
|
|
|
注意: shell会把字符串按照IFS进行分割处理
|
|
|
|
异常信息:
|
|
对应语句:
|
|
语 法:export [-fnp] [变量名称]=[变量设置值]
补充说明:
参 数:
用法:
|
|
shell 执行这些命令时不会派生新进程,而是由 shell 直接执行。比如 read, set, export 都是内置命令,这些命令需要用 help command 来查看其帮助信息。
外部命令就是普通的可执行二进制文件,shell 在执行它们时会 fork 出新进程(这是一个子 shell),然后用 exec 系列函数来执行它们,这时候子 shell 的环境就被命令的环境所取代。
在执行 shell 脚本时,shell 同样会先执行 fork 派生出子进程,然后使用 exec 来调用脚本解释程序(内核中会检查脚本中的第一行 #!/bin/xxx 来确定是调用哪一种),然后将脚本装入,由它来解释执行。脚本解释器有很多,比如 bash, cshell, perl, python 等。如果被调出来的解释程序和当前 shell 是同一种 shell,那么它就是当前 shell 的子 shell,脚本中的命令都在子 shell 中执行,不会影响父 shell 的环境。
在 ( ) 和 { } 中都可以内置一组指令。
( ) 中的指令会在一个子 shell 中执行,命令执行结果不影响当前 shell。需要注意的是,$$ 代表当前 shell 进程的 PID,而不是子 shell 进程的 PID 。
{ } 中的指令在当前 shell 中执行,指令执行结果会影响当前的环境。
在一个 shell 脚本中将一个命令通过 & 放入后台执行,这个命令和当前 shell 的执行是并行的,当前 shell 会派生一个子 shell 执行这个后台命令,而自己则继续往下执行,两者并没有相互依赖及等待的关系,所以这是一种异步的执行方式。以下代码可以说明这一点:
`command` 会将 command 命令的输出结果代换到当前的命令行。command 在子 shell 中执行,它的结果不会影响到当前 shell 。比较下面代码:
|
|
对于 bash 来说(dash,ash 等大部分 shell 也一样), 管道中的命令都是放在子shell里执行的 。
|
|
代码如下:
|
|
从效果上,可以说已经实现了tab键自动补全,不过不是很完美:
理想的应该是:在函数的内部加上一条命令或者一个配置来解决。