关于树莓派的命令(学习)

时间:2024-02-29 11:35:40

安装VNC需要使用命令行。如果需要远程操作安装VNC,就必须通过SSH登录到命令行界面。
安装
树莓派命令行:sudo apt-get install tightvncserver

 

安装好之后请一定先使用此命令设置一个VNC密码:vncpasswd

 

(先输入操作密码两次,然后会询问是否设置一个查看(view-only)密码,按自己喜欢,一般没必要。)

---------------------------------------------------------------------------------------------------------------------

树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。

debian里root账户默认没有密码,但账户锁定。

当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian

默认用户是pi 密码为raspberry

重新开启root账号,可由pi用户登录后,在命令行下执行

sudo passwd root

执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后在执行

sudo passwd --unlock root

这样就可以解锁root账户了。

--------------------------------------------------------------------------------------------

 

su root 换到root管理员

sudo raspi-config  这是进入配置界面

startx 进入图形界面.

sudo apt-get install vim  更新vim  http://blog.csdn.net/xdw1985829/article/details/38818193

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf  编辑wifi文件

 

curl icanhazip.com  查询外网ip

 

jobs

查看当前有多少在后台运行的命令

jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

法子1:通过jobs命令查看job号(假设为num),然后执行kill %num 
法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid 
前台进程的终止:Ctrl+c

 --------------------------------------------------------------------------------------------------------------

sync

https://help.getsync.com/hc/en-us/articles/206178924-Installing-Sync-package-on-Linux

启动服务

sudo service resilio-sync start 

------------------------------------------------------------------------------------------------------------

更改树莓派前面那个FAT32分区里的config.txt,修改或加入以下项目:

hdmi_group=****
hdmi_mode=****
hdmi_ignore_edid=0xa5000080

hdmi_group和hdmi_mode的值对应想要调整的分辨率。见文后。

另外一项“hdmi_ignore_edid”,是命令树莓派不检测HDMI设备的任何信息,只按照我们指定的分辨率输出。
如果不加,树莓派可能仍会“自作聪明”的检测HDMI设备的分辨率,结果造成我们设置的分辨率无效。

#旋转屏幕#

魔镜在设计上是纵向肖像模式,所以我需要将屏幕顺时针旋转90度,最终显示分辨率为1080 x 1920。我曾担心这会是最大的问题,最终却很容易解决了。

树莓派的BIOS设置储存在系统启动分区中。在这分区中,有一个config.txt文件,载有所有设置。要旋转显示器,在这文件内加上以下一行代码:
display_rotate=1

要让显示器连接更加可靠,我就不解释为何加上下面允许HDMI线热插拔的代码了:
hdmi_force_hotplug=1

配置文件存盘后重启树莓派,我不禁会心一笑:这感觉真好,腰不疼颈不酸了!

---------------------------------------------------------------------------------------------------------------

挂载u盘

http://blog.csdn.net/c80486/article/details/8545115

复制代码
在树莓派中操作如下

1, 在插入U盘前,用 ls 命令查看一下设备文件

ls /dev/sd*

可以看到,没有文件

2, 插入U盘, 再用ls 命令查看一下设备文件

ls /dev/sd*
可以看到,有两个文件   sda , sda1
其中 sda1就是U盘

3, 建立一个子目录,用于挂接
进入主目录
cd ~
生成一个子目录
mkdir usbdisk

4,使用mount命令挂接。mount命令必须使用 root 权限,所以要用sudo
sudo mount -o rw /dev/sda1 /home/~/usbdisk
    -o 表示选项, rw是读写, 这种写法是root用户有读写权限
   /dev/sda1 是要mount的设备
   /home/~/usbdisk     是要mount到的目录

mount成功后,进入usbdisk,用ls 查看一下,就可以看到U盘中的文件了

cd usbdisk
ls

如果当前用户不是root,而是pi,则这个usbdisk目录是不能写入的。因为mount命令是用root用户身份执行的,没有定义用户pi的读写权限
如果要用户pi也可以读写,则要使用以下mount命令参数

