Skip to content Skip to main navigation Skip to footer

Redhat

Linux下文本文件中^M 符号问题的解决

在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,
对于回车符的定义:
windows:0D0A
unixlinux: 0A
MAC: 0D
比较快捷的去除这些符号的方法有这么几种:
(1)是用VI的命令:
使用vi打开文本文件
vi dos.txt
命令模式下输入

    :set fileformat=unix
    :w
 

(2) VI下使用正则表达式替换

   g/^M/s/^M//
 

或者

   %s/^M//g
 

(3)使用sed 工具

    sed ’s/^M//’ filename > tmp_filename
 

(4)既然window下的回车符多了‘ ’,那么当然通过删除‘ ’ ,也可以实现:
tr -d ” ”
(5)最后一个方法是本人最常用的方法,个人觉得最方便
在终端下敲命令:

   $ dos2unix filename
 

直接转换成unix格式,就OK了!~

vim /vi :如何在vim 编辑器里画图

如果你想在vim编辑器里也可以实现画简单的线性图,那么可以使用vim 里的一个叫 VIM Drawit!的插件。
下面来看看如何来安装vim drawit! 插件:
首先下载vim drawit! 安装包,输入下面的命令:

wget -O DrawIt.vba.gz http://www.vim.org/scripts/download_script.php?src_id=8798
 

安装vim drawit!插件
使用vim 命令编辑下载的vim drawit! 文件,在末行模式下输入下面的命令:

:so %
:q
 

vim 编辑器里 Drawit! 插件使用
\di 命令将会开启drawit! 插件
\ds 命令将会关闭drawit! 插件
举个例子:
使用vim drawit!插件画个导航图
使用上下左右键你可以用来画出方框或者方向线。
如下图:
如何在vim 编辑器里画图1

vi /vim:如何将光标跳转到文件末尾

当你用 vi /vim 编辑一个大文件的时候,如何能从当期行快速跳转到最后一行呢?
你可以使用下面的 vi / vim 的快捷键命令:

G
 

该命令会直接跳转到末尾行。
如果想在回到开始行的话,可以输入下面的命令:

1G
 

gg
 

 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

Linux: vi / vim 字符串搜索和替换

在linux或者unix系统下,我们常常会用vi/vim命令打开一个文件,并在文件里查找特定的字符串,也有可能会将找到的字符串替换成另一个字符串。
vi/vim
 
vi /vim 命令字符串搜索并替换的命令格式如下:

%s/old/new/
 

 
vi /vim 命令字符串搜索并替换例子
查找字符串“oldtest”并将其替换成”newtest”,在vim 末行模式下输入命令:

:$s/oldtest/newtest/
 

 
上面的命令只会替换所有行里发现的第一个匹配的字符串。
如果你想替换文本所有匹配的字符串,可以使用下面的命令:

:%s/oldtest/newtest/g
 

 
vi/vim命令限定范围查找并替换字符串
如果你只想将从第10行到第20行的文本行中的查找并替换字符串,那么可以输入下面的命令:

:10,20s/oldtest/newtest/
 

 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

vi / vim: 如何在打开文件的时候直接跳转到指定的函数或行

当使用linux 下vi /vim命令打开文件后,你肯定想直接跳转到某个特定的函数或者字符串或者某行。如何来做?
你可以使用下面的命令来实现:
vi +<函数名> <要打开的文件名>

vi +<行号> <要打开的文件名>
例子:打开文件后直接跳转到第五行,输入下面的命令:

vim +5 foo.txt
 

输出如下:
vim 如何在打开文件的时候直接跳转到指定的函数或行1
打开文件后直接跳转当特定的函数,输入下面的命令:

vim +/pathmunge /etc/profile
 

命令输出:
vim 如何在打开文件的时候直接跳转到指定的函数或行1
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

常用 vi / vim 快捷键命令总结

当你在使用vim命令编辑一个文件的时候,会用到很多的快捷键操作,比如拷贝一整行,拷贝多行文本等。。
vi/vim
#1 拷贝整行文本

yy
 

shift y
 

:ny
 

#2 拷贝从光标位置开始到行尾的字符串

y$
 

#3 拷贝当前行之后的三行内容

3yy
 

#4 拷贝一个范围的文本行

:1,5y
 

1y5
 

#5 删除一整行

dd
 

:nd
 

#6 删除从光标处到行末的所有字符串

d$
 

shift d
 

#7 删除多行文本

:1,5d
 

1d 5
 

#8 将vim切换到替换模式

shift r
 

#9 撤销操作

u
 

#10 重做操作

ctrl r
 

解决ubuntu下vim “E319:命令不可用”问题

在ubuntu linux 系统下,但使用vim 命令打开一个文件后,如果你输入 vim 命令:syntax on 来开启代码高亮显示的时候,会遇到下面的E319问题。
E319: Sorry, the command is not available in this version: syntax on
如何来解决这个问题呢?
你需要重新安装完整版的vim版本,输入下面的命令:

sudo apt-get install vim
 

vim / vi命令在没有root权限的情况下如何保存文件

当你在linux系统下以一个普通用户登录系统后,使用vi/vim命令编辑一个文件,当你想保存文件的时候,系统会提示说你么有root权限,无法保存。这个时候该怎么办?
 
你可以使用 linux tee 命令结合 linux sudo 命令来实现没有root权限的情况下不用创建临时文件就可以保存更改的文件。
 
首先使用普通用户登录当前系统,输入下面的vi 命令,打开一个文件:
 

vi /etc/apache2/conf.d/mediawiki.conf
 

 
打开文件后,做一些更改,输入wq保存,你会看到下面的错误。

E166: Can't open file for writing
 

 
看下图:
 
vim vi 没有root权限保存文件1
这个时候如果想保存文件,可以在末行模式下输入下面的命令:

