Linux命令+vi编辑器+gcc编译器
linux是对文件进行操作
终端输入
hq @ ubuntu :~ $
用户名 间隔符 主机名 间隔符 当前路径 输入提示符
主机名命令:hostname
用户名命令:whoami
当前路径:
~:家目录(最高权限:因为在家目录才开始有权限操作)home
/:根目录(root)
-:上一次使用操作
. : 当前操作
.. :上一级目录
根目录与家目录的区别:
cd ~ 是跳转到当前用户的家目录
如果是root用户,cd ~ 相当于 cd /root
如果是普通用户,cd ~ 相当于cd /home/当前用户名
展示文件信息:ls
其中:白色为普通文件,蓝色为文件夹,绿色是可执行文件
展示所有的文件信息为:ls -a (展示出来的包括隐藏文件)
展示文件的详细信息包括修改时间等:ls -l
其中包含的信息有:
文件类型及权限(当前用户权限,组内用户权限,其他用户权限)
文件类型:第一个字母
类型包括:bcd-lsp
b:块设备文件(block)
c:字符设备文件(char)
d:普通文件夹:
-:普通文件
l:软连接
s:套接字文件
p:管道文件
权限:
r:可读(read)
w:可写(write)
x:可执行
-:不可执行
修改路径 cd:
- 切到根目录: cd /;
- 切到家目录: cd~ 或者 cd /home/用户名
- 切到上一次操作:cd -
- 切到当前目录:cd .
- 切到上一级目录: cd ..
新建:
- 新建文件:touch 文件名加后缀
- 新建文件夹:mkdir 文件夹名
其中新建的文件中有 mkdir -p 连级创建
复制(copy)cp:
cp 要复制的文件名(路径) 目标文件夹(路径)
复制文件夹:
cp 要复制的文件夹的名(路径)目标文件夹(路径) -r
删除(remove)rm:
rm 删除的文件名(删除的文件路径)
rm 删除文件夹名(删除的文件夹的路径) -r
移动:(move)mv:
mv 要移动的文件名(路径) 移动到的位置(路径/新名字)
重命名:mv 旧名称 新名称
vi编辑器
vi 文件名.后缀 打开文件
如果文件不存在,先创建文件再打开文件
编辑后不能会自动保存
vi编辑器的三种模式
命令行模式(默认进入):输入一些命令
插入模式(编辑模式):命令行输入(a/i/o)进入插入模式,可以进行编辑
底行模式:保存,退出,分屏作用
插入模式->按esc->命令行模式->按空格或者shift键+:->底行模式
底行模式:
命令:
w:保存
q:退出
wq:保存退出
!:强制
q!:不保存退出
/str:查找
s/str/str1:将光标所在行的str替换成str1
%s/str/str1/g:替换所有的str为str1
setnu:设置行号
setnonu:取消行号
sethl:设置高光
vsp 分屏本文件
vsp文件名分屏打开另外一个文件
复制:5,10y 复制 5-10行
删除:5,10d,删除5-10行
复制:yy 多行 nyy(n:表示的是行数 光标所在行到n行数内容)
删除(剪切):dd ndd
粘贴:p
撤销:u
反撤:ctrl+r
光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$
整理代码的格式:gg=G
gcc编译器
简单编程步骤:
1、新建文件 touch test.c
2、打开vi编辑器 vi test.c
3、默认进入命令行模式,需要切换到插入模式 a i o A I O
4、写代码
#include<stdio.h> //头文件 函数库
int main() //主函数 程序入口
{
printf("hello world\n");
return 0; //程序结束标志
}
5、先从插入模式 esc 切换到命令行模式,
再shift:切换到底行模式
输入 wq保存并退出 vi编辑器
6、使用gcc 编译器编译程序,最终生成可执行文件 gcc test.c
7、执行 ./a.out
gcc编译器:
四步:预处理 汇编 编译 链接
机器语言:010101010 二进制
汇编语言:二进制文件文本形式
高级语言:c java c++
- 预处理 :展开头文件 删除注释 替换宏定义
命令:gcc -E hello.c -o hello.i
- 编译:检查语法 有错误报错 将文件转换成汇编文件
命令: gcc -S hello.i -o hello.s
- 汇编:将汇编文件转换成二进制文件
命令:gcc -c hello.s -o hello.o
- 链接:链接库 最终生成机器可以识别的语言文件
命令:gcc hello.c -o hello.out
因为要让机器识别所以!由高级语言一步步翻译成二进制文件
补充指令:cat 文件名:显示文件内容