vim、bash等

使用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...

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

时间: 2024-10-11 12:32:14

vim、bash等的相关文章

find,vim,bash环境变量,文件权限

Linux中一切皆文件,所以文本文件的编辑就是运维工作的常事,熟练使用一款文本编辑器就非常重要,linux中有nano文本编辑器,现在学习更为强大的Vim文本编辑器 全屏幕的编辑器:VIM vi: visual interface sed:行编辑器 vi, vi iMproved vim: 模式化: 编辑模式:命令模式 输入模式: 末行模式: 编辑模式 --> 输入模式: i: insert, a:append, o:new line, I: 行首 A:行尾 O:上方新建行 输入模式 -->

ubuntu 源码编译安装最新的vim 8.0

为什么要源码编译安装VIM? 因为我要安装ycm,ycm要求vim版本为8.0 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 1,核对系统版本 [email protected]:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: tr

linux mini模式下如何制作本地yum源,并用远程工具安装 vim

linux mini模式下如何制作本地yum源,并用远程工具安装 vim 打开虚拟机 启动centos 系统 点右下角的光盘图标 出现连接(或是断开).设置,下拉菜单,选择 "设置" 在虚拟机设置对话框内如图所示 [[email protected] ~]# vim -bash: /usr/bin/vim: 没有那个文件或目录 光盘挂载: 查看系统中所有的挂载信息 [[email protected] ~]# mount /dev/sda3 on / type ext4 (rw) pr

编译bash实现history的syslog日志记录

摘要: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1763145 一.编译BASH实现bash的syslog日志记录功能 1. 本文将通过bash软件实现history记录到syslog日志的功能,并通过该方式可以实现实时的传送到了远端的日志集中服务器上,可以实现操作目志的审计功能. 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明

为什么国外程序员爱用 Mac?

from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.

宋宝华:Docker 最初的2小时(Docker从入门到入门)

最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料.本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学习高级用法,深层原理,一轮轮迭代.坚决反对一上来就搞几百页厚的东西把人脑子弄乱. Docker是什么? KVM, Virtualbox, Vmware是虚拟出机器,让每个实例看到一个单独的机器:而Docker是虚拟出操作系统,实现应用之间的隔离,让各个应用觉得自己有一个自己的操作系统,而且彼此之间隔

grub2和systemd

centos7全面升级了引导程序和系统管理程序,使用grub2替代了grub来引导操作系统,使用systemd替换了init管理系统程序,systemd的升级比较激进,从架构上变更init管理程序.微服务docker却希望使用docker domean管理微服务中的进程,这是一个问题. 一 grub2 grub2和grub之间区别主要是grub2把引导模块化了,每个驱动一个模块放置在/boot/grub2/i386-pc/目录下了.一次centos7的引导流程:post->grub2(mbr->

shell变量赋值与环境

shell变量赋值与环境 今天,跟着架构师(凡爷)搞了一个代码量统计的脚本,我学到了以下几条: 1)命令在脚本里,只是字符串,较长的命令可以改为变量,引用去执行 2)潜意识我想到if,添加语句块,而凡爷却想到了grep -v,节省了一大段代码 3)echo '' > stat 他自然而然地加上这一行,让output按不同区块相隔开,结构清晰 4)他定位问题精准而快速,很是钦佩 今晚关于shell变量,我做了很多测试,将其整理如下,以便温故而知新. #赋值# # hours_per_day=24 

Linux之进程管理(2)相关命令之一

Linux之进程管理(2)相关命令之一 procps工具命令对进程管理的使用:   ps   pgrep  pidof  pkill  pstree ps  命令 ps  (Process State)  :report a snapshot of the current processes. 查看当前进程的快照信息表 此命令支持3种风格: 1.SysV风格:选项前必须加-符号,如ps  -ef 2.BSD风格:选项前可以不加-符号,如ps  aux 3.GUN风格:之前两个-符号,类似长选项,

linux 安装配置java环境

1. sudo mkdir /usr/lib/jvm 2.官网下载jdk jdk下载,以jdk1.8.0_40为例 解压后,移动到/usr/lib/jvm下 3. sudo vim bash.bashrc,添加: export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_40 export JAVA_BIN=$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar expo