:w !sudo tee %
 

 
vim vi 没有root权限保存文件2
 
其中,
:w 是写一个文件
!sudo 是调用shell sudo 命令
tee 是将输出的内容重定向
 
vim vi 没有root权限保存文件3
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

启用或关闭vim编辑器中的代码高亮显示

当你使用vim编辑器编写代码的时候,vim编辑器具有识别不同语言代码的高亮显示功能,如何来开启vim代码高亮显示功能呢? 如何来关闭vim 代码高亮显示呢?
大家都知道vim是一个非常强大的代码编写工具,可以用来编写各种不同的语言。
 
启用vim代码高亮显示
首先使用vim命令打开一个文件,输入命令:

vim filename
 

 
然后输入“:”进入末行模式,输入下面的vim命令:

:syntax on
 

 
默认情况下,vim编辑器的代码高亮功能是启用的。
 
下面是用vim打开的高亮显示的bash shell 代码:
 
启用或关闭vim编辑器中的代码高亮显示
启用或关闭vim编辑器中的代码高亮显示
 
关闭vim代码高亮显示
进入末行模式,输入下面的命令:

:syntax off
 

 
看下图:
启用或关闭vim编辑器中的代码高亮显示
 
让代码高亮显示设置永久生效
你可以通过编辑~./vimrc 配置文件,加入下面的内容到文件里,保存并退出后,就会永久生效

vim .vimrc
 

加入行:

syntax on
 

 
保存退出。
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

vi /vim:如何退出 vi /vim 文本编辑器

在linux 系统下如何退出当前的vi/vim编辑器。
vi /vim 是linux系统下用的最多的一个文本编辑器,可以用这个编辑器来编辑所有的二进制文本,特别是用来编辑不同的程序文件,可以高亮显示代码行。
输入下面的vim/vi 命令打开文件:
vim filename
vi filename
退出vim编辑器
首先你需要从输入模式退出到命令模式,可以输入ESC键。然后,输入下面的命令,并回车就可以退出vim编辑器。

:q
 

:q!
 

:x
 

如图:
如何退出 vi vim 文本编辑器
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

Vi / Vim:如何保存并退出编辑器

当使用vi /vim 命令编辑一个文件后,如何才能保存并退出当前的vi /vim 编辑器呢?
vi/vim
为了保存并退出vi /vim,可以参照下面的步骤:
1# 首先从输入模式返回到命令模式,输入:ESC 键
2# 输入”:”,进入末行模式
3# 再输入下面的命令

x
 

x!
 

wq!
 

如下图:
Vi Vim 如何保存并退出编辑器
之后输入回车,就能保存并退出 vi /vim 了。
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

Vim如何同时编辑多个文件

在linux系统下,如何使用vim 命令同时打开并编辑多个文件呢?文本将会讲述如何使用vim 命令在编辑器里同时显示多个文件的窗口,并对其进行编辑。
vi/vim
 
在命令行窗口下输入下面的vim 命令同时打开两个编辑窗口(水平显示):

vim -o /etc/passwd /etc/hosts
 

 
输出入下图:
Vim如何同时编辑多个文件1
 
如果想垂直显示编辑窗口,可以使用大O选项,输入下面的命令:

vim -O /etc/passwd /etc/hosts
 

 
输出如下图:
Vim如何同时编辑多个文件1
 
在不同的窗口之间切换
当你在不同的窗口打开多个文件的时候,你需要在不同的窗口之间切换,参照下面的vim 快捷键命令:
1.输入 CTRL + W + <左箭头> 将光标定位到左边的窗口
2.输入 CTRL + W + <右箭头> 将光标定位到右边的窗口
3.输入 CTRL + W + <向上箭头> 将光标定位到上面的窗口
4.输入 CTRL + W + <向下箭头> 将光标定位到下面的窗口
5. 输入两次CTRL+W将会快速的在不同的窗口之间切换
 
当你切换到你想编辑的窗口后,就可以和正常使用 vim 编辑器一样对文件进行编辑了。
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

vi / vim 如何同时打开多个文件

对于刚使用 linux vi /vim 文本编辑器的人来说,可能想知道,如何才能使用 vi /vim 同时打开多个文件,并在不同的打开的文件之间进行切换。本文将会讲述通过 vi /vim 命令同时打开两个文件,并在这两个文件之间进行切换。
vi/vim
 
输入下面的 vi /vim 命令,打开两个文件:

vi foo.txt test.txt
 

 
如果想同时打开当前目录下所有的”.txt”的文件,可以输入:

vi *.txt
 

 
当打开多个文件后,我们来看些如何在不同的文件之间进行切换。
1# 列出当前 vi /vim 命令打开的所有文件
输入命令:

:ls
 

 
命令输出:

:ls
  1 %a   "foo.txt"                         line 1
  2      "test.txt"                     line 0
 

 
2# 从当前打开文件切换到另一个文件
输入vi /vim 命令:

:n
 

:bn
 

 
3# 切换到当前打开文件的前一个打开的文件
输入 vi /vim 命令:

:p
 

:bp
 

 
vi /vim 可视化编辑
将当前的编辑屏幕垂直切分
输入:

CTRL+W v
 

 
将当前的编辑屏幕水平切分

CTRL+W s
 

 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

VI / VIM: 在文本里插入当前的日期和时间

当使用vi /vim 文本编辑器编辑文件的时候,如何在当前行插入并显示当前系统的日期和时间呢。
你可以使用下面的两个 vi / vim 命令来插入当前的日期和时间到文件中光标所在的行。
输入下面的命令:

:r !date
 

或从输入模式返回到命令模式后,直接输入下面的命令:

!!date
 

如下图所示:
vi 命令
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

vim: 移动光标的快捷键