sudo mount -o uid=pi,gid=pi /dev/sda1 /home/~/usbdisk

    -o 表示选项, uid=pi,gid=pi 表示用户及组都是pi(则用户pi可读写)


mount成功后,进入usbdisk,用ls 查看一下,用mkdir可以创建子目录了(即,可以读写了)

cd usbdisk
ls
mkdir test


5, U盘使用完毕,须使用umount命令卸载。umount命令必须使用 root 权限,所以要用sudo
sudo umount /home/~/usbdisk

umount时,要卸载的目录必须没有被使用(比如:某个程序正在打开文件等),如果有,则退出相关程序。
并且,umount时,当前目录不能是要卸载的目录。如果是,则需修改当前目录,比如: cd /
如果umount不成功,多数是上述原因

6, umount成功后,则可以拨出U盘了
复制代码

 

---------------------------------------------------------------------------------------------------------------

迅雷远程下载

复制代码
http://tieba.baidu.com/p/3607314366
创建一个文件夹xunlei
mkdir xunlei

cd xunlei/
ls -al
把刚才下载的那个文件解压上传到xunlei文件夹内


给这些文件加上所有权限
chmod 0777 * -R


然后运行那个portal
./portal
成功的话会出现如图所示的文本,其中包含一条机器码


然后登录迅雷远程下载官网http://yuancheng.xunlei.com/
先登录,再在机器码框中输入之前的机器码


之后就可以添加下载任务了,这时你就会发现他说没有挂载磁盘,再把U盘插上,ok
复制代码

 

 

vi 编辑器的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
  vi和其他编辑器最不一样的地方莫过于它把编辑、处理等等的操作分离开来,形成性质不同的3种操作模式,他们分别为“命令模式”、“插入模式”、“ex模式”。
 
  在Windows下通常使用的记事本等等的编辑器在打开文件的时候,光标已经在处于输入等待的状态,也就是说,我们打开文件时就可以对文件进行编辑。 比如,我们要输入新的文本,或者复制一段文本,所有操作的前提,只要编辑器是被打开的状态,操作就是可能的。
 
  但在vi下,为了增强对将要处理的文本的针对性,文本输入、复制等等不同的操作,是被分离开来的,比如文本输入的模式叫做“插入模式”,在插入模式 下,我们可以用和Windows下一样的操作方法来对文本进行输入、编辑等等的操作,但是复制等等非编辑的操作,在插入模式下不能够完成,而需要切换到相 应的模式下用相应的命令来完成。
 
在这里,还是首先对重要的vi的模式进行说明。
 
★ vi的模式(命令模式、插入模式、ex模式)
 
