命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。
插入模式
进行文件编辑,按ESC键可以回到命令行模式。
底行模式
光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等
a: (Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符
i: (Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符
o: (Open)进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置
A: (Append)进入编辑状态,从当前光标行末尾的位置开始插入键盘输入的字符
I: (Insert)进入编辑状态,从当前光标行起始的位置开始插入键盘输入的字符
O: (Open)进入编辑状态,并向上插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置
[N]表示可以加入数字。
[N]x: (Expurgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区)
[N]dd: (Delete)删除从光标位置开始的连续N行(并复制到编辑缓冲区)
[N]yy: (Yank)复制从光标位置开始的连续N行到编辑缓冲区
p或P: (Put)从编辑缓冲区复制文本到当前光标位置(即粘贴)
注:使用x复制连续字符的时候p与P相同,若是使用yy或者dd复制连续行,P是在本行黏贴p则是在下一行黏贴
u: (Undo)取消上一次操作(即恢复功能)
:q (Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效)
:q! 强制退出,且不保存修改过的部分
:w (Write)保存文件,但不退出
:x (Exit)保存文件并退出 也可以写作:wq 或者ZZ 注意此处无":"
:w File 另存为File给出的文件名,不退出
:r File (Read)读入File指定的文件内容插入到光标位置
/string 查找字符串
n 继续查找
N 反向继续查找
支持正则表达式比如:/^the /end$
取消高亮:nohl
利用:s 命令可以实现字符串的替换。
:s/str1/str2/ 光标所在行第一个str1字符串替换成str2字符串
:s/str1/str2/g 光标所在行 所有str1 替换成 str2 注:g代表global 全部
:.,$ s/str1/str2/g g全部替换(默认换第1个) 从光标所在处开始 一直到文档结尾 所有str1 替换成 str2 注:“.”代表光标所在处 $代表文档末尾
:1,$ s/str1/str2/g 从文档开头 一直到文档结尾 所有str1 替换成 str2 注:1 代表文档开头
:%s/str1/str2/g %s为1,$ 的缩写形式 意义同上
y0-将光标至行首的字符拷入剪贴板
处理行间复制
y$-将光标至行尾的字符拷入剪贴板
d0-将光标至行首的字符剪切入剪贴板
处理行间剪切
d$-将光标至行尾的字符剪切入剪贴板
range y-块复制 :1,10 y
处理区域复制剪切
range d-块剪切 :1,5 d
gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:
.c c语言源代码
.h 程序所包含的头文件
.i 已经预处理过的C源代码文件
.s 汇编语言源代码文件
.o 编译后的目标文件
tip: Ctrl+Shift+n 新开个Terminal窗口
Ctrl+Shift+t 新开个Terminal页
为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard)。
/ bin :bin是二进制(binary)英文缩写。
/ boot :存放的都是系统启动时要用到的程序。
/ dev :包含了所有Linux系统中使用的外部设备。
/ etc :存放了系统管理时要用到的各种配置文件和子目录。
/ lib :存放系统动态连接共享库的。
/ home:普通用户的主目录
/ root :根用户(超级用户)的主目录
pwd命令用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。
ls [options] [files_or_dirs]
Example:
ls -a a=all 查看全部文件 可以看到.开头的隐藏文件
ls -l 查看文件详细信息 创建时间 用户权限等
ls -R 如果文件夹下还有文件夹,则递归显示
注:可以使用man + ls的形式查看ls的具体注释
ls -l查看到的 文件权限 是对应三种用户的权限 分别是创建者 同组用户 和其他用户
例 -rw -rw -r--
Cat -s 多个空行合并成一个空行显示
-b 加行号显示
nl 加行号
head
-n 文件名(前n行,默认10)
tail
-n 文件名(后n行,默认10)
Usage:
cp [options] file destination
常用选项
i覆盖时交互提示
r对文件夹递归
复制多个文件到文件夹
cp [options] file1 file2 dest
cp test.c test1.c
cp test.c ../
cp test.c /home/linux
cp test.c ../test1.c
cp -r test/ test1 拷贝文件夹
cp test.c ../ -i 获取提示信息 如确认覆盖等
cp test.c test1.c /home/linux 同时复制多个文件
Usage:
mv [options] file destination
移动多个文件:
mv [options] file1 file2 destination
更改文件名
mv test.c /home/linux
mv test.c test1.c
mv test.c test1.c /home/linux
mv test.c ./test1.c
mv -r test /home/linux/test1
touch – 创建或更新时间戳
rm – 删除文件
Usage:
rm [options] <file>...
Example:
rm -i file
rm -r directory
创建和删除目录
mkdir -p
rm -r
第一课作业
作业
1.在VI编辑器中如果我们想将一个文件中的第5到第30行中的字符“abc”替换成“ABC”我们使用什么命令?
2.1将0x55转化成二进制得到的结果为?
2.2在ASCII码表中字符‘3’对应的是数值?
3.假如我们使用VI编辑器在Hello.c文件中编写了一段C程序且已经保存,如果我们想编译该C程序生成可执行文件hello应该输入什么命令?
4.写出至少5个自己用过的命令及功能(比如: mkdir 创建目录 )。
答案
1.需要使用5,30 s/abc/ABC/g
2.1 0x55转换为2进制是: 01010101
2.2 字符“3” ASCII码值 10进制 :51,ASCII码值 16进制 0x33
3.gcc -o hello Hello.c /Wall 或gcc -o hello Hello.c
4. rm 删除命令 vi 创建/打开命令 cp 复制 mv 移动 pwd 获取当前目录