当使用 vi /vim 文本编辑器编辑文件的时候,我们会用到很多的 vi / vim 快捷键命令,那么在vi /vim 里都有那些快捷键呢。
 
首先使用vi /vim 打开一个文件,尝试下面的快捷键:
#1移动光标到文本第一行
输入:

gg
 

或者

1 shift g
 

:0
 

回车后你会看到光标已经定位到第一行了
 
#2将光标移动到最后一行
输入下面的快捷命令:

shift g
 

:$
 

 
#3 将光标移动到第8行
输入:

8 shift g
 

或者

:8
 

 
#4 将光标向下移动一屏
输入:

ctrl+f
 

 
#5 将光标想上移动一屏
输入:

ctrl + b
 

 
#6 将当前行光标移动第一个字符位置
输入:

 

 
#7 将当前行光标移动到最后一个字符位置
输入:

$
 

 
#8 将光标想上下左右移动一个字符位置

l,h,k,j
 

或者使用上下左右键
 
#9 查看你现在所在的位置已经百分比
输入:

ctrl +g
 

vim
 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

vi/vim 命令:如何向前或向后跳转到最后一次光标的位置

当你使用vim 文本编辑器去写bash shell脚本或者编辑一个配置文件的时候,我们经常会会需要去搜索之前写的bash shell 函数或者某一个字符串,那么光标就会移动到函数名或字符串所在的行。当查看完这个函数或字符串后,如何才能再回档原来写代码的位置或者搜索字符串之前的光标所在的位置呢?我们如何使用linux vi /vim 命令 向前或向后跳转到最后一次光标所在的位置呢?
vi/vim
本文将会讲述如何在vim /vi 文本编辑器中使用 vi /vim 命令自动跳转到最后一次光标所在的位置。
我们可以使用下面的两个 vi /vim 命令来做光标的跳转:
1)CTRL – O : 将光标向文本上方跳转到最后一次光标的位置
2)CTRL-i : 将光标想文本下方跳转到最后一次光标的位置
这里需要注意的是,每次的跳转都会被记录的一个跳转列表里,这样的话,你就可以使用CTRL-o 和CTRL -i 这两个命令,来回的做跳转,可以让你很方便的跳转到之前的光标所在的位置。对用vim 编辑器写代码的人来说,用处很大。
举个例子:
用vim 命令打开一个bash shell 脚本文件text.sh, 输入命令:

vim test.sh
 

将光标定位在第20 行,输入命令:

:20
 

查找脚本里的一个函数start,输入命令:

/sart
 

这个时候光标就会定位在start函数所在位置
现在我们想在回到上一次光标所在的位置,那么就可以输入vim 命令: ctrl -o 或 ctrl -i, 让光标回到第20行。
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. linux vi/vim man 帮助文档

vi/vim 命令:如何消除并撤销所有对文件的更改

对于一个刚开始使用linux vi /vim 文本编辑器的新手来说,你可能已经知道如何不保存退出vi编辑器。但是如何不退出vi /vim 编辑器并撤销所有的对文本的更改,是文本能够恢复到原来的状态呢? 如何对当前使用 vi /vim 编辑器打开的文件撤销所有的更改呢?
vi/vim
为了对通过vim /vi编辑器打开的文件撤销所有的更改,你需要按照下面的步骤:
1)退出当前的输入模式,回到命令模式,输入“ESC”键
2)输入”:”
3) 紧接着输入下面的命令:

e!
 

或者

edit!
 

上面的命令会将你的文本回退到最后一次保存的版本。
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. vim 命令大全 / vi 命令大全

vim 命令大全 / vi 命令大全

vim 命令作为linux系统下使用最多的文本编辑器,功能十分强大,里面包含了操作文本的各种命令。本文收集了在linux系统下的 最常用的vim 命令大全 /vi 命令大全。
vi/vim
vim 命令大全
光标控制命令:
命令 光标移动
h 向左移一个字符
j 向下移一行
k 向上移一行
l 向右移一个字符
G 移到文件的最后一行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
0(数字), | 移到当前行的第一列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+, Enter 移到下一行的第一个字符
– 移到前一行的第一个非空字符
 
在 vi 中添加文本:
命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
s 删除光标所在处字符,并进入插入模式
S 删除光标所在的行,并进入插入模式
:r file 读入文件 file 内容,并插在当前行后
:nr file 读入文件 file 内容,并插在第 n 行后
Esc 回到命令模式
^v char 插入时忽略 char 的指定意义,这是为了插入特殊字符
 
在 vi 中删除文本:
命令 删除操作
x 删除光标处的字符
dw 删至下一个字的开头
dG 删除行,直到文件结束
dd 删除整行
db 删除光标前面的字
:n,md 从第 m 行开始往前删除 n 行
d, d$ 从光标处删除到行尾
^h, backspace 插入时,删除前面的字符
^w 插入时,删除前面的字
 
修改 vi 文本:
每个命令前面的数字表示该命令重复的次数
命令 替换操作
rchar 用 char 替换当前字符
R text escape 用 text 替换当前字符直到按下 Esc 键
stext escape 用 text 代替当前字符
S 或 cctext escape 用 text 代替整行
cwtext escape 将当前字改为 text
Ctext escape 将当前行余下的改为 text
cG escape 修改至文件的末尾
ccursor_cmd text escape 从当前位置处到光标命令位置处都改为 text
 
在 vi 中查找与替换:
命令 查找与替换操作
/text 在文件中向前查找 text
?text 在文件中向后查找 text
n 在同一方向重复查找
N 在相反方向重复查找
ftext 在当前行向前查找 text
Ftext 在当前行向后查找 text
ttext 在当前行向前查找 text,并将光标定位在 text 的第一个字符
Ttext 在当前行向后查找 text,并将光标定位在 text 的第一个字符
:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感
:ranges/pat1/pat2/g 用 newtext 替换 oldtext
:m,ns/oldtext/newtext 在 m 行通过 n,用 newtext 替换 oldtext
& 重复最后的 :s 命令
:g/text1/s/text2/text3 查找包含 text1 的行,用 text3 替换 text2
:g/text/command 在所有包含 text 的行运行 command 所表示的命令
:v/text/command 在所有不包含 text 的行运行 command 所表示的命令
 