1)命令模式:
 
  在我们刚刚通过vi新建或打开一个已经存在的文件时,首先默认被读取的模式就是“命令模式”,命令模式的特征就是,在编辑器窗口左下角的位置上没有任何的提示标语。
 
 
 
  在这个模式下,如果不通过相应的命令,我们无法输入新的文本到这个文件中。这里建议新接触刚刚接触vi的朋友在用vi打开一个文件时不要处于心切而乱 按键盘试图输入一些文本到文件中,因为命令模式所谓的“命令”,并不是我们在命令行提时下输入的过程诸如“ls -> 回车”等等形式的命令。确切说vi命令模式下的命令,只是计算机键盘上的某个按键或某些按键的组合,当我们在命令模式下敲下键盘一个按键的时候,相应命令就已经被执行。
 
   在这里,首先介绍移动光标的命令。通常光标的移动可以通过键盘右边的方向键,但是由于每次移动光标,手都要大幅度的移动到键盘右边,这样使用vi是体现不出效率的,所以建议使用vi固有的命令(键)来控制光标的移动。
 
  光标的移动命令如下所示:
 
  向右移动 --> l
  向左移动 --> h
  向下移动 --> j
  向上移动 --> k
  如上所示,例如要向右移动光标8个字符的距离,只要在键盘上敲 l 键8次即可;向下移动3行的距离,只要在键盘上敲 j 键3次即可……也就是说,在vi命令模式中通过这几个键(命令)来控制光标的移动。
  其次就是文本删除的命令。在Windows下大多数编辑器在删除文本时只要连续按[Backspace]键即可。但由于在vi中,插入模式和命令模式是分离开来的,所以在命令模式下需要通过命令(按键)来删除文本,而不是直接按[Backspace]键。
 
  文本删除的命令如下所示:
 
  删除光标所在位置的字符 --> x
  删除光标所在的行 --> dd(敲 d 两次)
  如上所示,例如要删除从光标位置起向右的3个字符,只要在键盘上敲 x 键3次即可;要删除光标所在的行,只要敲 dd (连续敲d键两次),光标所在行的所有字符以及行将会被删除。
  再次,当编辑完了一个文档,想要保存后退出的时候的命令为“ZZ”(大写、连续敲2次)。
 
  保存并退出文档:
 
  保存当前修改并退出 --> ZZ
  另外,vi还有一些编辑性质的命令,一并总结如下
 
  具有编辑性质的有用的命令:
 
  撤销上一步操作 --> u
  移动光标到行首 --> 0 (数字0)
  移动光标到行末 --> $
  移动光标到当前页最顶行 --> H
  移动光标到当前页最底行 --> L
  向前翻一页(Page Up) --> Ctrl + f
  向后翻一页(Page Down) --> Ctrl + b
  还有在服务器配置中使用vi时,频繁用到的就是vi的搜索功能。在vi命令行的状态下,键入“/”(斜 线)后,vi底部出现“/”,并处于输入等待状态,这时候输入要查找的文字或文字列,然后按回车就可以找到相应的文字或文字列。当有多个对象存在时,敲 “n”(小写)键为查找下一个目标,敲“N”为查找上一个目标。
 
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,学好了vi,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备。若其它的Linux机器里没有安装joe或pico,如果不会使用vi,那可能就真的没辄了。
  
vi编辑器有3种模式:命令模式、输入模式、末行模式。掌握这三种模式十分重要:
  
命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。在命令模式中输入字母i或o或a,就可以进入vi的输入模式编辑文件。
  
输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。
  
末行模式:在命令模式输入“:”即可进入该模式,在末行模式中有好多好用的命令。
  
下面介绍vi常用的命令操作
  
进入输入模式命令
  
i               在光标 左侧输入正文[常用]
a              在光标 右侧输入正文[常用]
o              小写字符o, 在光标所在行的 下一行增添新行
O              大写字符O, 在光标所在行的 上一行增添新行
I               在光标 所在行的开头输入正文
A              在光标 所在行的末尾输入正文
上面介绍了几种切换到插入模式的简单方法。另外还有一些命令,它们允许在进入插入模式之前首先删去一段
正文,从而实现正文的替换。这些命令包括:
s                 用输入的正文替换光标所指向的字符[常用]
ns              用输入的正文替换光标右侧n 个字符
cw              用输入的正文替换光标右侧的字  [常用]
ncw            用输入的正文替换光标右侧的n 个字
cb              用输入的正文替换光标左侧的字  [常用]
ncb            用输入的正文替换光标左侧的 n 个字
cd              用输入的正文替换光标的所在行[常用]
ncd            用输入的正文替换光标下面的n 行
c$              用输入的正文替换从光标开始到本行末尾的所有字符[常用]
c0              用输入的正文替换从本行开头到光标的所有字符[常用]
  
r            取代光标所在处的字符, 比如c3 表示将光标所在处的字符替换为字符3 [常用]
  
R           取代字符直至按【ESC】为止
  
