基础知识
- linux系统:所见皆文件。
- linux 系统目录
- bin:存放系统二进制可执行文件,例如命令
dir
实际执行的可执行文件就在里面。 - boot:存放开机启动程序。
- dev:存放设备文件。
- home:存放用户文件。
- etc:用户信息和系统配置文件。
- lib:库文件。
- root:管理员宿主目录(root用户文件目录)。
- usr:用户资源管理目录,例如用户安装的应用程序就存放在里面。
- linux系统文件类型
- 普通文件: -
- 目录文件:d
- 字符设备文件:c
- 块设备文件:b(磁盘)
- 软链接:l
- 管道文件:p
- 套接字:s
- linux文件系统相关命令
-
ls
:查看当前目录文件信息 -
pwd
:打印当前目录 -
mkdir
:创建目录 -
rmdir
:删除目录(空目录) -
touch
:创建文件 -
rm
:删除文件或文件夹 -
mv
:重命名 -
cp
:拷贝文件,拷贝文件夹时可以带上-r
或-a
选项 -
cat
:查看文件内容(全部显示) -
tac
:从尾部开始逆向显示文件内容 -
more
:分屏显示文件内容 -
less
:类似more -
head
:head -15 a.txt
,可以指定查看文件的行数 -
tail
:从尾部开始查看文件 -
tree
:显示文件目录结构,默认不安装sudo apt-get install tree
-
du
:显示某个目录的大小 -
df
:显示磁盘剩余空间 -
ln -s file file.s
:创建软链接,相当于快捷方式,软链接根据路径file
创建,软链接文件大小为输入文件名大小,如果输入的是绝对路径的文件名,就可以在任意地方使用该软链接。 -
ln file file.h
:创建硬链接,硬链接关联的文件是共享的,如图Inode
是一样的,读写的时候是根据这个Inode
的值操作的。而删除是将硬链接计数减一。
- 文件系统和用户权限
- whoami:显示当前用户
- sudo adduser:新增用户
- sudo deluser
- sudo addgroup
- sudo delgroup
- sudo chgrp
- sudo chown:chown user filenname,修改文件所有者
- chmod:修改当前用户的文件权限,chmod [u user g group o other a all] [+-=] mode,或者是chmod 操作码 filename
- 查看与检索
- find
- -name:查找指定名字的文件
find ./ -name "a.txt"
- -type:查找指定类型的文件
find ./ -type"l"
- -maxdepth:指定搜索深度,必须是第一个参数
find ./ -maxdepth 1 -name "*file*.jpg"
- -size:文件大小
find ./ -size +20M -size -50M
- -exec:对查找的结果集执行某个命令
find ./ -name "ppp" -exec ls -al {} \;
,{}
为结果集固定写法,\;
为转义和结束符 - -xargs:对查找的结果做处理,当结果集比较大的时候,会分片处理,
find ./ -name "ppp" | xargs ls -al
,拆分结构的依据是空格,如果文件名中带有空格,可能会出错,可以使用-print0find ./ -name 'ppp' -print0 | xargs -print0 ls -l
第一个print0指定结果集分隔为null,第二个print0指定xargs分隔为null
- -name:查找指定名字的文件
-
软件安装
-
sudo apt-get update
,更新软件列表 -
sudo apt-get install appname
,安装 -
sudo apt-get remove softname
,卸载软件 -
使用安装包,ubantu
-
-
压缩解压
gzip
,只能压缩文件,如要将多个文件压缩打包,需要配置打包命令tar
,tar zcvf destfile srcfile1 srcfile2
,其中选项z:zip,c:create,v:vision,f:file
bzip2
,tar jcvf destfile srcfile1 srcfile2
解压:
tar zxvf destfile srcfile1 srcfile2
和tar jxvf destfile srcfile1 srcfile2
rar
和zip
需要另外安装
-
vi
-
vi
有三种工作模式,命令模式,末行模式,文本模式,它们之间的切换关系如图:
vim基本操作-跳转和删字符
i
进入编辑模式,光标前插入字符
a
进入编辑模式,光标后插入字符
o
进入编辑模式,光标所在行的下一行插入
I
进入编辑模式,光标所在行的行首插入
A
进入编辑模式,光标所在行的行末插入字符
O
进入编辑模式,光标所在行的上一行插入字符
s
删除光标所在字符并进入编辑模式
S
删除光标所在行并进入编辑模式
x
删除光标所在字符,工作模式不变
dw
删除光标所在单词,要求光标在首字母上,如果不在首字母,只会删除当前位置到单词末,工作模式不变
D
删除光标所在位置到行末,工作模式不变
0
(数字) 光标移到行首,工作模式不变
$
光标移到行尾,工作模式不变
d0
删除光标所在位置到行首,工作模式不变
d$
删除光标所在位置到行末,工作模式不变命令模式下的光标移动
h
左移
j
下移
k
上移
l
右移命令模式下行跳转
line-G
缺点是没有回显末行模式下行跳转
:line-回车
跳转首行
gg
(命令模式)跳转末行
G
(命令模式)自动缩进
在这之前要进行vimrc修改,不然自动缩进是8个空格
ubuntu的vimrc位置在/etc/vim/vimrc
在文件末尾添加三行:
set tabstop=4
//设置制表符宽度为4
set softtabstop=4
// 设置软制表符宽度为4
set shiftwidth=4
// 设置缩进空格数为4格式化代码
gg=G
(命令模式),无回显括号跳转
命令模式下,光标处于左括号时,使用%跳转到对应右括号,再按%跳回去。替换单个字符
r
命令模式下替换光标选中字符一段删除,即删除指定区域
光标选中要删除的首字符,按v进入可视模式,再使用hjkl移动到要删除的末尾,按d删除删除整行(剪切):
dd
,删除光标所在行
n+dd
,删除从光标开始的n行yy 复制光标所在行
p
向后粘贴剪切板内容,如果复制整行,这里是粘贴在光标所在位置的下一行
P
向前粘贴剪切板内容,如果是整行,这里是粘贴在光标所在位置的上一行
n-yy
复制光标所在位置的n行,包括光标所在行查找
/+findname
命令模式下查找按回车键启动查找后,按n
,会自动找下一个,N
跳到上一个查找光标所在单词
光标在目标单词上时,*或者#查找下一个,这里不要求光标必须在首字母上-
替换:末行模式下进行
单行替换 ,光标置于待替换行,:s /待替换词/替换词
全文替换,:%s /待替换词/替换词
,这个默认替换每行的首个,一行有多个目标词时,后面的不会变
:%s /待替换词/替换词/g
真正意义上的全局替换区域替换,
:24,35s /待替换词/替换词/g
替换24-35行之间的目标词 末行模式下历史命令
Ctrl-p
上一条命令
Ctrl-n
下一条命令撤销与反撤销,命令模式下
u
撤销操作
Ctrl-r
反撤销分屏,末行模式下
:sp
水平分屏
:vsp
竖直分屏
分屏命令+filename
,分屏并打开这个文件
分屏后屏幕切换,Ctrl-w-w
使用:q
退出光标所在窗口
使用:qall
退出所有窗口从vim中跳转manpage,命令模式下
将光标放在待查看单词上,按K
,默认看第一卷
n+K
,查看第n卷查看宏定义:命令模式
光标放在待查看词上,[+d
即可查看
-
-
gcc
gcc 源自GNU-
gcc -E hello.c -o hello.i
预处理.c文件,处理文件包含,宏定义,条件编译 -
gcc -S hello.i -o hello.s
编译,将预处理过的文件编译成汇编文件。过程包括:词法分析,语法分析,语意分析,代码生成等。 -
gcc -c hello.s - o hello.o
汇编,生成目标文件,此时是二进制代码。目标文件没有链接动态库,还不是可执行文件。 - 静态库生成(
ar -rc libxxx.a xxx1.o xxx2.o xxx3.o
),静态库以.a后缀结尾 - 动态库的生成(
gcc -fPIC -shared xxx1.c xxx2.c xxx3.c -o libxxx.so
),动态库以.so后缀结尾 - 链接:目标文件必须链接过后才可以执行
- 静态链接:
gcc -o hello hello.o libxxx.a
- 动态链接:
gcc -o hello hello.o libxxx.so
-
lld.hello.exe
:在linux中可以通过shell脚本 lld 查看可执行模块的dependency
- 静态链接:
- 其他编译选项:
-I
:指定头文件位置,-On
:指定编译优化级别,-D
:定义宏,-Wall
:显示所有warning,-g
:添加调试信息
-