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

本文介绍了如何下载并配置MacVim作为shell脚本编辑器,包括安装、设置本地配置文件,启用文件后缀识别。此外,还讨论了shell脚本的基本语法,如Unix命令、管道、重定向、变量定义、执行方式、流程控制结构,以及常用命令如cat、echo、printf和test的使用。

下载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.txt
8. 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 | uniq
14. expr :进行数学运算:2+3 =>expr 2 "+" 3
15. find 搜索文件 ,比如:根据文件名搜索find . -name filename -print
16. tee : 将数据输出到标准输出设备和文件 ,比如:somecommand | tee outfile
17. basename file: 返回不包含路径的文件名,比如 :basename /bin/tux将返回tux
18. head  -3 file : 打印文本文件开头3行。
19. tail -3 file :打印文本文件末尾3行。
20. sed 一个进本的查找替换程序。可以从标准输入(如命令管道)读入文本, 并将结果输出到标准输出(屏幕)。命令采用正则表达式进行搜索,不能和shell中的通配符混淆 ,比如 :将linuxfocus替换为LinuxFocus=>cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file
21. 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 <<EndFlag
blablabla
EndFlag
=>将多行文本在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=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

字符串测试:

参数说明
=等于则为真
!=不相等则为真
-z 字符串字符串长度为零则为真
-n 字符串字符串的长度不为零则为真
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
    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
### 使用 Vim 编辑器编写 Shell 脚本的方法 #### 1. 安装 Vim 编辑器 在某些最小化安装的 Linux 发行版中,Vim 编辑器可能未默认安装。如果需要使用 Vim,则应先通过包管理工具进行安装。例如,在基于 Red Hat 的系统上,可以运行以下命令来安装 Vim: ```bash yum install -y vim ``` 这条命令会静默安装最新版本的 Vim 编辑器[^1]。 #### 2. 创建一个新的 Shell 脚本文件 要创建一个新的 Shell 脚本文件,可以在终端中输入如下命令打开 Vim 并进入编辑模式: ```bash vim myscript.sh ``` 这里 `myscript.sh` 是新脚本的名称。按下回车后,Vim 将启动并准备好接受输入。 #### 3. 设置正确的文件权限 Shell 脚本通常需要赋予可执行权限才能正常运行。为此,可在保存退出之前或者之后更改文件权限: ```bash chmod +x myscript.sh ``` 这一操作使得脚本具备被执行的能力[^2]。 #### 4. 添加 Shebang 行 每一份有效的 Shell 脚本都应当以 shebang 开头,指明解释器的位置。对于 Bash 脚本来说,通常是这样的形式: ```bash #!/bin/bash ``` shebang 后面紧跟的是负责解析该脚本的具体 shell 或者其他程序的绝对路径[^3]。 #### 5. 插入实际代码 切换到插入模式(按 i 键),然后开始录入所需的命令序列。比如下面是一个简单的例子,用来打印 “Hello, world!” 到标准输出设备: ```bash #!/bin/bash echo "Hello, world!" ``` #### 6. 存储修改后的文档 完成书写以后,可以通过 Esc 键返回普通模式,接着输入 :wq 来同时保存改动并且关闭窗口。如果你只想存盘而不离开编辑界面的话,单独使用:w即可。 #### 7. 运行编写的 Shell 脚本 最后一步就是测试我们的成果啦!只需导航至存储位置并通过 ./ 加上前缀的方式调用它就可以了: ```bash ./myscript.sh ``` 只要一切顺利无误,“Hello, world!” 应该就会显示出来了! --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值