shell学习记录

来源:互联网 发布:淘宝折扣怎么设置 编辑:程序博客网 时间:2024/06/03 00:05

    最近年关公司任务不多,所以抽时间学习一下shell。

day1:

cat 1.txt | tr '0' '\n' 把1.txt中的0替换成\n

var=value:赋值操作   var = value:相等操作

变量都会以字符串的形式存储

环境变量:为在当前进程定义,而从父进程继承的,命令:export

bc:很有用的变量运算函数

0:stdin标准输入

1:stdout标准输出

2:stderr标准错误

重定向:

“xxx”>file(会把file中的内容先清空再写入xxxx)

“xxx”>>file(会在file中的内容后追加xxxx)

其中> == 1>     >> == 1>>

重定向之后输出写入了file,所以没有东西可以通过管道传给下面的命令;

而tee在重定向的同时保存一个stdin可以传给下面的命令

tee(覆盖重定向) tee -a(追加)

command | tee file1 file2...


cat <<EOF>1.txt

abc

xyz

EOF

把文本段重定向到1.txt 其中的EOF可以换成任何在文本段中没有出现的字符串

注释整段脚本代码:

:<<COMMENTBLOCK

SHELLSCRIPT

COMMENTBLOCK

其中的:表示空语句


别名:alias

echo 'alias cmd="cmd seq" >> ~.bashrc' (别名只在当前shell环境中有效,关闭了终端就无效了,而每次打开终端的时候都会去执行.bashrc 所以把命令放在这里面就能保证每次打开终端都能使用该别名)



day2:

$# 传给脚本的参数个数

$0脚本本身的名称

$1传给shell脚本的第一个参参数

$2传给shell脚本的第二个参参数

$@传给shell脚本的所有参数列表


存储命令的输出:

1.子shell  格式:(cmd) 产生独立的进程,不影响当前的shell

cmd_out=$(ls|cat)

2.反引用:

cmd_out=`ls|cat`     (反引号,位于键盘的~键上)

可以将子shell和反引用的结果放在双引号中来保留空格和换行符。


test命令等同与[ ]


netstat -anp 显示系统端口使用情况

lsof -i :端口 显示占用该端口的进程情况 



day3:

录制与回放终端(很方便的用于教学 )

开始录制:

script -t 2>timing.log -a output.session

cmd

exit

回放录制:

scriptreplay timing.log output.session


b    块(512字节)

c    字节

w    字(2字节)


find 的-exec选项允许对找到的文件执行命令操作;

找到当前目录下的root用户的文件改成所有者为guozheng

find . -type f -user root -exec chown guozheng {} /;


xargs(用于给只能接受参数的命令提供参数)

cat rm |xargs -d ' ' rm -rf


tr(只能接受stdin不能接受参数输入):

tr [option] set1 set2


执行算数运算:

$[operation]:$[1+2+3]=6


sort -k n.m,p.q file

根据第n列的第m个字符到p列的第q个字符排序

uniq只能对排过序的输入去除重复的行,所以常与sort结合使用

sort file | uniq


1 0