配置vim ,作为shell脚本编辑器

来源:互联网 发布:电子键盘软件 编辑:程序博客网 时间:2024/05/16 12:26

下载macvim ,并设置程序依赖

brew install macVim
alias mvim=’/Applications/MacVim.app/Contents/MacOS/Vim -g’

vim配置文件设置:
vim 本地配置文件:提取码->d3uk
需要启用头文件默认插入,需要首先启用文件后缀识别

"Enable filetype plugin  filetype plugin indent on  

将配置文件放置在~/下 ,

mvim testFile.sh
macvim 打开编辑器
启用文件后缀识别之后

由于使用了youcompleteme插件, 需要进行编译,才能正常使用。进入~/.vim/bundle/youCompleteMe ,执行./install.py(实际没有使用,自动补全使用的其他方法)

使用的基本语法

使用 #!/bin/sh来确定执行该文件的程序。
变量定义不需要声明, 直接进行定义, 并且变量定义过程中不加空格。否则不能识别、
执行简单脚本,不能使用./shScript来执行。而使用. shScript来执行。
shell脚本中使用的三类命令:

Unix命令:

常用语法 :1. echo "someText" :打印文字到控制台。2. ls 文件列表。3. wc -l : 计算文件中的行数 || filewc -w:计算文件中的单词数 ||filewc -c 计算文件中的字符数4. cp sourcefile destfile : 文件拷贝5. mv oldname newname : 重命名文件或移动文件6. rm file :  文件7. grep 'pattern' file :在文件内搜索字符串 ,如 : grep 'searchString' file.txt8. cut -b colnum file :指定欲显示的文件内容范围,并将他们输出到标准输出设备,比如:输出每行第5个到第9个字符 cut -b5-9 file.txt不能与cat命令混淆。9. cat file.txt : 输出文件内容到标准输出设备上。10. file somefile:得到文件类型11. read var :提示用户输入 ,并将输入赋值给变量。12. sort file.txt: 对file.txt文件中的行进行排序13. uniq:删除文本文件中出现的行列 ,如:sort file.txt | uniq14. expr :进行数学运算:2+3 =>expr 2 "+" 315. find 搜索文件 ,比如:根据文件名搜索find . -name filename -print16. tee : 将数据输出到标准输出设备和文件 ,比如:somecommand | tee outfile17. basename file: 返回不包含路径的文件名,比如 :basename /bin/tux将返回tux18. head  -3 file : 打印文本文件开头3行。19. tail -3 file :打印文本文件末尾3行。20. sed 一个进本的查找替换程序。可以从标准输入(如命令管道)读入文本, 并将结果输出到标准输出(屏幕)。命令采用正则表达式进行搜索,不能和shell中的通配符混淆 ,比如 :将linuxfocus替换为LinuxFocus=>cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file21. awk :awk用来从文本文件中提取字段。缺省的字符分隔符是空格,可以使用-F指定其他分割符,cat  file.txt | awk -F, '{print $1 "," $3}'

概念: 管道,重定向 ,backtick