按【Esc】键或组合键【ctrl】+[ 退出输入模式
  
末行模式
  
w              保存文件  [常用]
  
w file       将当前文件的内容保存到file文件
  
wq           保存文件并退出vi编辑器[常用]
  
wq file    将 当前文件的内容写入file 文件,并保持原有文件的内容不变,然后退出vi编辑器(假如当前文件内容有变动但未执行保存操作,那么执行该命令后不会退出vi编辑器)
  
r file        读取file 文件的内容,插入当前光标所在行的后面
e file        关闭当前文件,并打开新文件file (如果当前文件内容有变动但未保存,则该命令不会被执行)[常用]
f file        将当前文件重命名为file [常用]
f               打印当前文件名称和状态,如文件的行数、光标所在的行号等
  
q              退出vi编辑器(如果当前文件有改动,则无法退出) [常用]
  
q!             强制退出vi编辑器(不保存修改)[常用]
  
#              将光标移到第#行[常用]
  
PS:  关于行号使用的一些技巧:
  
一般用数值来指定绝对行号;字符“.”表示光标所在行的行号;字符“$”表示文件最后一行的行号,例如:
  
.+5                  将光标从当前行往下移动5 行
  
$                     将光标移到文件的最后一行
  
1                     将光标移到文件的第一行
  
23w file         将文件的第23行写入file文件
  
3,5w file       将第3 行至第5 行写入file 文件
1,.w file        将第1 行至当前行写入file 文件
.,$w file        将当前行至最后一行写入file 文件
.,.+5w file    从当前行开始将6 行内容写入file 文件
1,$w file      将所有内容写入file 文件,相当于:w file 命令
  
移动光标的操作
  
【Home】          光标到行首
【End】              光标到行尾
【Page Up】       向上翻页
  
【Page Down】  向下翻页
  
【Delect】          删除光标位置的字符
【Ctrl】+ f          向前移动一页
  
【Ctrl】+ b        向后移动一页
  
  h            光标向左移动一个字符   [常用]
  j            光标向下移动一个字符   [常用]
  k           光标向上移动一个字符   [常用]
  l            光标向右移动一个字符   [常用]
  数字0    把光标移到行尾  [ 常用]
  $           把光标移到行首  [ 常用] 
  G           把光标移到文件的末尾  [ 常用]
  gg          把光标移到文件的开头   [ 常用]
  w           把光标移到下一个单词的开头  [ 常用]
  e           把光标移到当前或下一个单词的字尾  [ 常用]
  b           把光标移到当前或下一个单词的开头  [ 常用]
  ^           把光标移到该行的第一个非空白字符(tab,space)   [ 常用]
  :#         把光标移到该行的第#个位置,例如:3, :10   [ 常用]
  )            光标移到句尾
  (            光标移到句首
  注: 句子用半角句号后加一个空格(. )分割
  }           光标移到段落结尾
  {           光标移到段落开头
  注: 段落以空行分割
  nG        将光标定位到第n行的开头  [ 常用]
  
  n+        将光标下移n行 
  
 n-          将光标上移n行
  
 n$          将光标下移n行,并置于行尾
  
 H           将光标置于当前屏幕的顶行
  
 M          将光标置于当前屏幕的中间行
  
 L            将光标置于屏幕的最后行
  
 ~            改变当前字符的大小写   [ 常用]
  
 >>          把当前行往右移动8个字符(相当于【tab】键)    [ 常用]
  
 <<          把当前行往左移动8个字符(相当于【Shift】+【tab】) [ 常用]
  
nz:        将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
  
撤销操作
  
u            命令撤销最近一次的操作,可以使用多次来恢复原有的操作   [ 常用]
U           撤销所有操作
.             可以恢复对使用u命令的操作      [ 常用]
  
复制/删除/粘贴操作
 
x           删除光标处的单个字符,并把删除后的字符放到缓存区( 实际上删除相当于剪切 )   [ 常用]
nx         删除三个字符。 例如, 3x删除光标处向右的三个字符 
"bnx     把删除的字符放到缓存区b
  
dw        删除当前字符到单词尾(包括空格)的所有字符   [ 常用]
  
dd        删除光标所在行  [常用]     [ 常用]
ndd      删除n行。 例如, 3dd从当前行开始向下删除三行文本  [ 常用]
  
"bndd   把删除的内容放到缓存区b
  
    PS: 如果要删除第m至第n行的内容,可以在末行模式中输入m,nd。比如3,5d表示删除第3~5行  [ 常用]
  
yy        复制当前光标所在行的内容到vi缓冲区     [ 常用]
nyy      复制n行。例如:5yy就是从当前光标所处的行向下复制5行,把复制的内容放到vi缓存区  [常用]
"bnyy   将复制的内容放到缓存区b . 比如,b3yy 将三行数据存入缓存区b    [ 常用]
  
    PS: 如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区  [ 常用]
  
yw       复制当前光标所在位置到单词尾字符 (不包括空格) 的内容到vi缓存区,相当于复制一个单词  [常用]
nyw     复制n个单词例如:2yw就是复制两个单词
"bnyw  例如, 复制n个单词到缓存区b
  
y$        复制光标所在位置到行尾内容到缓存区  
y^        复制光标所在位置到行首内容到缓存区   
p          小写p, 将缓存区的内容粘贴到当前行的下方(与yy配合)  ,或插入到当前光标的下一个位置(与dw, x, y$ , y^ 配合)[常用]
  
P          大写P,与小写p的作用类似,但粘贴都方向相反
  
查找与替换
 
        vi的查找与替换功能要再末行模式下完成。
  
/关键字                                               自上而下查找,比如/work,表示从当前光标处往下查找关键字为work的内容[ 常用]
  
?关键字                                              自下而上查找 , 比如/work,表示从当前光标处往上查找关键字为work的内容  [ 常用]
  
PS: 当找到匹配项时,光标会定位在关键词都字符开头。要继续查找下一个匹配项,只需敲入字符n; 要往回查找,敲入N. 可以输入2n往下查找下下一个匹配项
  
s/old_string/new_string               用new_string替换光标所在行中首次出现的old_string
  
s/old_string/new_string/g           用new_string替换光标所在行中的所有old_string
  
m,ns/old_string/new_string/g   用new_string替换第m行至第n行的所有old_string [ 常用]
  
%s/old_string/new_string/g      用new_string替换所有的old_string   [ 常用]
  
/pattern_address/s/old_string/new_string/g    从当前光标处往下查找与pattern_address匹配的行,然后在该行上用new_string替换掉所有的old_string(实际上,这个命令是由/pattern_address 和/s/old_string/new_string/g组合而成)
  
g/pattern_address/s/old_string/new_string/g    找出所有与pattern_address匹配的行, 并用new_string替换掉每一行所有的old_string( 注意: 前后两个g的含义是不一样的,前面的g表示对整个文本搜索与pattern_address匹配的行, 后面的g表示针对每一个与pattern_address匹配的行都用new_string替换掉old_string)
  
     如果pattern_address和old_string一样,可以简写为g/pattern_address/s//new_string
  
     可以在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc   [ 常用]
  
PS: 查找的一些技巧
  
/str/w file                                              正向搜索,并将第一个包含字符串str 的行写入file 文件
/str1/,/str2/w file                              正向搜索,并将包含字符串str1 的行至包含字符串str2 的行写入file 文件
  
恢复文件
vi在编辑某一个文件时,会生成一个临时文件,这个文件以. 开头并以.swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:
  
O        只读打开,不改变文件内容
E         继续编辑文件,不恢复.swp文件保存的内容
R        将恢复上次编辑以后未保存文件内容
Q        退出vi
D        删除.swp文件
  
或者使用vi -r 文件名来恢复未保存的内容

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次进行编辑
 
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
 
屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
 
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行
 
删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本
 
搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
 
选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
 
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
 
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
 
VI的使用
--------------------------------------------------------------------------------
 
一、插入文本
┌──┬────────────┐
│命令│描述          │
├──┼────────────┤
│i  │在当前字符前插入文本  │
├──┼────────────┤
│I  │在行首插入文本      │
├──┼────────────┤
│a  │在当前字符后添加文本  │
├──┼────────────┤
│A  │在行末添加文本     │
├──┼────────────┤
│o  │在当前行后面插入一空行 │
├──┼────────────┤
│O  │在当前行前面插入一空行 │
├──┼────────────┤
│R  │以改写方式输入文本   │
└──┴────────────┘
二、移动光标
┌─────┬───────────┐
│命令   │描述         │
├─────┼───────────┤
│j或下箭头 │向下移动一行     │
├─────┼───────────┤
│k或上箭头 │向上移动一行     │
├─────┼───────────┤
│h或左箭头 │左移一个字符     │
├─────┼───────────┤
│l或右箭头 │右移一个字符     │
├─────┼───────────┤
│w     │右移一个词      │
├─────┼───────────┤
│W     │右移一个以空格分隔的词│
├─────┼───────────┤
│b     │左移一个词      │
├─────┼───────────┤
│B     │左移一个以空格分隔的词│
├─────┼───────────┤
│0     │移到行首       │
│Ctrl-F  │向前翻页       │
├─────┼───────────┤
│Ctrl-B  │向后翻页       │
├─────┼───────────┤
│nG    │到第n行        │
├─────┼───────────┤
│G     │到最后一行      │
└─────┴───────────┘
三、替换文本
┌─────┬──────┐
│命令   │描述    │
├─────┼──────┤
│$     │到行尾   │
├─────┼──────┤
│(     │到句子的开头│
├─────┼──────┤
│)     │到句子的末尾│
├─────┼──────┤
│{     │到段落的开头│
├─────┼──────┤
│}     │到段落的末尾│
└─────┴──────┘
 
四、删除文本
┌───┬───────────┐
│命令 │描述          │
├───┼───────────┤
│r   │替换一个字符      │
├───┼───────────┤
│c   │修改文本直到按下Esc健 │
├───┼───────────┤
│cw  │修改下一个词      │
├───┼───────────┤
│cnw  │修改接下来的n个词   │
└───┴───────────┘
五、文本编辑
┌──┬──────────────────────┐
│命寺│描述                    │
├──┼──────────────────────┤
│yy │将一行文本移到缺省缓冲区中          │
├──┼──────────────────────┤
│yn │将下一个词移到缺省缓冲区中          │
├──┼──────────────────────┤
│ynw │将后面的n个词移到缺省缓冲区中        │
├──┼──────────────────────┤
│p  │如果缺省缓冲区中包含一行文本,则在当前   │
│  │行后面插入一个空行井将缺省缓冲区中的声   │
│  │容粘贴到这一行中;如果缺省缓冲区中包含   │
│  │多个词,把这些词粘贴到光标的右边.     │
├──┼──────────────────────┤
│P  │如果缺省缓冲区中包含一行文本,则正当前    │
│   │行前面插入一个空行井将缺省缓冲区中的内    │
│  │容粘贴到这一行中;如果缺省缓冲区中包含    │
│   │多个词,把这些词粘贴到光标的左边    
 
  │
└──┴──────────────────────┘
六、保存退出
┌───────────┬───────────────┐
│命令         │描述             │
├───────────┼───────────────┤
│zz          │保存并退出          │
├───────────┼───────────────┤
│:w filename      │写入文件            │
├───────────┼───────────────┤
│:W          │写入文件           │
├───────────┼───────────────┤
│:x          │保存(如果当前文件修改过)并退出│
├───────────┼───────────────┤
│:q!          │不保存文件,直接退出      │
├───────────┼───────────────┤
│:q          │退出vi            │
 
VI常用技巧
 
VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。
 
一、基本命令介绍
 
---- 1.光标命令
 
k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告。
w、b——使光标向前或向后跳过一个单词。
---- 2.编辑命令
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。
---- 3.查找命令
---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。
---- 4.拷贝复制命令
---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。
 
二、常见问题及应用技巧
 
---- 1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。
---- vi file
---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
---- 您也可以在指定的行号后读入文件内容,例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。
---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
---- #cat squid.conf.default | grep -v ^$ | grep -v ^#
 
---- 2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。
---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
---- vi file
---- :20,59w /tmp/1
 
---- 3.用VI编辑一个文件,但需要删除大段的内容。
---- 首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
---- :23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:a,bd”命令删除。
 
---- 4.在整个文件的各行或某几行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s为substitute,%表示所有行,g表示global。
 
---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
---- vi file1 file2
---- yy 在文件1的光标处拷贝所在行
---- :n 切换到文件2 (n=next)
---- p 在文件2的光标所在处粘贴所拷贝的行
---- :n 切换回文件1
 
---- 6.替换文件中的路径。
---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。