在 vi 中复制文本:
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将 n 行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
“(a-z)nyy 复制 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
“(a-z)ndd 删除 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
“(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
“(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
 
在 vi 中撤消与重复:
命令 撤消操作
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
, 以相反的方向重复前面的 f、F、t 或 T 查找命令
; 重复前面的 f、F、t 或 T 查找命令
“np 取回最后第 n 次的删除(缓冲区中存有一定次数的删除内容,一般为 9)
n 重复前面的 / 或 ? 查找命令
N 以相反方向重复前面的 / 或 ? 命令
 
保存文本和退出 vi:
命令 保存和/或退出操作
:w 保存文件但不退出 vi
:w file 将修改保存在 file 中但不退出 vi
:wq 或 ZZ 或 😡 保存文件并退出 vi
:q! 不保存文件,退出 vi
:e! 放弃所有修改,从上次保存文件开始再编辑
 
vi 中的选项:
选项 作用
:set all 打印所有选项
:set nooption 关闭 option 选项
:set nu 每行前打印行号
:set showmode 显示是输入模式还是替换模式
:set autoindent 继承前一行的缩进方式,特别适用于多行注释
:set smartindent 为C程序提供自动缩进
:set list 显示制表符(^I)和行尾符号
:set ts=8 为文本输入设置 tab stops
:set window=n 设置文本窗口显示 n 行
:set number 显示行数
:set nonumber 取消显示行数
 
vi 的状态:
选项 作用
:.= 打印当前行的行号
:= 打印文件中的行数
ctrl+g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:l 使用字母 “l” 来显示许多的特殊字符,如制表符和换行符
 
在文本中定位段落和放置标记:
选项 作用
{ 在第一列插入 { 来定义一个段落
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用 mz 表示标记 z
‘(a-z) 将光标移动到指定的标记,如用 ‘z 表示移动到 z
 
在 vi 中连接行:
选项 作用
J 将下一行连接到当前行的末尾
nJ 连接后面 n 行
 
光标放置与屏幕调整:
选项 作用
H 将光标移动到屏幕的顶行
nH 将光标移动到屏幕顶行下的第 n 行
M 将光标移动到屏幕的中间
L 将光标移动到屏幕的底行
nL 将光标移动到屏幕底行上的第 n 行
^e(ctrl+e) 将屏幕上滚一行
ctrl+y 将屏幕下滚一行
ctrl+u 将屏幕上滚半页
ctrl+d 将屏幕下滚半页
ctrl+b 将屏幕上滚一页
ctrl+f 将屏幕下滚一页
ctrl+l 重绘屏幕
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第 n 行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第 n 行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第 n 行置为屏幕的底行
 
vi 中的 shell 转义命令:
选项 作用
:!command 执行 shell 的 command 命令,如 :!ls
:!! 执行前一个 shell 命令
:r!command 读取 command 命令的输入并插入,如 :r!ls 会先执行 ls,然后读入内容
:w!command 将当前已编辑文件作为 command 命令的标准输入并执行 command 命令,如 :w!grep all
:cd directory 将当前工作目录更改为 directory 所表示的目录
:sh 将启动一个子 shell,使用 ^d(ctrl+d) 返回 vi
:so file 在 shell 程序 file 中读入和执行命令
 
vi 中的宏与缩写:
(避免使用控制键和符号,不要使用字符 K、V、g、q、v、*、= 和功能键)
选项 作用
:map key command_seq 定义一个键来运行 command_seq,如 :map e ea,无论什么时候都可以 e 移到一个字的末尾来追加文本
:map 在状态行显示所有已定义的宏
:umap key 删除该键的宏
:ab string1 string2 定义一个缩写,使得当插入 string1 时,用 string2 替换 string1。当要插入文本时,键入 string1 然后按 Esc 键,系统就插入了 string2
:ab 显示所有缩写
:una string 取消 string 的缩写
 
在 vi 中缩进文本:
选项 作用
ctrl+i或 tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:set ai 打开自动缩进
:set sw=n 将移动宽度设置为 n 个字符
n> 使 n 行都向右移动一个宽度,例如 3>> 就将接下来的三行每行都向右移动一个移动宽度
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. linux vi/vim man 帮助文档

29个最基本的 vim /vi 命令

本文收集了29个在日常工作中最常使用的29个基本 vim 命令 / vi 命令,对于linux初学者来说,这些命令是必须要掌握的。
vi/vim
1.vim
#在命令行中输入vim,进入vim编辑器
2.i
#按一下i键,下端显示 –INSERT–
#插入命令,在vim中可能任意字符都有作用
3.Esc
#退出i(插入)命令进行其它命令使用
4.:r filename
#读入一个文件内容,并写入到当前编辑器中
5.:w newfilename
#将该编辑器中的内容写入到一个新文件中
6.:w
#在编辑的过程中保存文件,相当于word中的ctrl+s
7.:! command
暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
:!ls
#在编辑过程中执行shell命令ls
8.:sh
#进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑
在shell命令下,执行ctral+l完成清屏
9.:wq
#保存文件并退出
10.ZZ
#保存文件并退出,同上一个命令,注意大写
11.:q!
#强制退出,不保存
12.:set number或者:set nu
#使编辑中的文件显示行号
13.:set nonumber或者:set nonu
#与上一条命令相反,不显示行号
14.:help i
#查看插入命令帮助
15.u
#撤消上一步操作
16./Fedora
#查找Fedora字符
17.:s /Fedora/Redhat
#将Fedora字符替换为Redhat(只替换在光标所在的行)
18.dw
#删除单词
dd
#删除行
19.o
#打开空白一行
20.vim + filename
#进行文件最后一行进行编辑
21.vim +n filename
#进入文件第n行进行编辑
22.:1,.s/redhat/fedora
#.号表示当前行,即光标所在行
#将第1行到当前行(.)第一次出现的redhat字符代替为fedora
23.:1,.s/redhat/fedora/g
#将第1行到当前行(.)所有出现的redhat字符代替为fedora,g
全局标志
24.:1,$s/redhat/fedora/g
#$表示最后一行
#将第1行到最后一行所有出现的redhat字符代替为fedora
25.:%s/redhat/fedora/g
#同上一个命令
26.:%s/\/fedora/g
#将第1行到最后一行所有出现的redhat字代替为fedora
#字,而不是字符
27.:f
#显示文件内容,状态等等
#同ctrl+g命令
28.:e!
#当前文件,返回到上次保存
:e file
#切换编辑文件
29.:n
#当编辑时有多个文件(比如vim file1 file2)时切换到下一个文件,与:e file
结合使用
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. linux vi/vim man 帮助文档

Linux下如何使用vi /vim 文本编辑器做批量字符串替换

在linux下我们最常使用的文本编辑器就是是vi 编辑器了,那么如何使用linux vi 文本编辑器来做批量的字符串替换呢? 本文将会讲述如何使用linux vi /vim 文本编辑器来做字符串的批量替换。
vi/vim 
#1 使用linux vi /vim 编辑器做文件内全部替换
输入下面的命令:

%s#old#new#g
 

上面的命令会将文本内的所有的old字符串替换成“new”.这里使用了 ”#“ 分隔符,当然你也可以使用其它的,比如”/”.
 
#2 使用linux vi /vim 编辑器做文件内局部替换
输入下面的命令:

:10,20s/old/new/g
 

上面的vi /vim 命令会将文件内的第10行到20行直接的所有的old字符串替换成new。
对于上的命令如果在命令后面再加上”c”选项,这样在vi 替换字符串之前会出现提示符确认,是否要执行字符串替换。
输入下面的命令:

:10,20s/old/new/gc
 

 
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. linux vi/vim man 帮助文档

linux下如何退出vi/vim 文本编辑器

当你用vi/vim 文本编辑器打开一个文件的时候,并且对文件做了更改,之后如何来退出vi编辑器呢? 退出vi/vim 编辑器又分为以下几种:不保存退出vi/vim 编辑器,保存退出vi/vim 编辑器,只保存不退出vi/vim编辑器,没有更改直接退出vi/vim编辑器。下面我们分别来说以下这四种退出vi/vim的方法:
vi/vim 
#1不保存退出vi/vim 编辑器
这个我们在之前的文章中讲过如何不保存退出vi/vim编辑器,简单的说就是从输入模式返回到命令模式,然后输入“”,在输入”q!“,回车后,就可以不保存退出vi/vim编辑器
 
#2保存退出vi/vim 编辑器
在linux vi/vim 文本编辑器里,保存并退出vi/vim编辑器的方法有多种:
1)在末行模式下,输入”:“后,再输入”wq“,回车就可以保存退出vi/vim文本编辑器。
2)在命令模式下,输入两次大写字母”z“,如果当前编辑的文件被更改过,那么会保存文件并退出vi/vim 编辑器,如果没有编辑修改过,那么会直接退出vi/vim编辑器。
3)在末行模式下,输入”“后,再输入”x“,回车后即可保存并退出vi/vim编辑器。
 
#3只保存不退出vi/vim编辑器
如果想对当前编辑的文件,只做保存操作,但并不退出vi/vim编辑器(在编辑文档的时候要记得保存,否则可能会因为系统宕机引起文件更改丢失或不保存),进入末行模式,输入”:”后,再输入“w”,回车,就可以随时保存当前文件更改。
 
#4 没有更改直接退出vi/vim编辑器
如果使用vi/vim 文本编辑器打开了文件,但并没有对文件做任何的更改,可以直接退出,进入末行模式,输入”:”,再输入”q”,回车后就可以退出vi/vim编辑器,返回shell。
 
以上是总结的关于linux下退出 vi/vim 编辑器的几种情况和退出方法。
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. linux vi/vim man 帮助文档

Linux 下 vi/vim 文本编辑器超详细使用指南

Linux下的编辑器最常用的就是vim或者vi文本编辑。vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能。 大多数的linux/unix 发行版本中都使用 vim 代替了原来的 vi 文本编辑器。 如果是centos或者redhat系统,当系统安装完毕后,vi/vim 文本编辑器默认情况下就已经被安装了。如果是debian/ubuntu系统下,默认情况下,vim编辑器是不会被安装的。你需要在ubuntu系统下手动安装vim编辑
vi/vim文本编辑器是我们在linux系统下工作可以说是必须会使用的一个工具,因为linux系统的设计理念是一切皆文件,也就是说,你在linux里的任何操作都是对文件的操作,所以会经常去操作文件,更改文件,保存文件,退出并保存文件。那么在linux下,如何使用vim/vi 文本编辑器来新建文件,编辑文件,保存文件呢? 如何使用vim/vi文本编辑器的查找命令来查找特定的文本呢? 如何使用vim/vi 文本编辑器中的查找并替换命令来对文本做批量更改呢?
本文将会给大家详细讲述如何在linux操作系统下使用vi/vim 文本编辑器。
 
vi/vim模式介绍
在linux vi/vim 文本编辑器里有三种模式:命令模式输入模式末行模式。这三者模式的区别是什么呢?
命令模式是vi/vim 编辑器进入后的默认模式,从命令模式可以切换到输入模式和末行模式,如果当你进入另外的两种模式后,可以使用“ESC”键退回到命令模式。在命令模式下,可以输入一些文本编辑器特有的命令,比如说你想编辑文件,那么就需要输入“i”,让当前模式变为插入模式或者输入模式,这样你就可以编辑这个文本了。
输入模式顾名思义就是要对本文做输入的操作,也就是说可以对文件做出更改操作。否则,你在命令模式下,vi/vim 文本编辑器是只读模式,你无法对文本做出更改。
末行模式是是命令模式下输入”:”,当你在输入模式下,对文件做了更改,那么需要先退回到命令命令,再进入末行模式,并输入”wq”后,即可保存并退出 vi/vim 文本编辑器。如果想不保存退出 vi/vim 文本编辑器,那么直接输入”q!”,即可。
 
在linux系统下运行 vi/vim 文本编辑器
在linux命令行下,输入 vi 或者vim 命令:

vi
 

或者

vim
 

linux vi vim 文本编辑器
 
linux 下 vim/vi 文本编辑器常用命令
#1 进入vi/vim文本编辑器的命令
vi filename:打开或新建文件,并将光标置于第一行行首的位置
vi +n filename: 打开文件,并将光标置于第n行的位置
vi + filename: 打开文件,并将光标置于最后一行的位置
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的行首
vi -r filename: 在上次征用vim 文本编辑器的时候发生系统奔溃后,恢复filename 文件
vi filename1…filenamen: linux vi/vim 文本编辑器可以通过打开多个文件,依次进行编辑
#2 linux vi/vim 文本编辑器下移动光标的命令
H: 光标移到屏幕顶行
M: 光标移到屏幕中间行
L: 光标移到屏幕最后行
0: 光标移到当前行首
$: 光标移到当前行尾
#3 linux vi/vim 文本编辑器下屏幕翻滚类命令
Ctrl+F:向前翻整页
Ctrl+U:向前翻半页
Ctrl+B:向后翻整页
Ctrl+D:向后翻半页
#4 Linux vi/vim 文本编辑器插入文本类命令
i: 在光标前
I:在当前行行首
a: 在光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之前新开一行
#5 Linux vi/vim 文本编辑器删除命令
do:删至行首
d$: 删至行尾
dd: 删除光标所在行
ndd: 删除当前航及其后n-1行
D: 删除当前光标到行尾的内容
Ctrl+u: 删除输入方式下输入的所有文本
#6 Linux vi/vim 文本编辑器搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern模式
?pattern: 从光标开始处向文件首搜索pattern 模式
:s/p1/p2/g : 将当前行中所有p1替换成p2
:n1,n2s/p1/p2/g:将第n1行到n2行中所有的p1替换成p2
:g/p1/s//p2/g:将文件中所有的p1替换成p2
#7 Linux vi/vim 文本编辑器拷贝和粘贴命令
在vi/vim文本编辑器中”y”表示拷贝,”d”表示删除, “p”表示粘贴,通常与光标移动命令结合使用
y$: 表示拷贝从当前光标处到行尾的内容
d$: 表示删除从当前光标到行尾的内容
yy: 表示拷贝光标所在行
#8 Linux vi/vim 文本编辑器撤销操作命令
u:取消最近一次的操作
U:取消所有的操作
#9 vi/vim 编辑器末行模式下的命令
n1,n2 d: 将n1行到n2行之间的内容删除
:w 保存当前文件
:e filename 打开文件filename进行编辑
:x 保存当前文件并推出
:q 退出 vi/vim 编辑器
:q! 不保存并退出vi/vim编辑器
以上是linux 下vi/vim 文本编辑器里最常用的命令集合。更多关于vi/vim编辑器的使用,可以参考官方帮助文档。
更多参考:
1.linux vi/vim man 帮助文档
2. Linux/Ubuntu:在命令行下安装vim文本编辑器
3. vi/vim里如何退出不保存?

SCP 命令参数使用详解(最详细使用指南)

在linux 下scp 命令主要用来在不同主机之间做数据的安全拷贝的。scp 命令可以将文件从本地的计算机中拷贝到远程的主机中,或者从远程计算机中拷贝文件到本地主机,scp命令使用的安全加密的协议,所以在远程拷贝数据的时候会比较安全,不会被黑客截取。
这个命令在日常的工作中经常会被用到,尤其是在多主机的集群环境中或者在cloud 环境里,比如当你想配置hadoop大数据环境或者配置openstack 多节点环境的时候,都会用用到scp命令,用来配置节点间无密码登陆。
本文将会讲述在linux系统中如何来使用linux 的scp命令,并演示如何在主机之间安全的拷贝数据文件。
linux scp 命令的使用格式如下:

scp [选项] <源文件路径>  <目标文件路径>
 

或者:

scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2
 

 
 
scp 使用实例
在使用scp命令的时候需要注意,本地主机和远程主机必须能够相互访问,你需要知道远程主机的访问用户名和密码。
 
1#从远程服务器中下载数据文件到本地主机
如果你想从远程主机host1中的/tmp/目录下拷贝test1 文件到本地主机的/tmp目录,那么可以在本地主机的命令行下面
输入命令:

scp [email protected]:/tmp/test1 /tmp
 

 
#2 从远程服务器中拷贝目录文件到本地主机下面
当你从远程主机中拷贝一个目录的时候,你需要给scp命令传入一个“-r“ 选项,这样scp命令就会将远程主机下面的整个目录的文件都拷贝的本地主机下。
输入下面的命令:

scp -r [email protected]:/tmp  /tmp
 

这个命令就会把host1主机下的tmp目录拷贝到本地主机的/tmp目录下
 
#3 将本地主机的文件拷贝到远程服务器上
如果要将本地主机的 /tmp目录下的test1文件拷贝到远程主机的/tmp目录下,可以在本地主机输入下面的命令:

scp /tmp/test1 [email protected]:/tmp
 

这样test1文件就会被拷贝到远程服务器上了。
 
#4将本地主机下的目录上传到远程服务器
这个和刚才第二步的命令类似,就是需要传”-r” 参数给linux scp 命令,输入下面的 scp 命令:

scp -r /tmp [email protected]:/tmp
 

上面的命令会把本地主机的/tmp目录上传到远程主机host1的/tmp目录下。
上面的四个例子是 scp 命令最常用的四种用法,当然还有其他的选项。 大家可以参考 linux scp 命令的帮助页面。
输入:

man scp
 

更多参考:scp 命令帮助文档

CentOS/Linux:如何编译最新版的linux 内核

当linux内核社区有新的版本发布的时候,如果你也想升级你的centos或者centos系统的内核版本,那么如何通过源码升级linux的内核吗。本文将会讲述如何从linux 内核官方下载最新的内核版本,并升级安装。
1、查看系统内核版本

#uname -r
2.6.18-92.el5
 

2、下载最新版本linux内核
输入下面的命令:

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.tar.gz  .
 

3、清除环境变量,即清除配置文件

$ make mrproper
 

4、 在菜单模式下选择需要编译的内核模块

$make menuconfig
 

#需要 gcc 和 ncurses-devel 的支持,如果没有安装,yum 安装
5、编译内核

#make && make modules_install && make install
 

或者逐步执行:
#make clean确保所有东西均保持最新状态.
#make bzImage 生成内核文件
#make modules 编译模块
#make modules_install 安装模块
#make install 安装
#mkinitrd /boot/initrd_2.6.18.img 根据内核版本和指定参数生成映像文件
#cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.18
#cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
6、重新配置grub引导程序

#vi /boot/grub/grub.conf  #以新内核启动系统,重启系统;
 

CentOS/linux:如何使用split命令分割文件

当面临将一个大文件进行切分时,linux的split命令是很好的选择。它包含多种参数,支持按行、大小进行切分。本文将会讲述如何使用linux split 命令来做文件的分割,尤其是大文件的分割成多个小文件。
split命令的语法如下:
split [–help][–version][-a ][-b][-C ][-l ][要切割的文件][输出文件名前缀] 对应的参数描述如下:
-a, –suffix-length=N
使用的后缀长度 (默认为 2)
-b, –bytes=SIZE
每个输出文件的字节大小
-C, –line-bytes=SIZE
每个输出文件每行的最大字节大小
-d, –numeric-suffixes
使用数字后缀代替字母后缀
-l, –lines=NUMBER
设定每个输出文件的行数
–help 显示帮助信息
–version
显示版本信息
下面举几个例子:
1)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。命令:

