Linux 系统从应用角度来看,分为内核空间和用户空间两个部分。内核空间是 Linux 操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要件。这个和武林秘籍一样,不仅得有招式还得有内功心法。
Linux 的内核主要由 5 个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。下面将依次讲解这 5 个子系统。
在 linux 中根目录的子目录结构相对是固定的 (名字固定), 不同的目录功能是也是固定的
bin: binary, 二进制文件目录,存储了可执行程序,今天要将的命令对应的可执行程序都在这个目录中
sbin: super binary, root 用户使用的一些二进制可执行程序
etc: 配置文件目录,系统的或者用户自己安装的应用程序的配置文件都存储在这个目录中
lib: library, 存储了一些动态库和静态库,给系统或者安装的软件使用
media: 挂载目录,挂载外部设备,比如:光驱,扫描仪
mnt: 临时挂载目录,比如我们可以将 U 盘临时挂载到这个目录下
proc: 内存使用的一个映射目录,给操作系统使用的
tmp: 临时目录,存放临时数据,重启电脑数据就被自动删除了
boot: 存储了开机相关的设置
home: 存储了普通用户的家目录,家目录名和用户名相同
root: root 用户的家目录
dev: device , 设备目录,Linux 中一切皆文件,所有的硬件会抽象成文件存储起来,比如:键盘, 鼠标
lost+found: 一般时候是空的,电脑异常关闭 / 崩溃时用来存储这些无家可归的文件,用于用户系统恢复
opt: 第三方软件的安装目录
var: 存储了系统使用的一些经常会发生变化的文件, 比如:日志文件
usr: unix system resource, 系统的资源目录
/usr/bin: 可执行的二进制应用程序
/usr/games: 游戏目录
/usr/include: 包含的标准头文件目录
/usr/local: 和 opt 目录作用相同,安装第三方软件
g++ text.cpp -o text
gedit -----创建文本文件 or touch
Ctrl+a ----- 光标移动命命令行首
Ctrl+e ----- 光标移动命命令行尾
Ctrl+u ----- 删除光标前的部分字符串
cd ~ -----切换到家目录
cd - ----- 切换到上一个目录
ls -lFha -----l 表示详细信息,F表示区分文件属性,h表示人类识别的方式,字节大小等,a表示all 全部文件,包括隐藏文件 可以直接(ll) 表示ls -lFa
-: 普通的文件,在 Linux 终端中没有执行权限的为白色,压缩包为红色,可执行程序为绿色字体
d: 目录 (directory), 在 Linux 终端中为蓝色字体,如果目录的所有权限都是开放的,有绿色的背景色
l: 软链接文件 (link), 相当于 windows 中的快捷方式,在 Linux 终端中为淡蓝色 (青色) 字体
c: 字符设备 (char), 在 Linux 终端中为黄色字体
b: 块设备 (block), 在 Linux 终端中为黄色字体
p: 管道文件 (pipe), 在 Linux 终端中为棕黄色字体
s: 本地套接字文件 (socket), 在 Linux 终端中为粉色字体
1. 创建文件:
-p是为了多层目录。
2.删除文件:
rm xxx -r 表示递归删除目录 包括子目录。
拷贝目录需要参数 -r
场景1: 目录A, 通过拷贝得到不存在的目录B
$ cp 目录A 目录B -r
3.修改权限:
1.字符法: 语法格式: chmod who [+|-|=] mod 文件名
- who:
- u: user -> 文件所有者
- g: group -> 文件所属组用户
- o: other -> 其他
- a: all, 以上是三类人 u+g+o
- 对权限的操作:
+: 添加权限
-: 去除权限
=: 权限的覆盖
- mod: 权限
r: read, 读
w: write, 写
x: execute, 执行
-: 没有权限
2.数字法
ubuntu:普通用户$
sudo useradd -m -s /bin/bash 用户名
sudo userdel 用户名 -r
sudo groupadd 组名
sudo passwd 用户名
find 命令:
特别的如果文件数量过大,用xarg,可以分片映射 提高效率。
find ./ -name '*.jpg' | xargs ls -ld
find ./ -size +20M -size -50M //当前目录查找20-50m大小的文件
find ./ maxdepth 1 -name '*.jpg' //当前目录查找 .jpg后缀的名字的文件,深度一层
grep:查找文件内容
格式:
grep -r 'qwe' ./
ps aux | grep 'qwe' 查找进程中名字
软件安装卸载:
压缩文件:
1.
压缩本来是:gzip xxx 解压是guzip xxx 但是只能压缩一个文件,要打包并压缩用tar
tar zcvf wu.tar.gz xxx1 xxx2
z指的是gzip压缩,c指的是creat,v指的是view ,显示将要打包的列表文件,f表示file,创建的是压缩文件
tar jcvf wu.tar.gz xxx1 xxx2
j指的是用bzip方式压缩
解压:把c改成x
2.
rar a -r xxx.rar xxx1 xxx2
unrar x xxx.rar
vim常用指令大全_vim指令_LibraFree的博客-CSDN博客
预处理
①展开头文件
在写有#include 或#include "filename"的文件中,将文件filename展开,通俗来说就是将fiename文件中的代码写入到当前文件中;
②宏替换
③去掉注释
④条件编译
即对#ifndef #define #endif进行判断检查,也正是在这一步,#ifndef #define #endif的作用体现出来,即防止头文件被多次重复引用
预处理:指令-E
,举例如下:
gcc test.c -E -o test.i
编译:指令-S
gcc test.i -S -o test.s
汇编:指令-c
gcc test.s -c -o test.o
.o
文件已是可执行文件