文章目录
一、shell
命令解释器,执行输入的命令;
1.1 相关操作
cat /etc/shells
查看当前系统下有哪些shell;
echo $SHELL
:查看当前系统正在使用的shell;
1.2 快捷键盘
Ctrl-p
:上;
Ctrl-n
:下;
Ctrl-b
:左;
Ctrl-f
:右;
Ctrl-d
:关闭;
Ctrl-a
:光标移至命令开头;
Ctrl-e
:光标移至命令结尾;
Ctrl-u
:清除正在输入的命令行。
二、目录和文件
2.1 目录介绍
bin
:存放二进制可执行文件;
boot
:开机启动文件;
dev
:存储设备;
etc
:存用户的相关配置信息;
home
:用户目录;
lib
:存放所有库;
usr
:软件资源;
bin
:应用程序;
game
:游戏程序;
lib
:应用程序的库文件;
local
:包含用户程序;
sbin
:管理员应用程序。
2.2 文件路径
相对路径
:
从当前位置开始描述。
绝对路径
:
从
/
目录开始描述。
快速切换
:
.
:表示当前目录;
..
:表示上一级目录;
cd -
:会切换到刚才的目录。
2.3 文件类型【查看文件的第一个字符】
- 普通文件:-;
- 目录文件:d;
- 字符设备文件:c;
- 块设备文件:b;
- 软连接:l;
- 管道文件:p;
- 套字接:s;
2.4 ls
查看当前目录下的文件
参数
:
-a
:显示隐藏文件;
-l
:查看文件详细信息;
-d
:显示目录;
-R
:查看子目录;
2.5 which
查看指定命令所在路径。
2.6 pwd
查看当前所在路径
2.7 rm
删除文件
-r
:删除文件夹;
-f
: 强制删除。
2.8 touch
- 将文件修改为当前时间;
- 若文件不存在,则创建。
2.9 mv
移动文件。
mv 文件 指定目录
2.10 cp
拷贝文件
-a
:拷贝文件夹的全部,且文件时间不变;
cp 拷贝文件 到指定目录
2.11 cat
查看文件内容
tac
:文件倒置显示
2.12 more
分屏显示。
空格换页、回车换行、
Ctrl+c
退出
2.13 tree
需要安装:
sudo apt-get install tree
;
显示目录和文件
2.14 du
显示磁盘大小
2.15 df
查看磁盘使用情况。
df --block-size=GB
2.16 ln
硬链接
:
- 链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接;
- 对其中一个文件修改【具有相同的inode】,则源文件也会被修改。
软链接
:
ln -s file file.s
- 本质是创建一个路径指向源文件。
- 若要在任何文件都能访问,则file要使用
绝对路径
。
-s
:创建软连接
三、文件属性和用户用户组
3.1 whoami
查看当前登录用户。
3.2 chmod
修改文件属性。
chmod [who] [+|-|=] [mode] 文件名
- 在ls中权限组合【ugo】:
chmod a+w file
- u:所有者;
- g:同组用户;
- o:其他用户。
- a:以上所有。
数字设定法:
rwx --> 421
==> 设定
chmode 471 file
即文件
-r--rwx--x
3.3 chown
修改用户权限:
chown 用户:组 文件
3.4 修改用户组
修改用户组:
chgrp 用户组 文件
四、查找与检索
4.1 find
find 目录 -type/-name ''
-size
;
-name
;
-maxdepth
;
-type
若要配合管道使用
|
需要结合
xargs
;可在前后加上
-print0=null
作为文件的切割项
4.2 exec
执行语句。
find 目录 -xx 'findword' -exec [执行的语句] {} \;
\
:表示转移;
{}
:表示包括-exec前面的所有内容。
4.3 ok
与exec类似,但是交互方式的。
4.4 grep
根据内容检索。
grep -r '检索内容 文件'
五、软件的卸载与安装
5.1 apt-get
apt-get update
:更新服务器列表;
apt-get install 软件名
:安装软件;
apt-get remove 软件吗
:卸载。
5.2 deb包安装
- 安装deb软件包命令:
sudo dpkg -i xxx.deb
;- 删除软件包命令:
sudo dpkg -r xxx.deb
;- 连同配置文件- -起删除命令:
sudo dpkg -r --purge xxx.deb
;- 查看软件包信息命令:
sudo dpkg - info xxx.deb
;- 查看文件拷贝详情命令:
sudo dpkg -L xxx.deb
;- 查看系统中已安装软件包信息命令:
sudo dpkg -1
;- 重新配置软件包命令:
sudo dpkg-reconfigure xxx
。
六、压缩包
6.1 tar
tar -zcvf 压缩包名称 .tar.gz压缩材料
:压缩文件 【参数
v
:显示压缩过程可加可不加】
tar -zxvf 压缩包
:解压缩
z
代表gzip压缩方式;
j
表示bzip2压缩方式
6.2 rar
sudo apt-get install rar
:需要先安装
rar a -r 文件.rar 文件
:压缩;
unrar x 文件.rar
:解压缩。
6.3 zip
zuo -r 文件.zip 文件
:压缩;
unzip 文件.zip
:解压缩。
七、其他命令
whoami
:当前用户;
who
:查看用户登录;
ps -aux
:查看进程;
top
:任务管理器;
env
:显示所有环境变量;
w / who / whoami / last
:查看用户登录情况;
adduser / passwd / userdel
:创建用户修改密码/删除用户;
su
:切换用户;
date / cal
:查看日期日历;
write / wall / mesg
:发送消息;
history
:查看历史命令;
reboot
:重启
shutdown
:关机 +*参数:时间/now;
7.2 网络相关命令
ping
:检查网络可达性 ICMP协议;
ttl = time to live
ping to death DDoS 分布式拒绝服务攻击
ifconfig
:127.0.0.1 回环地址
netstat -nap
(p:进程);
7.3 进程相关命令:
ps
:(
查看进程
:第一组数就是进程号);
ps -a(all)x
(显示没有控制总段的进程);
ps -u
:查看特定用户的进程;
ps -ef 查看所有进程
;
ps -aux
:把结果按照cpu或者内存来筛选;
ps -aux --sort -pcpu | less
:通过cpu来升序排序;
ps -aux --sort -pmem | less
: 根据内存来升序;
ps -C
: -C 参数,后面跟你要找的进程的名字。
kill:(结束进程)
kill -9
:强制杀死进程;
jobs(
查看后台的进程
)
jobs –r
:只显示running状态的进程;
jobs –p
:只显示PID。
fg / bg(后台置前台 / 后台置前台)
Ctrl z
:把前台放回后台。
top:(任务管理器、cpu、内存)
s
:改变画面更新频率;
l
:关闭或开启第一部分第一行 top 信息的表示;
t
:关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示;
m
:关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示;
N
:以 PID 的大小的顺序排列表示进程列表;
P
:以 CPU 占用率大小的顺序排列进程列表;
M
:以内存占用率大小的顺序排列进程列表;
h
:显示帮助;
n
:设置在进程列表所显示进程的数量;
q
:退出 top;
s
:改变画面更新周期。
&
在启动命令后加 & 表示在后台运行
7.4 ssh命令:
登录
:ssh 用户名@ip(公网ip);
文件操作
:
scp 文件 root@ip:路径
;
scp
:远程安全拷贝;
sftp
:
sftp 用户名@ip
命令前可加个
l -- local
文件加
-r
;
lls
:查看本地文件;
put
:上传到链接的服务器;
get
:下载,从链接的服务器下载下来。
八、vim命令
8.1 三种模式
- 命令模式:【a\i\o\A\I\O\s\S】 -> 编辑;【:】-> 末行模式;
- 编辑模式:【ESC】-> 命令模式;
- 末行模式:2次【ESC】-> 命令模式;执行末行命令 -> 命令模式。
8.2 命令模式
8.2.1 插入
a
:光标后插入;
A
:行末插入;
i
:当前光标插入;
I
:行首插入;
o
:换行插入;
O
:上一行插入;
s
:删除光标所在的字符,插入;
S
:删除光标所在行,插入;
8.2.2 移动
h
:左移;
j
:下移;
k
:上移;
l
:右移;
M
:光标移到中间行;
L
:光标移到最后一行行首;
G
:移动到指定行,
行号G
;
G
:移动文件末尾;
gg
:光标到文件开头;
gg=G
:程序自动格式化;
%
:光标移动到一个括号中,执行会跳到相应的另一半;
0
:光标移到行首;
$
:光标移至行尾;
8.2.3 删除
x
:删除当个字符;
dw
:删除单词,光标要在首字母;
D | d$
:删除光标到行末;
d0
:删除光标到行首;
r
:按下,在按其他键即可替换;
V
:按下,在移动光标即可选中;
dd
:删整行,相当于剪切;
数量 dd
:光标在删除行首行,删除n行;
8.2.4 复制
yy
:复制整行;
p
:复制到光标后;
P
:复制到光标前;
8.2.5 查找、替换
/查找内容
:回车即可查找;
n
:查找下一个;
*
:光标放在要查找的单词上,在
*
即可查找下一个【若在任意一个单词,即可检索那个单词】;
#
:查找上一个;
:s /要替换的/替换词
:当行替换,替换光标所在行;
:%s /要替换的/替换词/g
:全部替换,若无
/g
则单替换每一行中的第一个;
:起始行,末行s /要替换的 替换词
:指定行替换;
u
:撤销;
ctrl r
:反撤销;
8.3.6 分屏
sp
:上下分屏;
Ctrl ww
:切换;
qall
:退出所有;
vsp
:左右分屏;
章数 K
:光标移至该函数,跳转到文档;
[d
:光标移至该名,查看宏定义;
:!命令
:命令可以为终端执行命令;
9、gcc编译
9.1 预处理
xx.c
->
xx.i
,
gcc -E
;- 展开宏、头文件,替换条件编译,删除注释、空行、空白。
9.2 编译
xx.i
->
xx.s
,
gcc -S
;- 检查语法规范;
9.3 汇编
xx.s
->
xx.o
,
gcc -c
;
将汇编指令翻译成机器指令;
9.4 gcc参数
-I 目录
:指定头文件目录;
-c
:只作预处理、编译、汇编;
-g
:编译时添加调试文件;
Wall
:警告;
十、静态库和共享库
10.1 静态库
对空间要求低,而时间要求高的程序中;
制作
:
- 先将
xx.c
生成
xx.o
文件;- 在使用
ar rcs name.a xx.o
生成静态库;- 使用静态库,在编译之前添加静态库名称。
10.2 动态库
对时间要求低,对空间要求高。
制作
:
- 先将
xx.c
生成
xx.o
文件;
gcc -c xx.c -o xx.o -fPIC
;
gcc -shared -o 库名.so xx.o
;- 编译可执行程序时,要指定动态库,
-l 指定库名
,
-L 指定库路径
;
- 链接器:工作于链接阶段,工作时需要
-l
和
-L
;- 动态链接器:工作于程序运行阶段,工作时需要提供动态库所在目录位置。
- 【1】设置动态库路径:
export LD_LIBRARY_PATH=路径
,临时生效,重启后即失效;- 【2】若要永久生效,写入终端配置:
.bashrc
在使用
source . bashrc
;- 【3】将动态库拷贝到
/lib
下;- 【4】配置文件:
vi /etc/ld/so/conf
,写入动态库的绝对路径,在
ldconfig -v
生效;
ldd 可执行文件
:即可查看动态库配置路径。
11、gdb调试
-g
:使用于编译,后续即可调试;
gdb xx.out
:即可进入调试;
list num
:即可在num查看;
b num
:在num行设置断点;
r
:运行;
n
:下一条指令,会跳过函数;
s
:下一条,会进入函数;
p x
:查看变量的值;
finish
:结束当前函数调用;
start
:从头开始执行;
set args值
:设置main参数值;
run 参数
:可直接运行并设置main参数;
info b
:查看断点信息;
b num if ..
:条件断点;
ptype
:查看变量类型;
bt
:查看函数当前所在的栈帧;
frame num
:切换栈帧;
display 变量
:跟踪显示变量值;
undisplay 变量
:取消跟踪;
12、makefile项目管理
执行顺序递归都最后的命令
12.1 规则
目标:依赖条件
(tab缩进)命令
- 目标要写在
最前面
;- 若不要编译的时候显示该条命令,则在命令前增加
@
;- 执行文件时,可指定目标
make 目标
,否则执行第一句;- 目标时间必须晚于依赖条件的时间,否则更新目标;
- 依赖条件若不存在,找新的规则去产生依赖;
ALL: xx
:指定生成目标;
变量 =
:替换;
+=
:追加;
:=
:恒等于。
12.2 函数
$(wildcard ./*.c)
:匹配当前工作目录下的所有
.c
文件,并组成列表;
$(patsubst %.c, %.o, $(src))
:将src中包含参数1的部分,替换为参数2;
make clearn -n
:
-n
模拟执行;
12.3 自动变量
$
:变量引用时,需要加上切使用
()
;
$@
:目标文件;
$^
:所有依赖条件。
$<
:在规则命令中,表示第一个依赖条件;
$?
:构造所需文件列表中更新过的文件;
CC
:默认
CC=gcc
CC=arm-linux-gcc
;
RM
:删除文件,
rm -f
;
12.4 模式规则
%.o:%.c【%:任意】
gcc -c $< -o $@
【*:所有】
12.5 静态模式规则
$(obj):%.o:%.c
:保证指向;
12.6 伪目标
.PHONY:
clean:(无依赖)
-rm -rf xxx;
// - 保证删除不存在的文件时,不报错;
使用:
make clear
【注】:
- 若该命令无注释,则make不会主动去寻找它的依赖性(即不会执行它的命令),若要执行,则需要加上该label。
- 可以在一个makefile中定义不用的编译或是和编译无关的命令,比如
程序的打包,程序的备份
等等。
12.7 多目录工程
- 源文件
src
:放置
*.c
;- 头文件
include
:放置
*.h
;- 库文件
lib
:放置
*.sc
;- 可执行文件
bin
:生成二进制。
-I
:头文件连接;
-L
:库文件目录连接;
-l
:库文件访问;
lm
:连接系统库