$ split -b 20m splitTest.txt
$ ls
splitTest.txt  xaa  xab  xac
 

2)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。指定分割后的文件前缀位split,命令:

$ split -b 20m splitTest.txt  split
$ ls
splitaa  splitab  splitac  splitTest.txt
 

3)将文件splitTest.txt分割成多个文件,每个文件50万行。命令:

$ wc -l splitTest.txt
1502216 splitTest.txt
$ split -l 500000 splitTest.txt  split
$ ls
splitaa  splitab  splitac  splitad  splitTest.txt
 

4)将文件splitTest.txt分割成多个文件,每个文件50万行。指定分割后的文件后缀为数字,数字位数为3位,命令:

$ wc -l splitTest.txt
1502216 splitTest.txt
$ split -l 500000 -d -a 3 splitTest.txt  split
$ ls
split000  split001  split002  split003  splitTest.txt
 

可以使用cat命令将切分后的文件合并成新的文件:

$ cat split0* > original.txt
 

CentOS7/RHEL7:如何创建并挂载SCSI 共享磁盘

在centos7 系统下我们如何来创建并挂载SCSI 共享磁盘呢?本文将会讲述通过两个虚拟机作为scsi的服务器端和客户端来配置创建并挂载scsi共享磁盘。
实验设备:
用虚拟机虚拟两个 centos6.3 -64bit 系统,并配置好yum
ip设置:
scsi服务端:10.1.1.222
scsi客户端(挂载端):10.1.1.1
1、在服务端安装软件并配置好共享的磁盘,首先在虚拟机中新加入一块硬盘,大小随意。(这里添加100G)

