debian linux: deb 软件包
deb软件包分为两种,.deb二进制软件包,.dsc源码包
软件包的两种管理工具
1.dpkg
软件包软件的安装包必须存在
不能从镜像点获得安装包
不能检测软件之间的依赖关系
dpkg -i package.deb #安装包
dpkg -r package #删除包
dpkg -P package #删除包(包括配置文件)
dpkg -L package #列出与该包关联的文件
dpkg -l package #显示该包的版本
dpkg --unpack package.deb #解开deb包的内容
dpkg -S keyword #搜索所属的包内容
dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出deb包的内容
dpkg --configure package #配置包
共享文件夹在 /mnt/hgfs 目录下
2.agt
2.1apt-get
对软件进行一系列实际操作
sudo apt-get install 软件名
sudo agt-get remove 软件名
sudo agt-get --pugre remove 软件名
sudo agt-get update 软件名
sudo agt-get upgrade
sudo agt-get clean
2.2apt-cache
显示软件包的一系列信息
sudo agt-cache show 软件名
sudo agt-cache policy 软件名 查看安装状态
sudo agt-cache depends 软件名
sude agt-cache rdepends 软件名
3.wc
l , --lines : 显示行数;
-w , --words : 显示单词数;
-m , --chars : 显示字符数;
-c , --bytes : 显示字节数;
-L , --max-line-length : 显示最长行的长度;
4.输入输出重定向
输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;
输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。
./a.out >> file // 如果文件不存在则新建,如果文件存在则追加
[root@zaishu ~]# ls-l 2>x //如果对于错误数据流的重定向,需要指定描述符 2
[root@zaishu ~]# cat x
-bash: ls-l: command not found
[root@zaishu ~]# ls -l > x //不输出到屏幕,输出到文本,这就是输出重定向;另外当指定没有描述符的时候,默认就是标准数据流。
root@zaishu ~]# ls -l 1> y (这两条命令的效果一样 1就是代表标准输出流)
5.维护系统命令
5.1:man man :查看 main 手册
第一章节:shell命令 // man printf第二章节:系统调用 // man 2 open
第三章节:C库(库函数)// man 3 printf
5.2:sudo passwd 用户密码:修改用户密码
5.3: su 切换用户
su:默认切换到 root
sudo su 用户名:切换到指定用户
exit:退出切换的用户
5.4:echo "输出内容"
-n 输出不换行
5.5:date 查看当前系统的日期
5.6:df -Th / df -h:查看磁盘空间
6.用户管理命令
6.1sudo adduser 用户名:添加用户
用户信息保存在/etc/passwd
添加sudo权限:
添加文件写的权限:sudo chmod u+w /etc/sudoers给用户添加 sudo 权限:sudo vi /etc/sudoers添加:用户名 ALL=(ALL:ALL) ALL
撤销文件写的权限:sudo chmod u-w /etc/sudoers
删除用户:sudo deluser --remove-home 用户名
7.进程管理命令
7.1 ps:查看进程状态
ps -aux
ps -ef 可以查看父进程id(PPID)
ps -ajx PPID PID PGID(组id) SID(会话id)
7.2. top 动态显示进程状态
NI:优先级 +19 ~ -20值越小,优先级越高
PR = 20 + NI
sudo renice -n num PID
sodu nice -n num ./可执行文件
kill -l :查看linux下的信号
kill num PID:给指定进程发送num号信号
killall 文件名:杀死所有文件名为该文件名的进程
2) SIGINT ctrl+c 结束进程
3) SIGQUIT 程序正常退出
4) SIGILL 结束进程
9) SIGKILL 强制杀死进程 不可忽略信号 无条件终止指定进程
10) SIGUSR1 未定义功能
12) SIGUSR2 未定义功能
13) SIGPIPE 管道破裂信号
14) SIGALRM 时钟信号
17) SIGCHLD 子进程状态发生改变会给父进程发送
19) SIGSTOP 停止 不可忽略信号
8.文件操作命令
1. file 文件名:查找文件属性信息2. rm -f:强制删除,文件存不存在都会删除3. cat 文件名:将文件内容输出到终端cat -n 文件名:将文件内容及行号输出到终端
4. head 文件名:默认输出文件内容的前10行
head -num 文件名:将前num行的内容输出到终端
5. tail 文件名:默认输出文件内容最后的10行
tail -num 文件名:将后num行的内容输出到终端
6. find 查找文件
格式:find 路径 -name "文件名" --》从这个路径查询文件
7. grep 查找指定字符串
grep "字符串" 文件名:在一个文件中查找
grep "字符串" 路径 -nR:从这个路径开始往后查找找到所有用这个字符串的文件
1. lscpu:显示 CPU 信息2. free -g:显示内存的使用情况
9.硬链接和软链接
ln -s 原文件名 链接文件名
1) 软连接的属性l 相当于快捷方式
2) 源文件删除,链接断开,建立源文件之后重新链接
3) 软连接可以链接目录
4) 修改内容都变化
ln 原文件名 链接文件名
ln 根据linux系统分配给文件的inode号(ls -li)进行建立的,没办法跨越文件系统
ln 被链接的文件(源文件) 生成的链接文件(目标文件)
1) 硬链接的属性 - 相当于生成一个副本 起别名
2) 源文件删除链接文件依然存在
3) 不能去链接目录
4) 修改内容都变化
区别:
1.软链接可以链接目录,硬链接不能链接目录
2.软链接可以跨文件系统,硬链接不能跨文件系统
3.软链接和原文件的inode不同,硬链接和原文件的inode相同
4.软链接本质和原文件本质不是一个文件,硬链接和原文件本质是一个文件
5.软链接的创建和删除不影响链接数,创建硬链接,链接数增加,删除硬链接,链接数减少。
10.shell变量
1.自定义变量
unset YY
echo $YY
2.环境变量
系统配置好的,内置的环境
命令查看系统环境变量:printenv 或 env
新建一个环境变量:export HELLO="Hello!" 临时终端有效
显示环境变量:exho $HELLO
永久生效只需要将这个命令放到用户目录下 .bashrc 文件中,当前用户永久有效
3.位置变量
定义:当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数$0 执行的脚本名
$1-$9、${10}-${n} 命令行传的参数
$# 参数总个数
$@ 命令行所有参数,每个参数区别对待
$* 命令行所有参数,所有参数视为一个整体
4.预定于变量
$$ 脚本运行的当前进程ID号
$? 获取上一句命令是否正确执行的结果
0:真 非0:为假
11.makefile
格式:
格式:目标:依赖
命令
Makefile 根据以下步骤编写:
gcc -c xxx.c -o xx.o
gcc xx.o -o xx
main: main.o fun.o
gcc fun.o main.o -o main
main.o: main.c
gcc -c main.c -o main.o
fun.o: fun.c
gcc -c fun.c -o fun.o
.PHONY: clean //伪命令
clean:
rm -rf *.o main
makefile:
自定义变量:
= :递归展开
:= :直接赋值
+=:追加新的值
?=:判断之前是否定义,如果定义了,不重新赋值
预定义变量:
系统预先定义好的一些变量,可能有默认值可能没有
RM 文件删除程序的名称,默认值为 rm -f
CC C编译器的名称,默认值为cc
CPP C预编译的名称,默认值为$(CC) -E
CFLAGS C编译器的选项,无默认值
OBJS 生成的二进制文件或目标文件,自己定义
自动变量:
$<:第一个依赖文件的名称
$^:所有不重复的依赖文件,以空格隔开
$@:目标文件的完整名称