0%

私信某个用户的write命令

Linux write命令会将信息传给某一个 mesg 设定为 yes 的上线使用者(可以输入mesg,如果返回is yes就可以收到)。当使用终端登陆的时候,可以使用EOF (通常用 Ctrl+D)。所有人均可以使用该命令。

官方的定义为:

write – send a message to another user.

使用的方法为:

1
$ write user [ttyname]

相比于wall命令,多了一个[ttyname]这个参数。

在使用write的时候,用户会收到如下的信息格式:

Message from yourname@yourhost on yourtty at hh:mm …

而多了的[ttyname]这个参数用于在一个用户登陆了很多的终端后,可以指定向哪个终端发送命令。

这个命令的使用场景为单独向某个用户发送命令,比如账户快到期了、用户要续费了等等。

如下:

1
2
3
4
5
6
7
$ write user
Dear user,
We want to make you aware that your account will disable in two weeks.
Please save all your works or contact me for longer use.
Regards,
Admin
Ctrl+D #退出

所有登陆的终端都会收到这个消息:

1
2
3
4
5
6
7
8
Message from admin@localhost on pts/4 at 22:39 ...
Dear user,
We want to make you aware that your account will disable in two weeks.
Please save all your works or contact me for longer use.
Regards,
Admin
EOF

如果用户没有登陆,会有下面的输出:

1
2
$ write user
write: user is not logged in

而如果一个用户登陆了好几个终端,在不指定的情况下会有如下提示:

1
2
$ write user
write: useris logged in more than once; writing to pts/N

使用vimdiff查看文件之间的不同

与Unix diff命令一样,vimdiff用于显示文件之间的不同的地方。不像Unix的diff命令,vimdiff有更多的颜色和用户友好性

在下面的例子中,很容易可视化的看到两个文件中哪些地方文本被改变和添加。

1
$ vimdiff employee.txt new-employee.txt
vimdiff命令 描述
$ vimdiff file1 file2 使用垂直窗口分割显示文件的不同
$ vim -d file1 file1
$ vimdiff -o file1 file1 使用水平窗口分割显示文件的不同
$ vim -d -o file1 file1
$vim filel & :diffsplit file1 如果你已经打开一个文件,使用:diffsplit以水平方式加载的不同点
$vim file1 & :vert diffsplit file1 如果你已经打开一个文件使用:vert diffsplit以垂直方式加载的不同点
[c 移动到vimdiff中下一个改变处
]c 移动到vimdiff中前一个改变处

可以上墙的广播命令wall

Linux wall命令会将信息传给每一个 mesg 设定为 yes 的上线使用者(可以输入mesg,如果返回is yes就可以收到)。当使用终端登陆的时候,可以使用EOF (通常用 Ctrl+D)。所有人均可以使用该命令。

官方的定义为:

wall – send a message to everybody’s terminal.

所以wall应该是write all user’s teminal的缩写。

使用的方法为:

1
$ wall [-n] [ message ]

其中参数-n的含义为,修改显示的广播信息放松抬头,看示例即可明白。

这个命令的使用场景为如果需要升级维护系统,可以通过wall命令通知所有在线的用户。

如下:

1
2
3
4
5
6
7
8
9
10
11
$ wall
Dear all,
We want to make you aware that this weekend 12PM CST,
there will be scheduled down time for approximately 6 hours.
During this time we will add more capacity and software update
to our infrastructure and service.
Please save all your works and logout for safe.
See you next week.
Regards,
Admin
Ctrl+D #退出

所有登陆的终端都会收到这个消息:

1
2
3
4
5
6
7
8
9
10
11
Broadcast message from user@localhost (pts/4) (Mon Apr 18 22:02:22 2011):

Dear all,
We want to make you aware that this weekend 12PM CST,
there will be scheduled down time for approximately 6 hours.
During this time we will add more capacity and software update
to our infrastructure and service.
Please save all your works and logout for safe.
See you next week.
Regards,
Admin

需要注意的是,这个命令最大支持20行的信息,超过了就不会广播了。

如果使用-n参数的效果如下

1
2
3
4
5
6
$ wall -n 'hello'

