vimbash等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vimbash等相关的知识,希望对你有一定的参考价值。

使用vim编辑多个文件

  vim file1 file2 file3 ...

  :next查看或编辑后一个文档的内容

  :prev查看或编辑前一个文档的内容

  :first查看或编辑第一个文档的内容

  :last查看或编辑最后一个文档的内容

 vim -o|-O file1 file2 file3 

  -o:水平显示多个文件

  -O:垂直显示多个文件

 Ctrl+w arrow(箭头) 光标移动

 Ctrl+w,s讲一个文件水平分屏显示

 Ctrl+w,v将一个文件垂直分屏显示

 :qa 全部退出

 :wa 全部保存

将其他文件中的内容填充到当前文件中

 :r (/PATH/TO/SOMEFILE)这是解释

跟shell交互

 :!命令(command)

部分另存为

 :w(全部保存)

 :m,nw(从第m行到第n行)

 :m,+n

 :.,$w

默认系统中所支持的shell

 cat /etc/shells

bash特性

命令别名:自定义命令

  alias:可以用来定义和设置命令的别名  

注意:使用alias命令定义的别名其生命周期仅限于当前shell的生命期;如果修改.bashrc配置文件,其中保存的别名并不会立即生效,只有在重新加载该文件内容之后才会生效且永久生效;为了能够保证设置别名有效,通常两种操作都做

撤销别名:unalias

. .bashrc:将.bashrc的命令读取

命令历史:

  bash进程会保存其会话中用户曾经执行的命令,以方便用户重复执行某个命令通过bash提供的历史命令文件来持久保存此前执行过的命令,用户由私有历史文件 登陆shell的时候,bash会自动读取~/.bash_history文件中所记录的所有命令

history命令:

  -c:清空历史缓冲区中的历史命令;

  -d OFFSET:删除特定历史命令条目;

重复执行前一个命令的方法:

  使用上方向箭头,回车执行

  Ctrl+p

  !-1

  !!

重复执行历史缓冲区的命令

 !#(#=数字):重复执行历史命令中的编号为#的命令

 !(string)字符串:从历史缓冲区中查找最近一次执行过的以string开头的命令并执行

 !?string:从历史缓冲区中查找最近一次包含string的命令并执行

 !- number:执行历史缓冲区中倒数第number个命令

 Ctrl+r:在历史缓冲区中实施搜索,回车执行即可:

重复使用历史命令中的一部分:

 !$ 、ESC .、ALT+:表示最后一次命令中最后一个参数;

 !^:第一个位置的参数

 !:number:最后一次命令中第number个位置的参数

 !number1:number2在历史缓冲区中第number1个命令的第number2个参数

快捷键

  C-->Ctrl

  M-->Alt

  E-->Esc

  DEL-->Backspace

 C-l:clear 清屏

 C-a:将光标跳至命令行行首

 C-e:将光标跳至命令行行尾

 C-k:删除光标所在位置至行尾的命令行信息

 C-u:删除光标所在位置至行首的命令行信息

 C-c:结束前台进程。取消命令的运行

命令补全机制:

 命令本身字符串的补全

  参数的补全

使用TAB键可以完成命令补全:

  如果给出的字符串不能作为唯一标识,则bash不予补全;再次敲击TAB键,bash会给出参考列表;如果参考列表中的内容过多,bash会询问是否显示该列表;根据提供的参数路径来进行补全,如果参数没有任何提示信息,则默认从工作目录进行查找;

命令行展开:

  ~:bash会自动将其展开为当前登陆用户的家目录

  ~STRING:bash会自动将其展开为以STRING为用户名为用户的家目录

  ~+:调用shell变量pwd的值

  ~-:调用shell变量oldpwd的值

{}:在花括号中可以填充一个以","分隔的路径列表,bash会将其展开为多个独立的路径;

