在子进程里执行shell命令
shell 可以通过添加一个小括号的方式,让命令在子shell进程执行,和bash xxx.sh
执行效果一样,运行过程中设置的环境变量,cd,exit都不影响当前shell,如:
func1() {
(
cd /tmp
touch testfile
exit 0
)
}
shell 可以通过添加一个小括号的方式,让命令在子shell进程执行,和bash xxx.sh
执行效果一样,运行过程中设置的环境变量,cd,exit都不影响当前shell,如:
func1() {
(
cd /tmp
touch testfile
exit 0
)
}
原文地址:awk与cut在以空格为分割域时的区别
awk默认以空格为分割域,比如我想获得某进程pid:
[root@SHCTC-GAME12-44 ~]# ps -ef|grep "sshd -f"|grep -v grep
root 5088 1 0 14:28 ? 00:00:00 /usr/sbin/sshd -f /app/oslinkd/oslinkd_config
用awk如下写:
ps -ef|grep "sshd -f"|grep -v grep|awk '{print $2}'
这样即可获得pid : 5088
但是用cut,若以空格为分隔域,则并不是第二个域,而是第七个域,因为root与5088之间有6个空格:
ps -ef|grep "sshd -f"|grep -v grep|cut -d' ' -f7
结论:
awk 以空格为分割域时,是以单个或多个连续的空格为分隔符的;
cut则是以单个空格作为分隔符。
原文地址: Linux查找和替换目录下所有文件中字符串
Linux查找和替换目录下所有文件中字符串
单个文件中查找替换很简单,就不说了。文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结。
查找文件夹下包含字符串的文件
例:查找/usr/local目录下所有包含”rubyer.me”的文件。
grep -lr 'rubyer.me' /usr/local/*
vim替换单个文件中所有字符串方法
例:替换当前文件中所有old为new
:%s/old/new/g
%表示替换说有行,g表示替换一行中所有匹配点。
替换文件夹下包含字符串的文件
sed结合grep
例:要将目录/www下面所有文件中的old都修改成new,这样做:
sed -i "s/old/new/g" `grep old -rl /www`