一、shell变量$#,$@,$0,$1,$2的含义解释
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数
eg:
添加可执行权限:
传入两个参数 qin kai 执行shell脚本
tar解压缩的命令
下面的命令的独立的命令,压缩解压都要用到其中一个,可以和别的命令连用。
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
参数-f是必须的
-f: 使用档案名字,这个参数是最后一个参数,后面只能接档案名。
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Z
cut
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b;其中-nb不会将多字节字符分开
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
test.log的内容:
192.168.1.100 - - [12/Dec/2012:08:54:18 +0800] "GET /icons/folder.gif HTTP/1.1" 200 225
字节切分:
字符切分:
域:-d 用来指定分隔符
sort(分类)
sort命令的一般格式为:
sort -cmu -o output_file [other options] +pos1 +pos2 input_files
下面简要介绍一下sort的参数:
-c 测试文件是否已经分类。
-m 合并两个分类文件。
-u 删除所有复制行。
-o 存储sort结果的输出文件名。
其他选项有:
-b 使用域进行分类时,忽略第一个空格。
-n 指定分类是域上的数字分类。
-t 域分隔符;用非空格或t a b键分隔域。
-r 对分类次序或比较求逆。
+n n为域号。使用此域号开始分类。
n n为域号。在分类比较时忽略此域,一般与+n一起使用。
post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始
uniq
显示唯一的行,对于那些连续重复的行只显示一次
uniq命令不加任何参数,仅显示连续重复的行一次
-c 参数显示文件中每行连续出现的次数
-d选项仅显示文件中连续重复出现的行
-u选项显示文件中没有连续出现的行
head
默认显示前10行记录,也可以由用户自己指定:head -n 30
tail -n 5
显示输入文件的最后5行
加入环境变量
export PATH=$PATH:/home/lm/apache-jena-2.7.4/bin
查看文件大小
du -sh *
查看系统所用用户
cat /etc/shadow
查看端口占用
lsof -i:8000
netstat -tln | grep 8080
查看操作系统位数:
getconf LONG_BIT
修改ssh服务的端口:
/etc/ssh/sshd_config
查看占用cpu的进程:
ps -eo pcpu,pid,user,args | sort
-k 1 -r | head -16
输出指定目录下的文件名:
#!/bin/bash
path=$1
cd $path
for filename in `ls`
do
echo $filename
done