文章目录
一、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
:连接系统库