vim程序编辑器
◆vim(程序编辑)是vi(文本编辑)的晋级版。
vi有一般模式(可删除、复制粘贴)、编辑模式(可编辑)、命令模式(执行保存、离开vi等命令)。
【vi 文件名】 打开一个旧文件或新建一个文件并打开,(当文件原本不存在时,新建后若不进行编辑就离开,系统不会保存该文件vi、vim、nano都一样)进入一般模式,在最后一行的命令行中会显示文件状态、文件行数及字符数,以及光标所在坐标;
一般模式下按下i、o、a进入编辑(insert)模式,或r(replace),即可编辑文件,esc退出编辑模式;
一般模式下按 :/ ? 进入命令行模式——编辑模式跟命令模式之间不能直接切换。
/和?后跟关键字用来查询文本中的字。
:wq(保存并离开) :wq!强制后自行 ZZ若文件没更动不保存离开,否则保存离开
yy复制光标所在行;p,P粘贴;dd删除光标所在行;nG光标移至第n行;:set nu显示行数;u撤销前一操作。另有查找替换等功能
◆vim编辑器可以块选择(visual block)进行复制、删除操作,也可以一个vim同时打开多个文件,讲一个文件中的内容复制到另一个文件。
◆vim编辑器可以多窗口显示同一个文件或者不同文件,以方便对照不同文件:sp
dos2UNIX或UNIX2dos(windows与linux下的文件)断行格式转换(Ubuntu下apt-get installtofrodos,使用方法不是unix2dos和dos2unix了,而是todos 和fromdos了。)
iconv 中文编码格式的转化(windowsI下默认big5,而linux utf8)
gcc、make编译程序
源码(编程语言所写的代码)在linux中经编译程序(如gcc、make)编译成可执行文件(二进制文件)——gcc针对小型个别程序,make对大量的程序编译
①用vim编辑一个.c(如hello.c)文件;
②【gcc -c .c文件】 产生对应的.o文件,即目标文件(若不加任何参数,生产默认的a.out可执行文件);
③【gcc -o 欲创建的可执行文件名 .o文件】
④在该目录下执行该可执行文件即可。
或者直接对.c文件【gcc -o 可执行文件名 .c文件】生产可执行文件而不生产.o文件。
gcc直接跟.c文件,会自动生成a.out文件作为可执行文件,gcc另一个.c文件时,a.out会被覆盖。
当c程序中的函数没有在头文件中加入时,可在编译时到函数库中寻找(p666)。
make自动该调用makefile(或Makefile)文件中的语句,将其中的语句当命令来执行。
Makefile文件需要自己建立,其格式如下:
目标(target):目标文件1 目标文件2
<tab> 要执行的命令语句 # “#”用来添加注释,执行语句前必须有<tab>
在终端用命令【make 目标】即可执行。
Shell Script
shell script就是用shell执行的程序,但由于用的是外部命令与bash shell的一些默认工具,所以回去调用外部函数库导致运行速度变慢。shell script通常用在管理和服务器检测上,不针对大量数据处理。
(1)编写规范:
① 脚本文件以“.sh”为拓展名;
② 如果读到一个Enter符号(CR),就尝试执行命令。故换行时用“\ enter”;
③ “#!”为开头第一行声明shell,指明文件内的语法,如#!/bin/bash;“#”为批注;
④ 设置好环境变量PATH、LANG等
(2)执行方法:
① chmod +x 给脚本文件添加可执行属性,用相对或绝对路径执行;
② 【bash shell.sh】或【sh shell.sh】(bash比较靠谱);
③ 可用sh -x检查脚本文件是否有语法错误;
④ 用source或“.”来执行;
⑤ ①-③都是在当前shell的子程序中进行的,故变量在执行完后释放,④则是在当前bash中执行,变量会保留。
⑥ sh -c “一串命令”可以直接在命令行运行引号内的命令,而不用写成文件
(3)脚本算术处理:
脚本中经常用到变量,对变量的操作(替换的功能,如“:-”)应熟悉。数值运算采用“$((表达式))”或者用“declare -i 变量名=计算式”。但脚本程序只能处理整型数据。
变量名=”变量值”的方式定义变量
(4)test测试指令
test来检查文件的类型、权限、比较文件大小;字符串是否为空;整数的比较。test指令不会输出任何信息,要通过判断回传码$?来知道结果。
-e文件是否存在;-f/-d文件时普通文件还是目录;
数字比较-gt(>) -lt(<) -eq(=),避免不要直接用>、<(>在这里可能会被当做数据流重定向,而新建>后面的文件!)
-r/-w/-x是否可读可写可执行;-z 字符串是否为空;-a(and)两个条件同时成立传回0;-o(or)条件成立一个回传0;!即取反,不成立回传0。
(5)[]判断式
[_ 判断式_]语法(参数)跟test的相同,括号的边都应有空格!常量或者变量都应用“”包裹。每个变量与符号(==)或参数之间最好也加空格,否则会出现误判或语法错误。
(6)shell script 默认变量
$#:表示变量的个数
$@、$*:表示全部的变量
$n:即$1、$2、$3…$0表示该script的文件名
变量名是在执行该script文件时自定义的,如【bash sh07.sh p1 p2 p3】,则表示有三个变量(p1、p2、p3)。
shift n,n为数字(写在脚本里)表示变量偏移,即拿掉最前面的几个参数的意思。
默认变量是应用:在脚本里当做参数使用,在bash中执行该脚本时直接连同参数一起运行。
(7)if条件句
if [ 条件1 ];then
执行语句1
执行语句2
elif [ 条件2];then
转型语句…
fi
fi作为“end if”使用。[]中条件格式与[]判断式一样。if条件也可以用[]&&[]、[] ||[]来表示。
(8)case $变量 in #即switch语句
取值1)
执行语句
;;
取值2)
执行语句
;;
*) #即default
执行语句
;;
esac #case倒着写
该语句适合既定的变量内容,用户输入变量名称(默认变量或者read进去)。
(9)function
即函数。function 函数名(){
函数体
}
函数的创建一定要在引用之前!function也有内置变量$0(函数名)、$1(参数1)、$2(参数2)…,即该函数的参数,在函数体里使用,在调用函数 式直接将实参带入对应位子。实参可以是常量,也可以是其他已定义的变量。
(10)循环
①while [条件成立执行循环] ②until [条件成立跳出循环]
do do
循环体 循环体
done done
③for var in con1con2… ④for(( 初值;终值;步长))
do do
循环体 循环体
done done
变量var在确定几个情况下循环, 注意有两重括号;步长可以使用i++
var第一次出现在for后面是声明了 (( ))中可以用<>、<=等
该变量,通常在循环体中使用该变量$var。
如果条件是个变量(变量内包括多个情况时),不应该加引号!否则会将所有情况当成一个情况处理!
注意变量的计算赋值(尤其是循环赋值)var1=$(($var1+$var2))
ps:在语句中“#”后跟数据表示获得该变量的长度(字符个数、整型数的位数)