dpkg相关命令
dpkg -i 安装本地文件上存在的软件包
dpkg -r 移除一个已经安装的软件包
apt相关命令
软件源配置文件 :/etc/apt/sources.list
更新源后需要 apt-get update 才有效
apt-get :
install 安装软件包
remove 卸载软件包
clean 删除缓存区所有已下载的文件
check 检查系统中依赖关系的完整性
apt-cache:
show 获取二进制软件包的详细描述信息
search 搜索相关字符的软件包
depends 获取软件包的依赖信息
policy 获取软件包当前的安装状态
shell
shell就是linux内核的一个外层保护工具,并负责完成用户与内核之间的交互
shell脚本:若干命令的集合
命令格式:
指令 选项 {参数.....}
1、三要素之间需要空格隔开
2、多个命令在一行书写,需要用分号隔开
3、反斜杠 换行继续前行命令
shell中的特殊字符
file* 匹配以file开头的文件
file? 匹配文件,‘?’代替一个字符
file【abc】 匹配【】中任意一个字符
file[a-z] 匹配 a到z 所有文件
管道 |
前面的输出作为后面的输入
重定向
> file 将file文件重定向为输出源,新建模式
>>file 将file文件重定向为输出源,追加模式
或&> 将由命令产生的错误信息输入到
命令置换 ` `
将一个命令的输出作为另一个命令的参数
sudo shutdown -h now/+40 立即(40分钟后)关机
su 切换到超级用户
su usr 切换到具体普通用户
id 查看当前用户 id
linux文件系统
目前ext4是Linux系统广泛使用的一种文件格式,
最大特点是日志文件系统,可以将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪
linux的文件组织模式犹如一颗倒置的树
绝对路径:以/根目录为起点
相对路径:除根目录以外的起点
文件类型
-:普通文件:指ASCII文本文件、二进制可执行文件,以及硬链接
b:块设备文件:块输入、输出设备文件
c:字符设备文件:原始输入、输出设备文件,每次io操作仅传送一个字符
d:目录文件:包含文件或子目录
l:符号链接文件:只保留了文件地址,而不是文件本身
p:命名管道:一种进程通信机制,用于进程间通讯的暂时文件
s:套接字:用于进程间通信,两台计算机间通讯的应用程序接口
硬链接与软链接
软链接:ln -s 源文件 链接名
硬链接:ln 源文件 链接名
软连接及符号链接文件只是保存了源文件的路径,最好用绝对路径
硬链接,类似一个指针,同源文件都指向源文件对应的磁盘空间。
压缩与解压
gzip gunzip .gz 只能压缩一个文件,无法将多个文件压缩为一个文件 gzip 选项 file
bzip2 bunzip2 .bz2
zip unzip .zip
tar 可以把多个文件打包,也可以打包并压缩
tar -cf file.tar file 把file目录下的文件打包成一个file。tar文件
tar -cjf file.tar file 把file目录下的文件打包成一个file.tar文件,并压缩成file.tar.bz(bzip2)
tar -czf file.tar file 把file目录下的文件打包成一个file.tar文件,并压缩成file.tar.gz(gzip)
tar -tvf file.tar.gz 查看包内详细内容
解压
tar -xjf
tar -xzf
shell编程
shell脚本语言是解释性语言,其本质就是shell命令的有序集合
shell编程的基本过程
1、建立shell文件 touch 、vim、 vi
2、赋予文件执行权限:chmod
3、执行shell文件
./shell ,bash shell,
shell变量
shell变量不支持数据类型,任何赋值都解释为字符串
shell变量不用定义申明,可以直接用
删除变量:unset 变量名
$0.....命令行参数
$# 命令行参数个数
$* $@命令行所有参数
$? 前一个命令退出状态
$$ 正在执行进程id
HOME 用户主目录
IFS 默认空格 tab及换行符
PATH shell搜索路径
PS1 PS2 默认提示符$ 及换行提示符>
TERM 终端类型
shell程序和语句
说明性语句 以#开头的语句,不被执行,除文件开头#!/bin/bash第一句,表名用什么shell执行该文件
功能性语句:任意shell命令、用户程序或其它shell程序
结构性语句: 条件测试语句、多路分支语句、循环语句、循环控制语句
常用功能性语句
read var
read从标准输入读一行并赋值给var
read var1 var2 var3
把第一个单词给var1,第二个单词给var2,其余所有给var3
如果无数据输入,直到数据到来或被终止执行
expr
算术命令expr主要用于进行简单的整数运算。
test 语句可以测试三种对象:字符串、整数、文件
结构语句
if 表达式
then
命令表
fi
if 表达式
then
命令表1
else
命令表2
fi
test命令使用
1、
test $name -eq $1
echo $?
2、
if [ -f $file name ]
then
命令表
fi
3、
if test -f $filename
then
命令表
fi
多路分支语句
case 字符串变量 in
模式1)
命令表
;;
*)
命令表
esac
循环语句
for 变量名 in 单词表
do
命令表
done
while 命令表达式
do
命令表
done
循环控制语句
break n 跳出n层
continue 马上转到最近一层循环语句下一轮循环上
continue n 转到最近n层循环语句的下一轮循环上
shell函数
1、函数在调用前必须先定义
2、调用程序可传递参数给函数,函数可用return语句把运行结果返回给调用程序
3、
函数只在当前shell中起作用,不能输出到子shell中
定义格式
function_name(){
}
调用格式
1
value_name=function_name [ arg1 arg2]
2
function_name [ arg1 arg2 ]
echo $?
函数变量作用域
全局变量
局部变量:
local name
自己写的shell脚本
1、使用for循环实现创建100个空白文件 file*.txt
#!/bin/bash
for var in {1..100}
do
touch "file$var.txt"
done
2、根据命令行参数决定创建还是删除文件
echo "请输入文件名、创建(1)或 删除(2),并用空格隔开."
read num1 num2
if [ $num2 -eq 1 ]
then
test -f $num1
if [ $? -eq 0 ]
then
echo "文件存在,程序退出。"
exit
elif [ $? -eq 1 ]
then
touch "$num1"
fi
fi
if [ $num2 -eq 2 ]
then
test -f $num1
m=$?
if [ m -eq 1 ]
then
echo "文件不存在,程序退出。"
exit
elif [ m -eq 0 ]
then
rm "$num1"
fi
fi
3、使用while循环打印1-100所有的偶数
i=1
while [ $i -le 100 ]
do
if [ `expr $i % 2` -eq 0 ]
then
echo -n " $i "
fi
i=`expr $i + 1 `
done
echo ""
4、打印如下图形
*
***
*****
*******
*********
#!/bin/bash
echo "请输入大小:"
read n
i=0
j=0
while [ $i -le $n ]
do
x=$((RANDOM%6+31 ))
j=0
while [ $j -le `expr $n - $i` ]
do
echo -ne " "
j=`expr $j + 1`
done
j=0
while [ $j -le `expr 2 * $i` ]
do
# x=$((RANDOM%8+30 ))
echo -ne " 33[0;49;"$x"m* 33[0m"
j=`expr $j + 1`
done
echo ""
i=`expr $i + 1`
done
5、输入一个用户名判断该用户是否存在 检测/etc/passwd文件
#!/bin/bash
echo "请输入要查找的用户名:"
read usr
grep $usr /etc/passwd
#echo $?
if [ $? -eq 0 ]
then
echo "用户存在。"
exit
elif [ $? -eq 1 ]
then
echo "用户不存在。"
fi
~