一、Linux常见目录介绍:
/:根目录
/bin:可执行的二进制文件
/boot:放置linux系统开机启动程序
/dev:存放linux系统下的设备文件:字符设备、块设备
/etc:用户信息和系统配置文件 passwd、group
/home:系统默认的家目录
/lib:系统使用的函数库目录
/media和/mnt:光盘默认挂载点
/opt:安装第三方软件所需的默认目录
/proc:此目录的数据都在内存中(不占用磁盘空间),如系统核心、外部设备等
/root:系统管理员的家目录
/usr:用户资源管理目录 unix software resource
二、主键盘常用快捷键
Tab键:补齐命令、补齐路径、显示当前目录下的所有目录
中断进程:ctrl + c
光标瞬移:ctrl + a 移动到光标头部,ctrl + e 移动到光标尾部
删除整行:Ctrl + u
删除光标到行末:Ctrl + k
增大终端字体:Ctrl + Shift + + (Ctrl、Shift、+组合)
减小终端字体:Ctrl + -
新建一个终端:Ctrl + Alt + T
三、目录和文件操作
Linux系统文件类型: 7/8 种(包括位置文件则8种)
普通文件:- 包括文本文件、二进制文件和数据文件
目录文件:d 用于组织文件和子目录
字符设备文件:c 使用字符流与设备进行交互,如键盘和鼠标
块设备文件:b 与设备进行交互,如硬盘和 CD-ROM
软连接:l 指向另一个文件的链接
管道文件:p 用于进程间通信
套接字:s 用于网络编程
未知文件
目录项详细信息:
文件权限 硬链接计数 所有者 所属组 大小 时间 文件名/文件夹名
which查看命令所在目录位置 如:which ls
cp -a dirname1 dirname2 复制目录1及其下所有文件到目录2
cp -r dirname1 dirname2 递归复制目录1到目录2
这里-a和-r的差别在于,-a是完全复制,文件权限,改动时间什么的也完全相同
more filename 和cat差不多,但是对于大文件查看很强势
空格翻页,回车一行,用q或者Ctrl-c退出
head -n filename 查看文件前n行
不加-n参数默认查看10行
tail -n filename 查看文件后n行
默认查看10行,顺序显示的,不是倒序显示,1-10查看后4行是78910
tree 命令,查看当前目录结构树
需要安装tree
四、软连接和硬链接
ln -s file file.s 创建一个软链接
软链接就像windows下的快捷方式
ln file file.h 创建一个硬链接
创建硬链接后,文件的硬链接计数+1
五、创建修改用户和用户组
u 表示"用户(user)",即文件或目录的所有者
g 表示"同组(group)用户",即与文件所有者有相同组ID的所有用户
o 表示"其他(others)用户"
a 表示"所有(all)用户",它是系统默认值
如:chmod 764 hello.c
其中:所有者 rwx = 7 所有者所在组 rw = 6 其他用户 r = 4
六、find命令:找文件
-type 按文件类型搜索 d/p/s/c/b/l/ f:文件
-name 按文件名搜索
find ./ -name "*file*.jpg"
-maxdepth 指定搜索深度。应作为第一个参数出现。
find ./ -maxdepth 1 -name "*file*.jpg"
-size 按文件大小搜索. 单位:k、M、G
find /home/itcast -size +20M -size -50M
-atime、mtime、ctime 天 amin、mmin、cmin 分钟。
-exec:将find搜索的结果集执行某一指定命令。
find /usr/ -name '*tmp*' -exec ls -ld {} \;
-ok: 以交互式的方式 将find搜索的结果集执行某一指定命令
-xargs:将find搜索的结果集执行某一指定命令。 当结果集数量过大时,可以分片映射。
find /usr/ -name '*tmp*' | xargs ls -ld
-print0:
find /usr/ -name '*tmp*' -print0 | xargs -0 ls -ld
-atime、mtime、ctime 天 amin、mmin、cmin 分钟。
按照时间搜索
a 表示最近访问时间
m 表示最近更改时间,指更改文件属性一类的
c 表示最近改动时间,指更改文件内容
七、grep和xargs
grep命令:找文件内容
grep hello hello.c -n //-n参数:显示行号
管道符:|
将管道符左边命令的结果,作为右边命令的输入,如:
cat hello.txt | grep helloworld //找到hello.txt中的helloworld
wc命令用于统计字数。它可以计算行数、单词数和字符数
统计文件的行数、单词数量
wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
grep、wc、管道符的组合使用
grep hello hello.c | wc -l //查找hello.c中hello的行数
ps监控后台进程工作情况,默认只显示当前可以和用户交互的进程
ps aux | grep 'cupsd' -- 检索进程结果集
使用grep搜索进程,输出只有一条结果则是搜索进程本身 。
对find操作的结果集进行操作:
find ... | xargs ls -l
find ... -exec ls -l {} \;
以上命令等价。差别在于当结果集合很大的时候,xargs会对结果进行分段处理,所以性能好些
-xargs:将find搜索的结果集执行某一指定命令。 当结果集数量过大时,可以分片映射
find /usr/ -name '*tmp*' | xargs ls -ld
xargs默认用【空格】来分割结果集,当文件名有空格的时候,会因为文件名被切割失效
解决xargs的缺陷,指定切分符号位null(-print0)
find /usr/ -name '*tmp*' -print0 | xargs -print0 ls -l
八、tar
tar压缩:
tar -zcvf 要生成的压缩包名 压缩材料。
tar zcvf test.tar.gz file1 dir2 使用 gzip方式压缩。
tar jcvf test.tar.bz2 file1 dir2 使用 bzip2方式压缩。
tar解压:
将压缩命令中的 c --> x
tar zxvf test.tar.gz 使用 gzip方式解压缩。
tar jxvf test.tar.bz2 使用 bzip2方式解压缩。
其中:
z:zip,压缩
c:create,创建
v:vision,显示压缩过程,可以去掉,直接用zcf,但这样不显示压缩过程
f:file,文件
九、rar
rar压缩:
rar a -r 压缩包名(带.rar后缀) 压缩材料
rar a -r testrar.rar stdio.h test2.mp3
rar解压:
umrar x 压缩包名(带.rar后缀)
十、zip
zip压缩:
zip -r 压缩包名(带.zip后缀) 压缩材料。
zip -r testzip.zip dir stdio.h test2.mp3
zip解压:
unzip 压缩包名(带.zip后缀)
unzip testzip.zip
tar要掌握,rar、zip了解即可
十一、vim
vim的三种工作模式
vim中常用到的命令:
0(数字) 光标移到[行首],工作模式不变
$ 光标移到[行尾],工作模式不变
gg 跳转首行
G 跳转末行
n-yy 赋值光标所在位置的下n行
n-dd 剪切光标所在位置的下n行
p 粘贴(P向前粘贴,p向后粘贴)
u 撤销操作
Ctrl-r 反撤销操作
分屏,末行模式下
:sp 水平分屏
:vsp 竖直分屏
分屏命令+filename,分屏并打开这个文件:
:sp 文件名 当前文件和另一个文件水平分屏
:vsp文件名 当前文件和另一个文件垂直分屏
分屏后屏幕切换,Ctrl-w-w
使用:q退出光标所在窗口
使用:qall退出所有窗口
从vim中跳转manpage,命令模式下
将光标放在待查看单词上,按K,默认看第一卷
n+K,查看第n卷
:wq 退出并保存
:q! 退出不保存
:wq! 强制退出并保存
自动缩进——在这之前要进行vimrc修改,不然自动缩进是8个空格
ubuntu的vimrc位置在/etc/vim/vimrc
在文件末尾添加三行:
set tabstop=4 //设置制表符宽度为4
set softtabstop=4 // 设置软制表符宽度为4
set shiftwidth=4 // 设置缩进空格数为4
十二、gcc编译
四步骤:
具体操作:
1.预处理
解释:首先编写好了代码文件hello.c,然后gcc -E进行预处理,-o的意思是将输出结果到hello.i中
gcc -E hello.c -o hello.i
2.编译
解释:将预处理文件hello.i编译成了hello.s汇编文件
gcc -S hello.i -o hello.s
3.汇编
解释:将hello.s汇编文件翻译成机器语言(二进制)hello.o
gcc -c hello.s -o hello.o
4.链接
解释:生成可执行文件
gcc hello.o -o a.out
5.执行文件
./a.out
简化操作:直接一步到位,从预处理直接到可执行文件,相当于执行了上面四步操作
gcc hello.c -o hello(如果没有指定生成的执行文件名,会使用默认名a.out)
常用参数:
gcc -I ./hellodir hello.c -o hello
当头文件和源码不在一个目录下时,需要指定头文件
其中-I参数指定头文件所在位置,位置可以在编译文件前,也可以在后面
-I 指定头文件所在目录位置
-c 只做预处理,编译,汇编。得到二进制文件 !!!!!!!
-g 编译时添加调试文件,用于gdb调试
-Wall 显示所有警告信息
-D 向程序中“动态”注册宏定义
-l 指定动态库库名
-L 指定动态库路径
十三、gdb调试
使用gdb之前,要求对文件进行编译时增加-g参数,加了这个参数过后生成的编译文件会大一些,这是因为增加了gdb调试内容
gdb调试工具: 大前提-->程序是你自己写的,如:
gcc test.c -o test -g //对生成的test进行调试
生成test文件,再进行gdb test操作进行调试
基础指令:
-g:使用该参数编译可以执行文件,得到调试表。
gdb ./a.out
list: list 1 列出源码。根据源码指定行号设置断点。
b: b 20 在20行位置设置断点。
run/r: 运行程序
n/next: 下一条指令(会越过函数)
s/step: 下一条指令(会进入函数)
p/print:p i 查看变量的值。
continue:继续执行断点后续指令。
quit:退出gdb当前调试。
其它指令:
run:使用run查找段错误出现位置。
finish:结束当前函数调用。
set args: 设置main函数命令行参数 (在 start、run 之前)
run 字串1 字串2 ...: 设置main函数命令行参数
info b: 查看断点信息表
b 20 if i = 5: 设置条件断点。
ptype:查看变量类型。
bt:列出当前程序正存活着的栈帧。
frame: 根据栈帧编号,切换栈帧。
display:设置跟踪变量
undisplay:取消设置跟踪变量。 使用跟踪变量的编号
gdb常见错误说明:
没有符号被读取—编译时没加-g参数
file后面加使用-g编译的文件,可以不用退出,gdb直接读取后进行调试
说明:如pwd、cd、mkdir、rmdir、ls、touch、mv、rm、cat等一些最基本的命令不再赘述
补充:
1.管理进程的命令
ps -ef 查看进程信息
ps -ef l grep 关键字 过滤指定关键字进程信息
ps aux 列出系统上当前所有用户的所有进程信息,侧重于显示进程的资源使用情况
ps ajx 提供了进程的层级信息,如父进程ID和会话ID,侧重于显示进程之间的关系
kill -9 进程号 关闭指定进程号的进程
2.top命令(类似Windows任务管理器)可以:
查看CPU、内存、进程的信息
3.使用df和du命令可以:
df -h :查看所有磁盘分区占用情况
du -sh 文件名:查看文件所占磁盘空间大小
4.使用iostat可以:
查看磁盘速率等信息
5.使用sar-n DEV命令可以:
查看网络情况
6.使用curl命令可以:
发起网络请求
后续有补充的持续更新~