命令的执行结果

 任何以个Linux命令都有两种执行结果:

 命令的正常输出结果:跟用户需求相关的返回内容:

 ``:反向单引号,反引号

 $():标准的命令引用格式

wc:统计一个文件中的行数、字数及字节数

 -c:只显示字节数

 -l:只显示行数

 -w:只显示字数

命令的执行状态返回值;跟命令执行成与否相关的返回命令

引用功能:

 ‘‘:强引用

 凡是被单引号引用的内容,bash一律将其视为普通字符,即便本身有特殊功能和作用也是如此,但是单引号本身是个例外

 "":弱引用 被双引号引用的内容有一些特殊字符仍然会保留器特殊含义 比如:$、\、""

转义功能:

 \:bash中定义的转义字符只能使其后的一个字符失去特殊意义

Globbing文件名通配,简称为glob;

元字符:

 *:匹配任意长度的任意字符,某些特殊位置的“.”字符不能被匹配

 ?:匹配任意单个字符并且只有一个字符被匹配

 []:匹配指定范围内的任意单个字符,并且只有一个字符被匹配

     [a-z]:a,A,b,B,c,C,...y,Y,z

     [A-Z]:A,b,B,c,C,...y,Y,z,Z

字符集:

    [:lower:]所有的小写字母

    [:upper:]所有的大写字母

    [:alpha:]所有的大小写字母

    [:digit:]所有的十进制数字

    [:alnum:]所有的大小写字母以及十进制数字

    [:space:]表示空白字符

    [:punct:]所有的标点字符

输入输出重定向

    在使用计算机时实现某种功能的主体是:程序

    程序=指令+数据

    数据:文件,io

   可以用来输入的设备:文件

    键盘设备,文件系统中的常规文件,网卡设备,声卡设备等

   可以用来输出的设备:文件

    显示器,文件系统中的常规文件,网卡设备,声卡设备等;

  每一种程序都会有三种形式的数据流  

    输入数据流:为程序获取数据的数据流   默认的输入数据流的来源就是键盘

    输出数据流:将程序处理的数据结果展示给用户的数据流  默认的输出数据流的终点是显示器

    错误数据流:将程序无法处理或处理过程中出现问题的结果展示给用户的数据流默认的错误数据流的终点是显示器

    从键盘实现的输入数据流称为标准输入

    到显示器上的输出数据流称为标准输出

    到显示器上的错误数据流称为标准错误输出简称标准错误

文件描述符:File Descriptor,FD

 0:标准输入,stdin

 1:标准输出,stdout

 2:标准错误,stderr

io重定向 采用非标准设备文件实现的io操作

   不是从键盘设备完成的数据流输入就可以称为输入重定向或重定向输入

   不是到显示器设备的正确输出数据流就可以被称为输出重定向或重定向输出

   不是到显示器设备的错误输出数据流就可以被称为错误重定向或重定向错误

输出重定向:

 >:覆盖输出重定向

 set -C 开启防误覆盖开关">|"可以继续覆盖重定向

 set +C关闭防误覆盖开关

 >>:追加输出重定向

错误重定向

2>:覆盖错误重定向

2>>:追加错误重定向

 合并标准输入和标准输出的重定向

 &>,&>>

  command>|>> /PATH/TO/SOMEFILE 2>&1

 /dev/null:黑洞BlackHole

输入重定向:

   <:唯一字符

   <<:此处文档

   <<<:此处字符串

 管道:

|:command1 |command2 |command3...

 注意:所有的用于管道链接的命令,都应该是能够有标准输出数据流的命令

以上是关于vimbash等的主要内容,如果未能解决你的问题,请参考以下文章

bash与source等特点和区别

用Bash脚本更新公共JavaScript库(jQueryheadjsmodernizr等)

CentOS6 /etc/profile ~/.bash_profile ~/.bashrc等文件的执行顺序

是否有一个等同于bash命令`set -e`的python3?

Linux Bash Shell字符串分割substring等(转)

bash的特性