# 其他终端用户收到的消息
Remote broadcast message (Mon Apr 18 22:05:22 2011):

hello

可以看到此时的通知抬头变成了 Remote broadcast message,去掉了是哪个用户发送的消息。

退出vim

  • : x :wq ZZ 保存文件并且退出
  • :q! :qa 退出但不保存文件

保存文件

使用*:w* 和 :u 都可以保存文件,其中w代表write,u代表update的含义。

如果只是输入上述命令,则直接保存文件,当然也可以使用*:w anotherFilename*来另存为另一个新的文件。

自动保存文件

当你试图切换缓冲区或者文件时,如果你没有保存改变时Vim通常会给出错误消息。

启用切换缓冲区/文件时自动写入文件,命令如下:

1
:set autowrite

使用单个命令写入所有文件(这可能在宏中非常有用)

1
:wall

保存文件时发生的问题

  1. 尝试保存文件已存在,可以输入*:w! file用来覆盖现有的文件,或者:w newfile*将编辑的结果写入新的文件;
  2. 得到文件系统已满的消息,可以输入*:!rm junkfile来删除一个不需要的打文件,空出一些空间(在冒号后加上感叹号,然后就可以执行shell命令),或者输入:!df看看其他文件系统有没有空间,如果有,先放入其他文件系统,用:w pathname*来写入你的文件。
  3. 系统进入开放模式并且显示文件系统已满的消息,可以输入*:!ls /tmp来查看有无可以移除的文件,以腾出一些空间。如果有的话,可以先创建一个临时的unix shell,以便移除,直接输入:sh可以打开一个新的暂时的shell*,移除后,可以输入exit返回到vi,或者使用CTRL+Z来将vi暂停,放到后端,使用fg即可以回到vi。
  4. 尝试写入文件,却得到磁盘限额已满的消息,可以实时*:pre(:preserve)*的缩写,强迫系统保存你的缓冲区。

使用当前行重绘屏幕

导航键 描述
z然后ENTER 将光标行移到屏幕顶端并滚动屏幕
z. 将光标行移到屏幕中心并滚动屏幕
z- 将光标行移到屏幕底端并滚动屏幕
200z然后ENTER 会把第200行移到屏幕顶端

VIM 重复命令

  • @@ : 重复上一个执行宏
  • n:以相同的方向重复上一个搜索命令;
  • N:以相反的方向重复上一个搜索命令;
  • . :重复上一个编辑命令;
  • @:重复上一个命令行

VIM快速选中并复制粘贴替换一个单词

  1. 比如准备用bbb替换aaa
  2. 光标移动到aaa的开头,按 v 按e 按y
  3. 光标移动到bbb的开头,按 v 按e 按p

VIM 撤销和重做

  • u:可以撤销上次的操作;
  • Nu:可以撤销前N次的操作;
  • U:撤销当前行的所有修改;
  • :red或者CTRL+R:可以撤销还原;

关于gvim

gVim是Vim的图形前端,它是跨平台的编辑器,基本上主流的操作系统上面都有它的版本。

##显示或隐藏gvim的菜单和工具栏

使用:set guioptions命令。

例如隐藏工具栏*:set guioptions-=T,再次显示工具栏为:set guioptions+=T*

UI元素命令 描述
:set guioptions+=TmrlRL 显示所有gvim的GUI元素
:set guioptions-=TmrlRL 隐藏所有gvim的GUI元素
:set guioptions-=T 隐藏gvim工具栏
:set guioptions-=m 隐藏gvim菜单栏
:set guioptions-=r 隐藏gvim右边的滚动栏
:set guioptions-=l 隐藏gvim左边的滚动栏
:set guioptions-=R Hide gVim Right side scroll bar that appears when window is split vertically
:set guioptions-=L Hide gVim Left side scroll bar that appears when window is split vertically

gVim中改变字体

你可能不喜欢gVim的缺省字体,你可以使用下面两种方法来修改它。

方法1:

该例子设置字体类型为Courier New,大小为10。对于这种方式,你应该已经知道字体的名称。

1
:set guifont=Courier\ New:h10

方法2:

下面的方法将打开一个字体选择UI,在对话框中你可以选择字体类型和大小。

1
:set guifont=*