[[email protected] ~]# fdisk -l
 Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005bb6c
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         281     2048000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             281        2611    18717696   83  Linux
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077087
   Device Boot      Start         End      Blocks   Id  System
 

2、安装scsi服务端软件

yum install scsi-target-utils -y
 

共享磁盘(在配置文件中加入以下代码即可)

vim /etc/tgt/targets.conf
    <target iqn.2008-09.com.example:server.target1>
        backing-store /dev/sdb
    </target>
 

启动服务

service tgtd restart
 

关闭防火墙和selinux
3、在客户端安装客户端软件,并设置挂载
安装客户端软件

yum install iscsi-initiator-utils -y
 

查看是否有共享磁盘

iscsiadm --mode discoverydb --type sendtargets --portal 10.1.1.222 --discover
 

出现以下则表示有共享磁盘 10.1.1.222:3260,1 iqn.2008-09.com.example:server.target1
挂载磁盘

iscsiadm --mode node --targetname iqn.2008-09.com.example:server.target1 --portal 10.1.1.222:3260 --login
 

注意:中间2008-09这段是填写上面查询出来的那个磁盘名
成功挂载后有以下提示

[[email protected] ~]#  iscsiadm --mode node --targetname iqn.2008-09.com.example:server.target1 --portal 10.1.1.222:3260 --login
Logging in to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 10.1.1.222,3260] (multiple)
Login to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 10.1.1.222,3260] successful.
 

