shell:
1、$# 和 $*之类的特殊变量
传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数就是$1
$*和$@的区别
不被双引号“”包含时,都以“$1” "$2" ... "$n" 输出所有参数
被双引号“”包含时,“$*" 会将所有的参数作为一个整体,以“$1 $2 ... $n” 的形式输出;“$@” 以“$1” "$2" ... "$n" 的形式输出所有参数。
$?
退出状态是一个数字,一般情况下,大部分命令执行成功返回0,失败返回-1.
2、用命令查看文本的第十行
查看开头n行:
head -n 10 filename #查看开头10行
查看末尾n行:
tail -n 10 filename #查看末尾10行
查看文本文件行数:
wc -l filename #查看文件行数
查看特定(几)行:
sed -n ‘45,50p‘ filename #显示第45行到50行
查看特定几列:
awk -F "[:]" ‘print{ $3}‘ filename #通过-F 指定分隔符
取出文本文件的第100行到200行:
sed -n ‘100,200p‘ inputfile
awk ‘NR>=100&&NR<=200{print}‘ inputfile
head -200 inputfile | tail -100
3、搜索定位文件
查找文本内容所在文件位置:
grep "*m*" ./m* | less #| less表示随意阅读
查找时不区分大小写:
grep -i "字符串" 文件名
查找匹配的行数:
grep -c "字符串" 文件名
查找不匹配的行:
grep -v "字符串" 文件名
从根目录开始查找所有扩展名为.log 的文本文件,并找出包含“ERROR” 的行:
find / -type f -name "*.log" | xargs grep "ERROR"
4、vi操作
vi命令模式:
光标定位:
0 行首
$ 行位
/字符串 查找字符串。linux awk -fn下一个,N上一个,查找样式变为?字符串
撤销和重复:
u 撤销上一个动作
. 重复上一个动作 如删除动作后,按. 重复删除动作
复制粘贴删除(命令模式不显示):
nyy 复制光标所在的向下n行内容
p 光标所在位置粘贴复制的内容
ndd 删除光标所在的向下n行
shift + g 到为本末尾
x 删除光标后一个位置字符
dd 删除光标所在整行
复制粘贴删除(命令模式显示):
:set number 显示行号
:set nonu 取消显示行号
:1,3y 复制第一行到第三行
:1,3d 删除第一行到第三行
:1,3s/str/str_new/g 将第一行到第三行的str替换为str_new,如果一行有多个str,都替换
:s/str/str_new/g 将当前行所有的str替换为str_new
:1,3s/str/str_new/ 将第一行到第三行的str替换为str_new,如果一行有多个str,只替换第一个

:1,3g/str/d 删除第一行到第三行包含str的行
5、命令执行脚本
./helloworld.sh #切换到shell脚本所在目录执行脚本
/data/shell/hello.sh #以绝对路径执行脚本
bash hello.sh 或 sh hello.sh #切换到shell脚本目录,执行脚本【该方式,是bash调用sh脚本,故不用事先给予sh执行权限】
.hello.sh 或 source hello.sh #在当前shell环境中执行shell脚本【前三种执行shell是在当前shell[称为父shell],开启一个子shell环境,shell脚本执行完,子shell环境随即关闭,回到父shell环境】这种执行,是在当前shell中执行。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-76578-1.html
然而我是不会为了这个更新的
因为他不配
那年的几何爱情
可是合娶老婆你太恶心我了