1.shell的定义和功能
1.1 定义
shell是运行在终端中的文本互动程序
bsh是linux中常用的shell
1.2 功能
1.保护linux内核; 2. 命令解释器
2.Linux中的文件类型(共7种)
test -X
-b 块设备文件 test -b /dev/usb0
-c 字符设备文件
-d 目录文件
-f 普通文件
-l (小写L) 链接文件
-s 套接字文件
-p 管道文件
3. shell 命令
3.1 基本命令
ls ll cd touch rm mkdir rmdir cp cd mv
使用示例:
1.ls -l -a -F -h
2.touch 1.c
3.rm -f -r -i
4.mkdir
5.rmdir 123
6.cd .. ../../../.. - ~ /home/linux/20190214
7.cp cp 1 2 -av
8.mv 1 2
3.2 文件查找命令
find 路径 -name filename 如:find /home-name -1.txt
1.查找文件
find
find 目录 -name 文件名
find / -name 文件名
find . -name '*.c' \*.c
全盘查找
2.文件中查找内容
grep
grep 字符串 文件名
grep 'main' ./20170408/sec3/01socket/ser.c -n
3.查找二进制文件
whereis
在系统路径path下查找文件
whereis vim
whereis ls
3.3 文件查看命令:
cat 如:cat 1.txt
3.4.压缩和解压命令:
1..tar.gz
1.归档
tar -cvf 文件名.tar 目录/*
2.压缩
gzip -c 文件名.tar > 文件名.tar.gz
3.解压
gunzip 文件名.tar.gz
4.解除归档
tar -xvf 文件名.tar
5.归档压缩:
tar -zcvf 文件名.tar.gz 目录/*
6.解除压缩:
tar -zxvf 文件名.tar.gz
2..tar.bz2
1.归档
tar -cvf 文件名.tar 目录/*
2.压缩
bzip2 -k 文件名.tar
3.解压
bunzip2 文件名.tar.bz2
4.解除归档
tar -xvf 文件名.tar
5.归档压缩
tar -jcvf 文件名.tar.bz2 目录/*
6.解除压缩:
tar -jxvf 文件名.tar.bz2
3.5操作符:
1.管道
|
将前面命令的输出作为后面命令的输入
cat /etc/passwd |less
cat /etc/passwd |grep new -n
2.重定向
> 覆盖重定向
>> 追加重定向
cat t1 t2
cat t1 t2> t3
cat t1 t2 >> t3
3.6. 修改文件的权限
rwx
rwx rwx rwx r-x
110 111 111 101
7 7 5
r-- r-- r--
100 100 100
chmod +r/w/x 文件名
chmod 666 文件名
rw- rw- rw-
chmod 777 文件名 (打开全部权限)
1.修改文件所属用
chown
chown zhangsan 文件名
2.修改文件所属组
chgrp
chgrp 组名 文件名
4.shell脚本编程
bash shell gnu
c shell csh
k shell ksh ash
...
shell脚本的本质就是一系列shell命令的集合
4.1 shell脚本编写流程:
1.vim XX.sh #!/bin/bash //shell脚本编程以.sh结尾,头文件
2.编写脚本
3.chmod +x XX.sh //添加执行权限
4. ./XX.sh //运行
注意:shell中引号的使用
"":打印字符串,遇到$变量则打印变量中的值 ———— "$a"
'':打印字符串,遇到$变量依然打印$变量
` `:将中间的字符串按照命令打印——— a='mk'
4.2.shell变量
1.环境变量: env
PATH:存放当前工作的默认路径
PWD:当前所在的工作路径
HOME:当前登录用户的家目录
...
main(int argc,char* argv[])
4.2.位置变量: —— $
需要读出变量时使用—— $a
$1 传入的第一个参数
$2 传入的第二个参数
4.3.shell脚本输入输出
输入———read 如: read a
输出———echo 如:echo '$a'
5.分支语句:
5.1 if语句
if 条件
then
语句
else
语句
fi
如:
if []
then
elif []
then
elif []
then
else
fi
if []
then
fi;
man test
-a and
-o or
test -eq 相等 test 10 -eq $i [ $i -eq 10 ] if( a == 10)
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
[ $i ge 0 -a $i lt 59 ]
test
-b 块设备文件 test -b /dev/usb0
-c 字符设备文件
-d 目录文件
-f 普通文件
-L 链接文件
-S 套接字文件
-p 管道文件
从终端输入一个文件名,判断该文件的类型
5.2 case语句 (c语言中的switch)
case $num in
9)语句
;;
8|||)语句
;;
7)语句
;;
*)语句
;;
esac
6.循环语句
while [ 条件 ]
do
语句
...
done
for
until