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

安装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盘了
View Code

 

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

迅雷远程下载

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
View Code

 

 

vi 编辑器的用法

  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 文件名来恢复未保存的内容

  

进入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”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

  

posted @ 2016-11-22 16:30  ccqin  阅读(4889)  评论(0编辑  收藏  举报