今天对liunx如何对文件重定向和vim的使用进行了一定的学习了解
一、文件重定向
1、简单介绍
首先要知道liunx中文件有三种方式,标准输入,标准输出,标准错误,以及对应的文件描述符。(liunx中的重要思想:一切皆文件)
文件 | 解释 | 文件描述符 |
---|---|---|
标准输入 | 从键盘中获取数据 | 0 |
标准输出 | 在屏幕上打印正确的数据 | 1 |
标准错误 | 在屏幕上打印错误提示 | 2 |
2、如何文件重定向
(1)使用>进行文件重定向(默认把标准输出重定向到其他文件)
标准输出例: cat b.c > a 就是指本来将b.c打印到屏幕上的内容写到a中(如果没有a先自动创建a,有a则清空a中的内容在写入)
标准错误例:asdhjas 2> a就是将本来打印到屏幕上的错误提示写到a中(如果没有a先自动创建a,有a则清空a中的内容在写入)
(2)使用>>进行文件重定向
标准输出例: cat b.c >> a 就是指本来将b.c打印到屏幕上的内容写到a中(如果没有a先自动创建a,有a则不清空a中的内容在后面添加)
标准错误例:asdhjas 2>> a就是将本来打印到屏幕上的错误提示写到a中(如果没有a先自动创建a,有a则不会清空a中的内容在后面添加)
(3)特殊文件夹 /dev/null
如果你将文件重定向到/dev/null中文件内容将全部被清空,一般格式为 命令 >/dev/null 2>&1
二、对于Vim的基本使用
1、vim的三种模式
(1)命令行模式:用Vim进入后就是命令行模式,用ESC键从其他模式中返回命令行模式
(2)插入模式:在命令行模式下按按键i,a,o,s,I,A,O,S皆可以进入插入模式
(3)底行模式:在命令行模式下按:键进入底行模式
2、如何退出文件
(1)在命令行模式下按按键ZZ即可保存退出
(2)在底行模式下按按键x(保存并退出),按按键q(不保存退出,内容没有进行改写),按按键q!(强制退出,不保存),按按键w(保存,不退出),按按键wq(保存并退出)
3、在命令行模式中的一些使用方法
(1)跳转的命令
按键 | 用途 |
---|---|
G | 跳转到最后一行 |
gg | 跳转到首行 |
nG | 跳转到n行(n为要跳转到的行数) |
w | 跳一个单词 |
nw | 跳n个单词 |
n方向键 | 向上下左右移动n格 |
0 | 跳转到当前行的起始位置 |
$ | 跳转到当前行的末尾 |
(2)删除命令
按键 | 用途 |
---|---|
dd | 删除当前行(默认一行) |
ndd | 删除从光标位置往下n行 |
D | 删除当前行光标后面的内容 |
d0 | 删除当前行光标前面的内容 |
dw | 删除某个单词 |
x | 删除某个字母 |
(3)恢复上一次操作
u键
(4)复制
yy结构与删除命令一致,用p粘贴(无W的用法,复制光标后面的内容使用y$实现)
(5)其他一些命令
按键 | 用法 |
---|---|
r | 替换某个单词 |
R | 替换光标后面全部内容 |
% | 寻找对应大括号 |
gg=G | 自动格式 |
4、在底行模式中的一些命令使用
(1)/想查找的内容(正向查找),?想查找的内容(反向查找),用n选择下一个
(2)替换
命令格式 | 实现功能 |
---|---|
s/想要替换掉的内容/想替换成的内容 | 只替换光标对应行的第一个想替换的内容 |
s/想要替换掉的内容/想替换成的内容/g | 替换光标对应行的全部想替换的内容 |
n,ms/想要替换掉的内容/想替换成的内容/g | 替换从n行到m行全部想替换的内容 |
%s/想要替换掉的内容/想替换成的内容/g | 替换全文想替换的内容(无提示) |
%s/想要替换掉的内容/想替换成的内容/gc | 替换全文想替换的内容(每一次替换多有提示提示) |
(3)分屏
垂直分屏
对应的分屏 | 方法 |
---|---|
垂直分屏 | sp想打开的新的文件 |
水平分屏 | vsp想打开的新的文件 |
分屏之间的切换(要在命令行模式下) | ctrl键+ww |
三、用“*”打印出0-360度的sin函数
#include <stdio.h>
#include <math.h>
int main()
{
double i;
int x,m;
/*
for(i=1;i>=-1;i-=0.1)
{
m=acos(i)*10;
for(x=1;x<m;x++)
printf(" ");
printf("*");
for(;x<62-m;x++)
printf(" ");
printf("*\n");
}
*/
for(i=1;i>=0;i-=0.1)
{
m=asin(i)*10;
for(x=0;x<m;x++)
printf(" ");
printf("*");
for(;x<30-m;x++)
printf(" ");
printf("*\n");
}
for(i=0.1;i>=-1;i-=0.1)
{
m=asin(i)*10;
for(x=1;x<34-m;x++)
printf(" ");
printf("*");
for(;x<63+m;x++)
printf(" ");
printf("*\n");
}
}