Linux
Linux安装
安装文档
Linux系统目录结构
目录名称 | 解释 |
---|---|
/bin | Binaries,这个目录存放着最经常使用的命令。 |
/boot | 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
/dev | Device,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。该目录下的/null目录等价于一个只写文件,并且所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到,但/dev/null对命令行和脚本都非常的有用,相当于windows中的回收站。 |
/etc | Etcetera,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
/home | 用户的主目录,新增用户账号时,用户的目录都存放在此目录下。 |
/lib | Library的缩写,系统使用的函数库的目录,这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机或产生错误后,会将一些遗失的命令放置于此目录。 |
/media | linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。 |
/mnt | 光盘默认挂载点。 |
/opt | optional,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下,默认是空的。 |
/proc | Processes,/proc是一种伪文件系统,即虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,这个目录的内容不在硬盘上而是在内存里。 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/sbin | SuperuserBinaries超级用户的二进制文件,这里存放的是系统管理员使用的系统管理程序。 |
/srv | 该目录存放一些服务启动之后需要提取的数据。 |
/sys | 该目录下安装了内核中新出现的一个文件系统sysfs。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 |
/tmp | temporary,这个目录是用来存放一些临时文件的。 |
/usr | unix shared resources,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 |
/var | variable,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。 |
/run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。 |
Linux常用命令
adduser命令 – 创建用户
adduser atreus #增加用户
apt-get命令 – 安装软件
sudo apt-get remove gcc #卸载gcc
#对于Linux中的[Y/n],回车即表示选择Y,输入n表示选择n
cat命令 – 在终端设备上显示文件内容
cat -n file.txt #查看文件内容,同时显示行号
cat /dev/null > file.txt #清空文件内容
#concatenate[kɔn'kætəneit]
chmod命令 – 改变文件或目录权限
chmod u+r hello.c #对属主增加读权限
chmod g+w hello.c #对组用户增加写权限
chmod o+x hello.c #对其他用户增加执行权限
chmod a-r hello.c #对所有用户去掉读权限
chmod 655 hello.c #r:4、w:2、x:1
clear命令 – 清除屏幕
clear #清空屏幕
cp命令 – 复制文件或目录
cp file1.txt file2.txt file3.txt dir/ #多个文件复制到目录dir中
cp -r dir1/*.c dir2/ #将目录/dir1/中的所有.c文件复制到目录dir2中
deluser命令 – 删除用户
deluser atreus #删除用户
diff命令 – 比较文件的差异
diff test1.c test2.c -y -W 100
#-y:并列显示
#-w 100:在使用-y参数时,指定栏宽100
#"|"表示两行不同,"<"表示前面多一行,">"表示后面多一行
dpkg命令 – 管理deb包
dpkg -i code_1.63.2-1639562499_amd64.deb #安装软件包
#dpkg是Debian package的简写,是为Debian专门开发的套件管理系统,用于软件的安装、更新和移除
#所有源自Debian的Linux的发行版都使用dpkg,例如Ubuntu
echo命令 – 输出字符串或提取Shell变量的值
echo $PATH #查看PATH环境变量
file命令 – 识别文件类型
file test.c #查看文件类型
find命令 – 查找和搜索文件
find dir/ -name *.c #查找指定目录下的.c文件
gedit命令 – GNOME桌面的文本编辑器
gedit file.txt #使用gedit打开文件
grep命令 – 强大的文本搜索工具
grep str dir/text.txt #在指定文件中进行字符串模式匹配
ifconfig命令 – 显示或设置网络设备
ifconfig
kill命令 – 杀死进程
kill -9 4428 #以SIGKILL信号终止PID为4428的进程
ln命令 – 为文件创建链接
ln -s dir/ link-dir #为目录建立符号链接
ls命令 – 显示指定工作目录下的内容及属性信息
{
L
i
n
u
x
四
大
类
文
件
{
−
:
普
通
文
件
d
:
目
录
文
件
c
/
b
:
设
备
文
件
l
:
链
接
文
件
L
i
n
u
x
三
小
类
文
件
{
−
s
:
共
享
文
件
−
f
:
堆
栈
文
件
−
p
:
管
道
文
件
\begin{cases} Linux四大类文件\begin{cases} -:普通文件\\ d:目录文件\\ c/b:设备文件\\ l:链接文件\\ \end{cases}\\ Linux三小类文件\begin{cases} -s:共享文件\\ -f:堆栈文件\\ -p:管道文件\\ \end{cases} \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧Linux四大类文件⎩⎪⎪⎪⎨⎪⎪⎪⎧−:普通文件d:目录文件c/b:设备文件l:链接文件Linux三小类文件⎩⎪⎨⎪⎧−s:共享文件−f:堆栈文件−p:管道文件
mkdir命令 – 创建目录
mkdir -m 666 dir/ #以666权限创建目录
mkdir -p dir1/dir2/dir3 #递归创建多级目录
mv命令 – 移动或改名文件
mv file1.txt file2.txt file3.txt -t dir/ #将三个文件同时移动到目标目录
mv file1.txt file2.txt #文件重命名
ping命令 – 测试主机间网络连通性
ping -c 5 120.78.188.0 #连续ping五次
ps命令 – 显示进程状态
ps -ef
#UID:进程拥有者
#PID:进程ID
#PPID:父进程ID
#C:进程所占CPU百分比
#STIME:进程开始时间
#TTY:该进程在哪个终端上运行,若与终端无关显示'?'。若为pts/0等,则表示由网络连接的主机进程
#TIME:进程启动到现在的时间
#CMD:命令的名称和参数
pwd命令 – 显示当前路径
pwd #默认显示逻辑路径
#-L:logical首字符缩写,表示显示逻辑路径(忽略软连接文件),取pwd系统环境变量的值
#-P:physical首字符缩写,表示显示物理路径时如果当前目录路径时软链接文件,则会显示软连接文件对应的源文件
#注意区分[逻辑路径-物理路径]与[绝对路径-相对路径]
rm命令 – 移除文件或目录
rm -r dir/ #递归删除,常用于目录
rm -i file.txt #删除前询问,防止误删
rmdir命令 – 删除空目录
rmdir dir #直接删除空目录
rmdir -p dir #递归删除非空目录
su命令 – 切换用户
su - root #切换至root用户
sudo命令 – 以系统管理者的身份执行指令
sudo ./test #以root身份执行文件
systemctl命令 – 管理系统服务
systemctl start ssh #启动ssh服务
#在主机中开启了openssh服务,那么就对外开放了远程连接的接口
#openssh的服务端:sshd
#openssh的客户端:ssh
#ssh---------->sshd
#client server
tar命令 – 打包和备份的归档工具
{
必
选
{
−
c
:
建
立
压
缩
文
档
−
x
:
解
压
−
t
:
查
看
内
容
−
r
:
向
压
缩
归
档
文
件
末
尾
追
加
文
件
−
u
:
更
新
原
压
缩
包
中
的
文
件
可
选
{
−
z
:
有
g
z
i
p
属
性
的
−
j
:
有
b
z
2
属
性
的
−
Z
:
有
c
o
m
p
r
e
s
s
属
性
的
−
v
:
显
示
所
有
过
程
−
O
:
将
文
件
解
开
到
标
准
输
出
−
f
:
指
定
文
件
,
这
个
参
数
必
选
且
为
最
后
一
个
参
数
\begin{cases} 必选\begin{cases} -c:建立压缩文档\\ -x:解压\\ -t:查看内容\\ -r:向压缩归档文件末尾追加文件\\ -u:更新原压缩包中的文件\\ \end{cases}\\ 可选\begin{cases} -z:有gzip属性的\\ -j:有bz2属性的\\ -Z:有compress属性的\\ -v:显示所有过程\\ -O:将文件解开到标准输出\\ \end{cases}\\ -f:指定文件,这个参数必选且为最后一个参数 \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧必选⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧−c:建立压缩文档−x:解压−t:查看内容−r:向压缩归档文件末尾追加文件−u:更新原压缩包中的文件可选⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧−z:有gzip属性的−j:有bz2属性的−Z:有compress属性的−v:显示所有过程−O:将文件解开到标准输出−f:指定文件,这个参数必选且为最后一个参数
tar -zcvf test.tar.gz test.c #压缩test.c文件为test.tar.gz
tar -ztvf test.tar.gz #列出压缩文件内容
tar -zxvf test.tar.gz #解压文件
touch命令 – 创建文件
touch file.txt #创建空文件
tree命令 – 以树状图列出目录内容
tree -L 1 #只显示第一层问案件及目录
编辑器vim
底线命令
底线命令 | 对应操作 |
---|---|
i,I | 进入输入模式:i为从目前光标所在处输入;I为在目前所在行的第一个非空格符处开始输入 |
a,A | 进入输入模式:a为从目前光标所在的下一个字符处开始输入;A为从光标所在行的最后一个字符处开始输入 |
o,O | 进入输入模式:o为在目前光标所在的下一行处输入新的一行;O为在目前光标所在的上一行处输入新的一行 |
r,R | 进入取代模式:r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止 |
:w | 将编辑的文件写入硬盘 |
:q | 离开 |
:q! | 强制离开不存储 |
:wq | 存储后离开 |
ZZ | 保存并退出 |
ZQ | 不保存强制退出 |
:w[filename] | 另存新文档 |
:v[filename] | 将目标文档写至光标后 |
:!command | 执行shell命令 |
dd | 剪切游标所在行 |
yy | 复制游标所在行 |
p,P | p为将已复制的数据粘贴在光标下一行,P则粘贴在游标当前行并将当前行下移 |
u | 撤销 |
. | 重复上一操作 |
gg | 移到第一行 |
G | 移到最后一行 |
nG | n为数字,移动到这个档案的第n行 |
/word | 向光标之下寻找一个名称为 word 的字符串 |
?word | 向光标之上寻找一个字符串名称为 word 的字符串 |
n,N | n重复前一搜索,N重复前一搜索的反搜索 |
0 | 移至行首 |
$ | 移至行尾 |
x,X | 在一行字当中,x为向后删除一个字符,相当于[del]; X为向前删除一个字符,相当于[backspace] |
:1,$s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 |
d | 鼠标选中后删除选中行 |
编译器gcc
gcc概述
gcc是GNU计划提供的编译器
交叉编译
交叉编译是在宿主机上生成目标机上的可执行代码
1.预处理:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef)
2.编译:检查语法、转成汇编、生成汇编文件(.s/.S)
3.汇编:编译汇编文件、生成目标文件(.o)
4.链接:链接所有目标文件、生成符号表、生成可执行文件
gcc编译选项
1.-o:gcc hello.c -o hello
可执行文件重命名,生成ELF文件
2.-E:gcc -E hello.c > hello.i
预处理
3.-Idir:gcc -I./mm/nn hello.c -o hello
指定头文件第三方搜索路径
4.-S:gcc -S hello.c
生成汇编文件