source
1 shell脚本执行方法
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
新产生一个shell然后再执行scripts的方法是在scripts文件开头加入语句:#!/bin/sh。一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。
另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。source: source命令即点(.)命令。在 bash下输入man source,找到source命令解释处,可以看到解释"Read and execute commands from filename in the current shell environment and ..."。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。
2 source与点命令
source 命令是 bash shell 的内置命令,从 C Shell 而来。
source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。
source 命令可以强行让一个脚本去立即影响当前的环境。
source 命令会强制执行脚本中的全部命令,而忽略文件的权限。
source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。
source 命令可以影响执行脚本的父shell的环境,而 export 则只能影响其子shell的环境。
使用方法举例:
$source ~/.bashrc 或者:$. ~/.bashrc
执行后 ~/.bashrc 中的内容立即生效。
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,如果在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。
- 用文件名查找文件
# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c
- 用文件名查找文件,忽略大小写
# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c
其实这些可以直接用grep代替(find . | grep -i mycprogra)
- 使用-type查找指定文件类型的文件
查找所有的目录
find . -type d
查找所有的一般文件
find . -type f
查找所有的隐藏文件
find . -type f -name ".*"
查找所有的隐藏目录
find -type d -name ".*"
find . //包含
find * //不包含隐藏目录/文件
- 设置遍历查找的深度
find . -maxdepth 1
find ./ -mtime 0:返回最近24小时内修改过的文件。
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
-n 列出行号
-o 只输出匹配部分
$grep -5 'parttern' inputfile //打印匹配行的前后5行
例子
find . -type f | xargs grep -in C-p
find $VSCODE_PATH -type d -maxdepth 1 | grep -o "extensions/.*"
~ » find . -type d | grep iterm
./Library/Caches/com.googlecode.iterm2
./Library/Caches/com.googlecode.iterm2/Sparkle
./Library/Saved Application State/com.googlecode.iterm2.savedState
~ » find . -type d | grep -o iterm
iterm
iterm
iterm