查看是否挂载成功
[[email protected] ~]# fdisk -l

 Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00036380
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         281     2048000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             281        2611    18717696   83  Linux
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077087
   Device Boot      Start         End      Blocks   Id  System
 

成功挂载100G硬盘。

CentOS 6.5:如何更换系统的默认yum软件源为163源

当CentOS6.5系统安装完成后,系统默认使用的是centos 官方的yum 软件仓库源,这些源站点都在国外,所以安装更新速度会很慢,那么我们可以更改yum更新源。原理很简单,就是把yum配置文件中的更新源改一下,这里直接用163的镜像站点中的配置文件。
更改方法如下:
1、进入yum配置文件目录

cd /etc/yum.repos.d/
 

2、备份配置文件

mv CentOS-Base.repo CentOS-Base.repo.bak
 

3、下载163的配置

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
 

4、改名

mv CentOS6-Base-163.repo CentOS-Base.repo
 

5、更新数据库

yum update
 

CentOS 6.3:如何配置并优化系统

当你当装完centos系统之后,需要做一些个性化的配置以及系统优化设置,本文将会讲述如何配置并优化刚装完的centos 6.3 操作系统。
全新以最小化包安装了的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程配置网易163的yum源
1. 下载repo文件

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo .
 

2. 备份并替换系统的repo文件