管道 (|)讲一个命令的输出作为另一个命令的输入。重定向 :将命令的结果输出到文件而不是标准输出(屏幕)一般情况下,每个命令都会打开3个文件:* 标准输入文件* 标准输出文件* 标准错误文件">"写入文件,并覆盖旧文件">>"加入文件的尾部 ,并覆盖旧文件。反短斜杠:"`"将一个命令的输错作为另一个命令的命令行参数。tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`tar命令将find命令的结果作为了打包对象,
参数 说明 cmd > file 输出重定向到文件 cmd < file 输入输入重定向到文件 cmd >> file 将输出以追加的方式重定向到file n > file 将文件描述符为n的文件输出到file n >> file 将文件描述符为n的文件追加到file n >& m 将输出文件m和n合并 n <& m 将输入文件合并 << tag 将开始标记tag和结束标记tag之间的内容作为输入
需要注意的是文件描述符0通常是标准输入,1是标准输出 ,2是标准错误输出。如   cmd 2 > file 将标准错误输出到file文件    cmd > file 2>&1

流程控制

  • if语句
if ....; then   .... elif ....; then   .... else   .... fi 流程控制中的一些条件:1. 通常使用[ ]来表示测试条件, 需要确保方括号的空格2. [-f "somefile"]:判断是否是一个文件3. [-x "/bin/ls"]:判断/bin/ls是否存在并有可执行权限。4. [-n "$var"]判断$var变量是否有值5. ["$a" = "$b"]:判断$a$b是否相等注意 : 条件判断[]中间的条件开头和结束需要空格断开。如if [ ”$testStr“ ];条件判断句中等号两端也需要使用空格断开。。if [ "$testStr" = "" ];条件判断句中使用变量时候需要使用""进行包裹。快捷运算符 : && ,如:[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors" 如果左边的表达式威震则执行右边的语句。
  • case 语句
#!/bin/sh ftype=`file "$1"` case "$ftype" in "$1: Zip archive"*)   unzip "$1" ;; "$1: gzip compressed"*)   gunzip "$1" ;; "$1: bzip2 compressed"*)   bunzip2 "$1" ;; *) error "File $1 can not be uncompressed with smartzip";; esac 取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;case使用esac(翻转case)作为case语句的结束。
  • select

其他一些小内容

  • 将命令结果作为下一个命令的参数传入。
    命令结果作为下一个命令或表达式的参数
1. 使用``反引号=>fileBasename=`basename $fileDir`2. $() =>效果等同于`` 
  • 有些情况下行首不能添加空格。
  • cat命令使用
cat <<EndFlagblablablaEndFlag=>将多行文本在shell脚本中输出到指定的文件或标准输出》,用于在脚本中提供帮助文件。
  • 命令行参数
    在实际参数输入之前添加 可选参数,使用”-“进行区分
  • 变量执行运算
变量执行运算=》1. 使用expr 如i=$(expr $i "+" 1)2. 使用let命令 如:let i++3. 使用 $[a+b]来进行运算
  • 输入等待
    read命令,等待用户执行输入,进行下一步操作。
  • 传递参数
  • *
参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$相同但输入输出增加了引号 $- 显示shell使用的当前选项 $? 显示最后命令退出状态。0表示无错误,其他有错误
  • 输出

    1. echo :控制台输出
    2. printf:作用等同于echo ,于c中的printf方法用法相似。
  • test 命令(格式 : test 参数 操作符 参数 或 使用[ ] 来进行test)
    用于条件语句的参数
    数值测试:

参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 le 小于等于则为真

如:

num1=100num2=100if test $[num1] -eq $[num2]then    echo '两个数相等!'else    echo '两个数不相等!'fi

字符串测试:

参数 说明 = 等于则为真 != 不相等则为真 -z 字符串 字符串长度为零则为真 -n 字符串 字符串的长度不为零则为真
num1="ru1noob"num2="runoob"if test $num1 = $num2then    echo '两个字符串相等!'else    echo '两个字符串不相等!'fi

文件测试
(文件类型:1. 设备文件 2.目录文件 3. 普通文件)

参数 说明 -e 文件 文件存在则为真 -f 文件 文件存在且可读则为真 -w 文件 文件存在且可写则为真 -x 文件 文件存在且可执行则为真 -s 文件 文件存在且至少一个字符则为真 -d 文件 文件存在且为目录则为真 -f 文件 文件存在且为普通文件则为真 -c 文件 文件存在且为字符型特殊文件则为真 -b 文件 文件存在且为块特殊文件则为真
  • 运算符
    1. 算数运算符 同C基本运算
    2. 关系运算符 同test数值测试
    3. 布尔运算符 如下:
    4. 逻辑运算符 (oc 中&& ||)
    5. 字符串运算符 ,如下:
    6. 文件运算符 同test文件测试
      布尔运算符
参数 说明 ! 非运算 -o 或运算 -a 与运算

字符串运算符

参数 说明 = 检测两个字符串是否相等 != 检测两个字符串是否相等,不等则返回true -z 检测字符长度是否为0, 为0返回true -n 检测字符长度是否为0 ,不为0返回true str 检测字符串是否为空,不为空返回true
原创粉丝点击