“这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战”
一.Linux系统的命令
ls cd pwd clear touch mkdir cp mv rm echo cat
linux系统的终端打开:点击Terminal ctrl+alt+t
linux系统的终端关闭:点击x图标 exit
| linux系统终端上的字符串 | |||
|---|---|---|---|
| linux | @ ubuntu : | ~ | $ |
| whoami | hostname | 路径 | 用户的类型 |
| 用户名 | 主机名 | /home/linux |
| $ : | 普通用户 linux |
| # : | 超级用户 root |
用户的切换 :su (命令) :eg: su linux | su root
sudo :单次具备root权限
【1】ls命令
| ls 参数 | 对应执行 |
|---|---|
| ls | 列举当前目录下的内容 |
| ls -l | 显示文件的属性信息 |
| ls -lh | 显示文件的属性信息,把大小按照对应的单位显示 |
| ls -a | 显示所有的文件包含隐藏文件 |
| ls -i | 文件系统对文件的唯一的标号(inode) |
| ls 路径 | 列举对应路径下的内容 |
| ls -l test.c | 列举test.c的属性 |
l --->ls
ll--->ls -al
ls -l
d rwxr-xr-x 3 linux linux 4096 5月 14 09:34 bootloader
下面的依次解释每一部分的内容:
1.文件的类型
| 7种文件的类型 (bsp-lcd) |
|---|
| - : 普通文件 (白色) |
| d : 目录 (蓝色) |
| l : (link) 链接文件 分为软链接和硬链接(类似于window的快捷方式) |
| c : 字符设备文件(/dev/input/mouse0鼠标)event1 键盘 usdo hexdump mouse0 |
| b : 块设备文件 (硬盘 /dev/sda) |
| p : 管道文件 (进程间通讯) |
| s (socket) : 套接字文件(网络通讯相关的文件) |
创建硬链接文件:
ln 源文件 要生产的硬链接文件名
ln xxx sss 创建 xxx 文件的硬链接文件 取名为 sss
创建软连接文件:
ln -s 源文件 要生成的硬链接文件名
2.文件的权限
| 权限命令及代表的八进制数字 | |
|---|---|
| r : 读 4 | |
| w : 写 2 | |
| x : 可执行 1 | |
| - : 无权限 0 |
三组命令分别是:用户的权限 组的权限 其他用的权限
r-- -w- --x 0421
rwx r-x r-x 0755
3.第三部分的数字3
如果是文件代表的是别名的个数
如果是目录代表子目录的个数
4.用户名和组名
linux linux
用户名 组名
5.文件大小
4096
6.时间
5月 14 09:34
7.文件名
bootloader
【2】cd命令
cd:切换目录
用法:
| cd 参数 | 对应执行 |
|---|---|
| cd 绝对路径 | 从根开始访问的路径 |
| cd / | 进入根目录 |
| cd /home/linux | 进入家目录 |
| cd 相对路径/ | 从当前目录开始访问的路径 |
| cd ./ | 进入当前路径 |
| cd ../ | 进入上一级目录 |
| cd ./home | 进入当前目录下的home |
| cd ~ | 回到家目录 |
| cd - | 回到上一次操作目录 |
在linux系统中路径如何表示:在linux系统中路径是一颗倒置的树
/ --->根目录 (cd /)
| lib64 | bin | dev | etc | usr | home | root |
|---|---|---|---|---|---|---|
| 库目录 | 二进制文件 | 设备文件 | 系统的配置文件 | 用户自己的内容 | linux | 超级用户家目录 |
| 用户内容 |
windows :库xxx.dll
ubuntu :libxxx.so(动态库) libxxx.a(静态库)
【3】pwd 命令
显示当前的位置
【4】clear命令
clear:清屏的命令
ctrl+l 快捷键
【5】touch命令
touch 文件名:
1.创建文件
2.更新文件的时间戳
用法:
touch 1.c :touch 文件名 :表示创建文件
touch 2.c 3.txt 4.doc :同时创建多个文件
如果文件存在,执行touch的时候是更新文件的时间戳
但是文件中的内容并不会被覆盖。
【6】mkdir命令
mkdir 创建目录
如果目录不存在mkdir会创建目录
如果目录存在mkdir就会失败
mkdir -p 目录1/目录2/目录3 :创建具备层级关系的目录
mkdir -m 0775 test/
【7】cp命令
cp 拷贝
用法:
cp 文件 路径
cp README ~/hello/
将README拷贝到/home/linux/hello目录下
cp 目录 路径 -r或-a
cp tools ~/hello/ -r
将tools目录拷贝到/home/linux/hello目录下
将test.c拷贝到共享目录下
桌面 /mnt/hgfs/Desktop
windows 《==》 |--共享目录--| 《==》 linux
【8】mv命令
mv:移动或者重命名的命令
①移动:
mv 文件/目录 路径
mv *.c ../
移动当前目录下的所有的.c结尾的文件到上一级目录
mv work/ udisk/
将work移动到udisk目录
②重命名
mv 源文件名 新文件名
mv test.c list.c
将test.c重命名为list.c
mv work/ udisk/
mv 源目录名 新目录名(存在移动,不存在命名该文件夹)
【9】rm命令
rm:删除
| 删除文件 | |
|---|---|
| rm 文件名 | |
rm test.c | 删除test.c的文件 |
| 删除目录 | |
|---|---|
| rm 目录名 -rf (-r:递归删除 -f:强制删除) | |
rm -rf hello | 删除hello目录 |
sudo rm !(3.c) -rf
删除除3.c之外的所有的文件
rm !(3.c|4.c) -rf
删除除3.c和4.c之外的所有的文件
【10】echo命令
echo功能就是在终端上打印字符串
echo "helloworld"
echo "helloworld" > test.c
(> :重定向,将本来应该向终端上输出的内容重定向到test.c的文件中)
ls ~ > test.c
将家目录下的内容罗列下输出到test.c的文件中
echo "helloworld" >> test.c
(>>: 追加,向test.c中追加"helloworld")
【11】cat命令
cat:查看文件中的内容
cat test.c > 1.c
====>类似于cp命令
将test.c内容重定向到1.c中
二.vim编辑器
vi/vim 文件名 :使用vim编辑器编辑文件
【1】命令行模式:
新打开的文件在命令行模式,
如果在其他默认回到命令行模式 按Esc
拷贝:
yy 拷贝一行
5yy 拷贝5行
nyy 拷贝n行
鼠标选中想要拷贝的行,然后按下键盘的y
从ubuntu中向window中拷贝数据
按下shift键,鼠标选中想要拷贝的行,右键拷贝即可
剪切:dd 剪切一行
5dd 剪切5行
nd 剪切n行
鼠标选中想要剪切的行,然后按下键盘的d
粘贴:
p
撤销:
u
反向撤销:
ctrl+r
代码自动对齐:
gg=G 对齐所有的行
鼠标选中想要对齐的行,按下键盘的=
跳转到开头:gg
跳转到结尾:G
搜索:
/想要高亮显示的字符串
n :向下跳
N :向上跳转
F2:打开函数列表
F3:打开目录的列表
【2】插入模式:
从命令行模式进入插入模式 i
中文输入法的快捷键:ctrl+alt+空格
/home/linux/.vim/snippets$ vi c.snippets
Inc :Tab补全 #include <stdio.h>
main :Tab补全main函数
for :Tab补全for函数
do :Tab补全do/while函数
hdr :补全文件的注释
修改名字:cd ~
vi .vimrc
输入zo打开折叠
136 let g:snips_author="DAI ZhanSheng"
137 letg:snips_email="daizs_jt@hqyj.com"
138 let g:snips_copyright="Farsight, Inc"
139 " plugin shortcuts
补全编辑:/.vim/snippets/c.snippets
snippet funh
/*function:
*args :
*return :
*/
【3】底行模式:
从命令行模式进入底行模式 :shift+: (空格)
:w 保存 (:w 新文件名 另存为)
:wq或者x 保存退出
:qa 退出 (退出所有的窗口)
:q! 不保存退出
:wq! 强制保存退出
:set nonu :取消行号
:set nu :显示行号
:n :跳转到对应的行
:nohl :取消高亮
:vsp 新文件名 水平打开多窗口 //一个一个窗口退出光标移动该窗口 :q //退出所有的窗口 :wqa
:sp 新文件名 垂直的方式打开多窗口
:1,4y 拷贝1-4行
:1,4d 剪切1-4行
:%s/旧字符串/新字符串/g 字符串替换
(区分大小写!!!)
全部删除:按esc键后,先按gg(到达顶部),然后dG
全部复制:按esc键后,先按gg,然后ggyG
全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG
单行复制:按esc键后, 然后yy
单行删除:按esc键后, 然后dd
粘贴:按esc键后, 然后p
三.gcc
【1】gcc编译程序的过程
gcc test.c -o test
1.预处理
头文件的展开,宏的替换(其他预处理的替换),删除注释,不会对语法进行检查。
gcc -E 05define.c -o 05define.i
2.编译
对语法进行检查,将预处理后的.i文件编译成汇编文件
gcc -S 05define.i -o 05define.s
3.汇编
把汇编文件编译成二进制文件(但不会链接库)
gcc -c 05define.s -o 05define.o
4.链接
将上述的二进制文件和库的二进制文件通过连接器链接成可执行文件
gcc 05define.o -o 05define
【2】gcc编译常用的命令
gcc -E hello.c -o hello.i
gcc -S hello.c -o hello.s //汇编程序
gcc -C hello.s -o hello.o //转换成二进制
gcc hello.o -o hello.exe //链接
gcc hello.c -o hello //编译 //经常用到的
./hello //运行
//在Ubuntu系统下,编译的时候没有 -o+文件名时,会自动生成a.out执行文件
gcc *.c //运行当前目录下所以.c文件
!g //执行上一次编译的命令
// -I,头文件<>
四.追代码工具的使用
ctags :追代码的工具
☞使用方法:
1.创建索引
ctags -R =====>在当前目录下会生成以tags
2.追代码的命令
打开文件后的跳转
- 跳进去ctrl + ]
- 退回来ctrl + t
不打开文件
- vi -t 函数名/变量