[[email protected] ~]#cd /etc/yum.repos.d/
[[email protected] ~]#mv CentOS-Base.repo CentOS-Base.repo.bak
[[email protected] ~]#mv /root/CentOS6-Base-163.repo CentOS-Base.repo
 

注意:如果直接下载在/etc/yum.repos.d/目录下,不要让.repo文件多于1个,比如:CentOS6-Base-163.repo、CentOS-Base.repo会出错
3. 执行yum源更新

[[email protected] ~]#yum clean all
[[email protected] ~]#yum makecache
 


优化系统

一、更新系统到最新

[[email protected]]# yum update
 

二、安装必要的软件包

[[email protected]~]#yuminstall lrzsz sysstat –y
 

另外,如果在安装时落下了安装需要的软件包组,可以在这里执行如下命令来安装。

[[email protected]~]#yumgroupinstall “Development Tools”
[[email protected]~]#yumgroupinstall “X software development”
 

三、清理开机自启动的服务
关闭所有开机自启动服务:

[[email protected]~]# for test in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $testoff;done
 

打开crond、network、rsyslog、sshd开机自启动服务

[[email protected] ~]# for test in crond network rsyslog sshd;do chkconfig --level 3 $test on;done
 

查看处理结果:

[[email protected] ~]# chkconfig --list|grep 3:on
crond           0:off   1:off  2:on    3:on    4:on   5:on    6:off
network         0:off  1:off   2:on    3:on   4:on    5:on    6:off
rsyslog         0:off  1:off   2:on    3:on   4:on    5:on    6:off
sshd            0:off   1:off  2:on    3:on    4:on   5:on    6:off
 


四、更改ssh登陆配置

[[email protected] ~]# cp/etc/ssh/sshd_config /etc/ssh/sshd_config.back #备份配置文件
 
[[email protected] ~]# vim/etc/ssh/sshd_config
##########by test###########################
Port 11111
PermitRootLogin no                 #root用户禁止远程登陆
PermitEmptyPasswords no            #密码为空禁止登陆
UseDNS no                        #不使用DNS
##############################################
 
[[email protected] ~]# /etc/init.d/sshd restart     #重启后生效
 

五、将需要有root权限的用户名加入sudo挂了,这样用户通过自己的普通账户登陆,就可以以root的权限来管理整个系统。

[[email protected] ~]#visudo   #相当于直接编辑/etc/sudoer,使用命令方式更安全,推荐
 

在文件的中间如下内容的下面添加需要root权限的用户名,格式如下:

## Allow root to run any commands anywhere
root   ALL=(ALL)       ALL
test   ALL=(ALL)       ALL #表示test可拥有完全的系统管理员权限
 

普通用户环境变量问题和解决办法
对比root和test用户下默认的PATH环境变量

[[email protected] ~]# echo$PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]$ echo$PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin
 

经过对比我们发现普通用户上了几个关键环境变量/usr/local/sbin:/sbin:/usr/sbin:是导致执行命令找不到的原因(除非带全路径执行)
解决办法:
编辑~/.bash_profile环境变量文件,把:/usr/local/sbin:/sbin:/usr/sbin:添加到PATH环境变量里,注意:每个路径之间要用冒号分割

[[email protected] ~]$ vim./.bash_profile
[[email protected] ~]$source ./.bash_profile   #使添加的内容生效
[[email protected] ~]$ echo$PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin:/home/test/bin:/usr/local/sbin:/sbin:/usr/sbin
 

六、修改中文显示
通过快捷的命令方式在/etc/sysconfig/i18n中添加如下命令:

[[email protected] ~]# echo'LANG="zh_CN.GB18030"' >/etc/sysconfig/i18n
[[email protected] ~]#source /etc/sysconfig/i18n  #使修改生效
 

七、加大服务器文件描述符

[[email protected] ~]# vim/etc/security/limits.conf  (默认大小为1024)
*      -   nofile    65535
 

注意:配置完成后,重新登陆既可查看

[[email protected] ~]#ulimit -n
65535
 

八、调整内核参数文件/etc/sysctl.conf

net.ipv4.tcp_fin_timeout= 2
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_syscookies= 1
net.ipv4.tcp_keepalive_time= 600
net.ipv4.ip_local_port_range= 4000
net.ipv4.tcp_max_syn_backlog= 16384
net,ipv4.tcp_max_tw_buckets= 360000
net.ipv4.route.gc_timeout= 100
net.ipv4.tcp_syn_retries= 1
net.ipv4.tcp_synack_retries=1
net.ipv4.ip_conntrack_max= 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120