java工程师linux命令大全

java工程师linux命令,

shell简介

1.1 shell家族

shell:命令解释器,根据输入的命令执行相应命令。

察看当前系统下有哪些shell:

cat /etc/shells
   
   
   
   
  • 1

察看当前系统正在使用的shell

echo $SHELL
   
   
   
   
  • 1

常见shell:

/bin/sh (已经被 /bin/bash 所取代)
/bin/bash (就是 Linux 默认的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已经被 /bin/tcsh 所取代)
/bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.2 bash

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)
bash 是 许 多 Linux 平 台 的 内 定 Shell, 事 实 上, 还 有 许 多 传 统 UNIX 上 用 的 Shell, 像 tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其 它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。

bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格 的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。

1.3 命令和路径补齐

在bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。如果是Ubuntu 系统,系统默认启用了bash completion,还可以补全命令的某些参数、Makefile目标等 等。如果是Debian系统,可以用以下命令启用bash completion:

$ source /etc/bash_completion
   
   
   
   
  • 1

建议将这一行加入∼/.bashrc启动脚本中。比如使用sudo后面接命令,如果没有bash completion则只有sudo可以补全,后面的命令不能补全。如果启用了bash completion,则 后面的命令,包括命令的某些参数(比如aptitude命令的install)都可以补全了。

比如在主目录下要列出桌面目录的内容,输入(不回车)

$ ls De
   
   
   
   
  • 1

然后敲Tab键,如果以De开头的文件或文件夹只有Desktop一个,就自动补全为

$ ls Desktop
   
   
   
   
  • 1

否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里 我们手动创建另外一个以De开头的文件)

$ touch Death
$ ls De
Death   Desktop/
   
   
   
   
  • 1
  • 2
  • 3

你可以再补敲一个s再Tab,这次Desktop就会补全到命令后面了。有 的 人 是 从 DOS 时 代 过 来 的, 留 下 一 个 很 不 好 的 习 惯 就 是 在 找 一 个 文 件 时 反 复 地cd、ls、cd、ls等找到了要找的文件时再想回到先前的目录,已经不记得先前是 从哪个目录转到这里来的了。

我们从上面可以看出,Tab补全本身就具备了ls的功能,上面的Tab补全相当于ls -Fd De*命令。所以我们完全不必反复地cd到别的目录然后ls去找文件,多按几次Tab就可以一条 命令完成了,这样的好处是我们的当前目录不用变,不需要找完了文件再cd回来,同时省去 了大量的按键次数。更重要的是,自动补全同时兼具了检查拼写错误的功能,如果前面几个 字母拼写错了,就补全不出东西来,用户就知道拼写错了,如果前面几个字母没有拼写错, 那么由系统补全出来的文件名肯定也不会有拼写错误,避免了用户在敲很长的文件名时易犯 的拼写错误。

1.4 历史记录

history
   
   
   
   
  • 1

历史记录是另外一个非常方便的功能。按上下移动光标键(或者Ctrl-p、Ctrl-n)可以 一条一条浏览以前输过的命令。如果有需要重复输入的命令就不用输第二次了。如果你能记 住以前输过的某条命令中的某个关键字,可以按Ctrl-r,然后输入关键字,随着你每输入一 个字母,bash会做增量式(increasingly)查找,也可以反复按Ctrl-r或Ctrl-s向前向后查 找。如果找到了,按左右移动光标键或Home键(Ctrl-a)或End键(Ctrl-e)将该命令带回提示 符下进一步修改,或者直接按Enter键原封不动地执行该命令。

1.5 主键盘快捷键

bash的快捷键和emacs保持一致,用惯其中之一再用另一个程序会很顺手的。请记住一条原则:尽量使用主键盘快捷键而不使用移动光标键和编辑键。因为手不必离开主键盘是效 率最高的,这样在你一生之中所节省的来回移动手的时间绝对可以用星期来计算,是绝对值 得你花十分钟的时间记住这些快捷键的。

功能 快捷键 助记
Ctrl-p previous
Ctrl-n next
Ctrl-b backward
Ctrl-f forward
Del Ctrl-d delete光标后面的
Home Ctrl-a the first letter
End Ctrl-e end
Backspace Backspace delete光标前面的

目录和文件

2.1 类Unix系统目录结构

ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面

/   根目录
bin //系统可执行程序,如命令
boot        //内核和启动程序,所有和启动相关的文件都保存在这里 grub //引导器相关文件
dev //设备文件
etc //系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LILO参数、用 户账户和密码。
home    //用户的主目录。下面是自己定义的用户名的文件夹
lib //系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32 目录,几乎所有的应用程序都需要用到这些共享库。
media //挂载媒体设备,如光驱、U盘等
mnt //目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media 目录。
opt //可选的应用软件包(很少使用)
proc    //这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录 的内容不在硬盘上而是在内存里。
sbin    //管理员系统程序 selinux
srv
sys //udev用到的设备目录树,/sys反映你机器当前所接的设备 tmp //临时文件夹
usr //这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。] bin    // 应用程序
game //游戏程序 include
lib //应用程序的库文件 lib64
local   //包含用户程序等 sbin  //管理员应用程序
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.2 用户目录

位于/home/user,称之为用户工作目录或家目录,表示方式:

/home/user
~
   
   
   
   
  • 1
  • 2
2.2.1 相对路径和绝对路径

绝对路径

从/目录开始描述的路径为绝对路径,如:

cd /home ls /usr
   
   
   
   
  • 1

相对路径

从当前位置开始描述的路径为相对路径,如:

cd ../../ ls abc/def
   
   
   
   
  • 1

.和..

每个目录下都有.和..
. 表示当前目录
.. 表示上一级目录,即父目录 根目录下的.和..都表示当前目录

2.3 ls

ls [OPTION][FILE]
   
   
   
   
  • 1

ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令,因 为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。 对于每个目录, 该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其 他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当 前目录的信息。

主要的OPTION有:

-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc
-l 列出文件的详细信息
-R 连同子目录中的内容一起列出
   
   
   
   
  • 1
  • 2
  • 3

ls -l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文 件类型,它可以是下述类型之一:

- 普通文件 d 目录
l 符号链接
b 块设备文件
c 字符设备文件
s socket文件,网络套接字 p 管道
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权 限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示 对文件的读、写和执行权限。各权限如下所示:

r 读
w 写
x 可执行。对于目录,表示进入权限。
s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。
t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建文 件,但文件只能被超级用户、目录拥有者或文件属主删除。如果是有sticky bit的可执行文件,在该文件执行后, 指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。
- 没有相应位置的权限。
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

访问权限后面的数字表示与该文件共享inode的文件总数,即硬链接数(参见下面ln命 令)。

2.4 cd

change dir 改变当前所在路径

cd ~
cd dir1/dir2 cd ..
   
   
   
   
  • 1
  • 2

2.5 which

查看指定命令所在路径

which ls
   
   
   
   
  • 1

2.6 pwd

查看当前所在路径

pwd
   
   
   
   
  • 1

2.7 mkdir

mkdir [OPTION] DIRECTORY
   
   
   
   
  • 1

创建目录DIRECTORY,可以一次创建多个。OPTION如果是-p,表示可以连同父目录一起 创建。

2.8 rmdir

rmdir [OPTION]DIRECTORY
   
   
   
   
  • 1

删除空目录,可以一次删除多个。OPTION如果是-p,表示可以连同空的父目录一起删 除。mkdir和rmdir的用法举例:

$ mkdir a
$ mkdir a/b
$ ls a b
$ rmdir a/b
$ ls a
$ rmdir a
$ mkdir a/b
mkdir: cannot create directory `a/b': No such file or directory
$ mkdir -p a/b
$ rmdir -p a/b
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.9 touch

touch [OPTION]FILE
   
   
   
   
  • 1
  • 将每个文件的访问及修改时间都更新为目前的时间。
  • 如果文件不存在,则创建一个字节数为0的文件。

2.10 rm

删除文件:

rm file
   
   
   
   
  • 1

删除目录:

rm dir -rf
   
   
   
   
  • 1

2.11 mv

重命名:

mv file1 file2
   
   
   
   
  • 1

移动文件:

mv file1 ~/
   
   
   
   
  • 1

2.12 cp

拷贝文件:

cp file1 file2 cp file1 dir/ cp file1 ../
   
   
   
   
  • 1

拷贝目录:

cp dir1 dir2 -r cp dir1 ~/ -r
   
   
   
   
  • 1

2.13 cat

查看文件里内容,输出到终端,如果cat时没跟文件名,则读标准输入,遇到\n后,输 出到标准输出,终端下输入Ctrl-d表示结束

2.14 more

more [OPTION] FILE
   
   
   
   
  • 1

查看文本文件的内容,屏幕显示完一屏就等待用户按下任意键再滚动到下一屏,如果中 途不想继续看下去了,可以按Ctrl+C或q终止显示。

2.15 less

less [OPTION] FILE…
   
   
   
   
  • 1

查看文本文件的内容,屏幕显示完一屏就等待用户按键,用户可以向上或向下查看,如 果中途不想继续看下去了,可以按Ctrl+C或q终止显示。

2.16 head

head [OPTION]… FILE… 显示指定文件的前面几行。如果没有指定文件,将从标准输入(键盘)上读取。如果没
有指定要显示的行数,则默认显示前10行。如果要显示文件的前5行:

$ head -5 file1
   
   
   
   
  • 1

2.17 tail

tail [OPTION]… FILE… 显示文件的最后几行。若没有指定显示的行或字符数,则默认显示末尾10行。如果要显
示文件末5行:

$ tail -5 file1
   
   
   
   
  • 1

2.18 ln

链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立 指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。如果 给ln命令加上-s选项,则建立符号链接。举例如下,注意ls -l列出文件的硬链接数和字节 数:

硬链接:

touch hello
ln hello word_h
   
   
   
   
  • 1
  • 2

软链接:

ln -s hello word_s
   
   
   
   
  • 1

2.19 tree

这个命令需要下载安装,ubuntu下

sudo apt-get install tree
   
   
   
   
  • 1

按结构树的形状显示目录和文件

2.20 wc

利用 wc 指令我们可以计算文件的 Byte 数、字数、或是列数,若不指定文件名称、或 是所给予的文件名为“-”,则 wc 指令会从标准输入设备读取数据。

wc -l ./*
   
   
   
   
  • 1

-c 或–bytes 或–chars 只显示 Bytes 数。
-l 或–lines 只显示列数。
-w 或–words 只显示字数。

2.21 od

od -tcx file1
   
   
   
   
  • 1

-t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
d[SIZE] 有符号十进制数,每个整数SIZE字节。 f[SIZE] 浮点数,每个整数SIZE字节。
o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。 u[SIZE] 无符号十进制数,每个整数SIZE字节。
x[SIZE] 十六进制数,每个整数SIZE字节。

2.22 du

查看某个目录的大小: 以M为单位

du -hm /home/sihai/test
   
   
   
   
  • 1

以B为单位

du -hb ./*
   
   
   
   
  • 1

以K为单位,4k的整数倍

du -hk ./*
   
   
   
   
  • 1

2.23 df

df查看磁盘使用情况

df --block-size=GB df --block-size=MB
   
   
   
   
  • 1

文件属性和用户用户组

3.1 whoami

查看当前登陆用户

3.2 chmod

  • 文字设定法

chmod [who] [+|-|=] [mode] 文件名

操作对象who可是下述字母中的任一个或者它们的组合:

u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。 o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。

操作符号可以是:

  • +添加某个权限。
  • -取消某个权限。
  • = 赋予给定权限并取消其他所有权限(如果有的话)。

设置mode所表示的权限可用下述字母的任意组合:

r 可读。 w 可写。
x 可执行。

  • 数字设定法

chmod [mode] 文件名 我们必须首先了解用数字表示的属性的含义:

0表示没有权限,
1表示可执行权限,
2表示可写权限,
4表示可读权限,

然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是
(u)(g)(o)

例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)= 6(读/写)。

比如设置一个文件允许所有用户可写

$ chmod a+w file1
   
   
   
   
  • 1

设置一个文件允许所有用户可读、可写、不可执行

$ chmod 666 file1
   
   
   
   
  • 1

3.3 chown

chown [OPTION]… [OWNER:GROUP] FILE…

chown [OPTION]… –reference=RFILE FILE… 更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户A, 为了让用户A能够存取这个文件,root用户应该把这个文件的属主设为A, 否则,用户A无法存取这个文件。

OPTION的主要参数:

  • -R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
  • -v 显示chown命令所做的工作。 比如把一个文件改为sihai用户和nogroup用户组所有
$ sudo chown sihai:nogroup file1
   
   
   
   
  • 1

注意:

  • chown需要特权用户才能执行
  • 一个文件的owner和owning group是没有关联的。一个文件属于用户A,也属于用户组 B,并不表示用户A属于用户组B。

3.4 chgrp

chgrp [OPTION]… GROUP FILE…

chgrp [OPTION]… –reference=RFILE FILE… 该命令改变(指定)指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。

文件名是以空格分开的要改变属组的文件列表,支持通配 符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。

OPTION的主要参数:

  • -R 递归式地改变指定目录及其下的所有子目录和文件的属组。

查找与检索

4.1 find

根据文件名查找

find [OPTION] path… [expression] 在目录中搜索文件,path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。Expression 是 find命令接受的表达式,find命令的所有操作都是针对表达式的。

一条最常用的find命令--在当前目录及子目录下查找所有以file开头的文件名。

$ find . -name 'file*'


$ find / -name 'vimrc'


$ find ~ -name '*.c'
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.2 grep

根据内容检索

grep [options] PATTERN [FILE...]
   
   
   
   
  • 1

在指定文件中搜索特定的内容,并将含有这些内容的行输出到标准输出。若不指定文件 名,则从标准输入读取。
[options]部分包含的主要参数:

  • -c:只输出匹配行的计数。

  • -I:不区分大小写(只适用于单字符)。

  • -h:查询多文件时不显示文件名。

  • -l:查询多文件时只输出包含匹配字符的文件名。

  • -n:显示匹配行及行号。

  • -s:不显示不存在或无匹配文本的错误信息。

  • -v:显示不包含匹配文本的所有行。

  • -R: 连同子目录中所有文件一起查找。

比如到系统头文件目录下查找所有包含printf的文件

$ grep 'printf' /usr/include -R
   
   
   
   
  • 1

安装卸载软件

5.1 apt-get

更新源服务器列表

sudo vi /etc/apt/sources.list
   
   
   
   
  • 1

更新完服务器列表后需要更新下源

sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package –reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package –purge 删除包,包括配置文件等 sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包 sudo apt-cache rdepends package 查看该包被哪些包依赖 sudo apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包 sudo apt-get check 检查是否有损坏的依赖

5.2 deb包安装

安装deb软件包命令: sudo dpkg -i xxx.deb
删除软件包命令: sudo dpkg -r xxx.deb
连同配置文件一起删除命令: sudo dpkg -r –purge xxx.deb
查看软件包信息命令: sudo dpkg -info xxx.deb
查看文件拷贝详情命令: sudo dpkg -L xxx.deb
查看系统中已安装软件包信息命令: sudo dpkg -l
重新配置软件包命令: sudo dpkg-reconfigure xxx

5.3 原码安装

  • 解压缩源代码包
  • cd dir
  • ./configure 检测文件是否缺失,创建Makefile,检测编译环境
  • make 编译源码,生成库和可执行程序
  • sudo make install 把库和可执行程序,安装到系统路径下

磁盘管理

6.1 mount

命令格式:

mount [-t vfstype] -o options device dir

其中:

  • -t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常 用类型有:

光盘或光盘镜像:iso9660

DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Windows NT ntfs文件系统:ntfs

Mount Windows文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs

  • -o options 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统
    ro:采用只读方式挂接设备
    rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集

  • device 要挂接(mount)的设备。

  • dir设备在系统上的挂接点(mount point)。
6.1.1 挂接光盘镜像文件

由 于 近 年 来 磁 盘 技 术 的 巨 大 进 步, 新 的 电 脑 系 统 都 配 备 了 大 容 量 的 磁 盘 系 统, 在 Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟 光驱来使用。这样做有 许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问 题,随用随调十分方便;三、硬盘的读取速度要远 远高于光盘的读取速度,CPU占用率大大 降低。其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软 件包。

1.从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

cp /dev/cdrom /home/sunky/mydisk.iso
   
   
   
   
  • 1

dd if=/dev/cdrom of=/home/sunky/mydisk.iso
   
   
   
   
  • 1

注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/ sunky/mydisk.iso

2.文件和目录制作成光盘镜像文件,执行下面的命令。

mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
   
   
   
   
  • 1

注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/ home/sunky/mydisk.iso,光盘卷标为:mydisk

3.光盘镜像文件的挂接(mount)

mkdir /mnt/vcdrom
   
   
   
   
  • 1

注:建立一个目录用来作挂接点(mount point)

mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
   
   
   
   
  • 1

注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。

6.1.2 挂载U盘

1.检测存储设备名称

sudo fdisk -l
   
   
   
   
  • 1

2.挂载存储设备sdb1到挂载点/mnt目录

sudo mount /dev/sdb1 /mnt
   
   
   
   
  • 1

3.访问/mnt

4.卸载/mnt

sudo umount /mnt
   
   
   
   
  • 1

6.2 umount

卸载命令

sudo umount 挂在点
   
   
   
   
  • 1

6.3 dd

dd:拷贝

例1:拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做)

dd if=/dev/cdrom of=cdrom.iso
   
   
   
   
  • 1

例2:将文件sfile拷贝到文件 dfile中。

$ dd if=sfile of=dfile
   
   
   
   
  • 1

例3:创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1
   
   
   
   
  • 1

/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!

/dev/zero,是一个输入设备,你可你用它来初始化文件,从里面读出来的数据都是0。

压缩包管理

7.1 tar

tar [主选项+辅选项] 文件或者目录 tar可以为文件和目录创建档案。

利用tar命令用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。使用该命令时,主选项是 必须要有的,辅选项是辅助使用的,可以选用。

主选项包括:

  • c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
  • r 把要存档的文件追加到档案文件的未尾。
  • t 列出档案文件的内容,查看已经备份了哪些文件。
  • u 更新文件。用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最 后。
  • x 从档案文件中释放文件。(常用)

辅选项包括:

  • f 使用档案文件或设备,这个选项通常是必选的。(常用) k 保存已经存在的文件。
  • m 在还原文件时,把所有文件的修改时间设定为现在。 M 创建多卷的档案文件,以便在几个磁盘中存放。
  • v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。(常用) w 每一步都要求确认。
  • z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压 缩。(常用)

  • j 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压 缩。(常用)

要将文件备份到一个特定的设备,只需把设备名作为备份文件名。 打包:

tar cvf dir.tar dir tar xvf dir.tar dir
   
   
   
   
  • 1

打gz压缩包:

tar zcvf dir.tar.gz dir tar zxvf dir.tar.gz
   
   
   
   
  • 1

打bz2压缩包:

tar jcvf dir.tar.bz2 dir tar jxvf dir.tar.bz2
   
   
   
   
  • 1

指定目录解压缩:

tar zxvf dir.tar.gz -C ~/test
   
   
   
   
  • 1

7.2 rar

打包:把dir压缩成newdir.rar

rar a -r newdir dir
   
   
   
   
  • 1

解包:把newdir.rar解压缩到当前目录

unrar x newdir.rar
   
   
   
   
  • 1

7.3zip

打包:

zip -r dir.zip dir
   
   
   
   
  • 1

解包:

unzip dir.zip
   
   
   
   
  • 1

进程管理

8.1 who

查看当前在线上的用户情况。所有的选项都是可选的,不使用任何选项时,who命令将 显示以下三项内容:

login name:登录用户名; terminal line:使用终端设备; login time:登录到系统的时间。

sihai@ubuntu:~/demo$ who -uH
名称  线路  时间  空闲  进程号 备注 sihai tty2   2014-08-14 13:31        .   6798
sihai tty7  2014-08-14 01:312423
sihai pts/1 2014-08-14 01:31 12:00  2843 (:0)
sihai pts/3 2014-08-14 10:39    .   2843 (:0)
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

8.2 ps

ps [选项]

ps命令用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输 出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。选项部分如下:

  • -e 显示所有进程。

  • -f 全格式。

  • -h 不显示标题。

  • -l 长格式。

  • -w 宽输出。

  • a 显示终端上的所有进程,包括其他用户的进程。 r 只显示正在运行的进程。

  • x 显示没有控制终端的进程。

这个命令参数有很多,但一般的用户只需掌握一些最常用的命令参数就可以了。

最常用的三个参数是u、a、x, 我们首先以root身份登录系统,查看当前进程状况

sihai@ubuntu:~$ ps aux
USER    PID %CPU %MEM   VSZ RSS TTY STAT START  TIME COMMAND
root    1 0.0 0.0   3672    2008 ?  Ss  08:46   0:01 /sbin/init

sihai@ubuntu:~$ ps ajx
PPID    PID PGID    SID TTY TPGID STAT  UID TIME COMMAND 4592 6948 6948 4592 pts/3      6948 R+ 1000    0:00 ps ajx


sihai@ubuntu:~$ ps -Lf 2423
UID PID PPID    LWP C NLWP STIME TTY    STAT    TIME CMD
1000    2423 2282 2423 0    4 08:46 ?   Ssl 0:00 gnome-session --session=ubuntu
1000    2423 2282 2465 0    4 08:46 ?   Ssl 0:00 gnome-session --session=ubuntu
1000    2423 2282 2466 0    4 08:46 ?   Ssl 0:00 gnome-session --session=ubuntu
1000    2423 2282 2468 0    4 08:46 ?   Ssl 0:00 gnome-session --session=ubuntu
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Head标头:

USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
PPID 父进程的进程ID(Parent Process id) SID 会话ID(Session id)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。 TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。 I 空闲 Idle
Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调 用后释放。
D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中 断发生。
T 停止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。 P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。 X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先 级进程 低优先序的进程
L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内 s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组
START 进程启动时间和日期 TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令 NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。 FLAGS 与进程相关的数字标识

8.4 fg

fg [job…]

把指定的后台作业或挂起作业移到前台运行。 参数job是一个或多个进程的PID,或者 是命令名称,或者是作业号(作业号前面要带一个%号)。

通常在shell中输入命令启动进程后,如果该进程需要与用户交互,那么此后用户的键 盘输入都被该进程读取,直到该进程退出后才出现shell提示符$,这种进程为前台进程。

如果在命令行的末尾加上&字符,则shell为这个命令创建一个后台进程,它虽然也可以 输出到屏幕,但是不能读取键盘输入,不管执行命令的进程有没有退出都立刻回到shell提 示符接受下一条命令的输入。如果该进程也需要读取键盘输入,则被挂起等待直到用户用fg 命令把它变成前台进程。如果一个命令需要较长的处理时间并且不需要与用户交互,就适合 把它放在后台执行。

8.5 bg

bg [job…]

把被挂起的进程提到后台执行。 其中,job是一个或多个进程的PID、命令名称或者作 业号,在参数前要带%号。

8.6 kill

向指定进程发送信号

kill [ -signal | -s signal ] pid …

查看信号编号

kill -l [ signal ]
   
   
   
   
  • 1

给一个进程发信号,或终止一个进程的运行。

kill命令如果不带参数而直接跟pid,就是发给该进程SIGTERM信号,大部分进程收到该 信号就会终止。但是被挂起的进程不能处理信号,所以必须发SIGKILL信号,由系统强制终 止进程。

8.7env

查看当前进程环境变量

$env
   
   
   
   
  • 1
  • vim ∼/.bashrc 配置当前用户环境变量
  • vim /etc/profile 配置系统环境变量,配置时需要有root权限

用户管理

9.1 创建用户

sudo useradd -s /bin/bash -g sihai -d /home/sihai -m sihai sudo useradd -s /bin/sh -g group -G adm,root xwp
   
   
   
   
  • 1

此命令新建了一个用户xwp,该用户的登录Shell是/bin/sh,他属于group用户组,同时 又属于adm和root用户组,其中group用户组是其主组。

  • -s 指定新用户登陆时shell类型

  • -g 指定所属组,该组必须已经存在

  • -G 指定附属组,该组必须已经存在

  • -d 用户家目录

  • -m 用户家目录不存在时,自动创建该目录

9.2 设置用户组

sudo groupadd sihai
   
   
   
   
  • 1

9.3 设置密码

sudo passwd sihai
   
   
   
   
  • 1

9.4 切换用户

su 用户名

su sihai
   
   
   
   
  • 1

9.5 root用户

变成root用户

sudo su
   
   
   
   
  • 1

设置root密码

passwd
   
   
   
   
  • 1

9.6 删除用户

userdel 选项 用户名

常用的选项是-r,他的作用是把用户的主目录一起删除。 例如:

sudo userdel -r sihai
   
   
   
   
  • 1

此命令删除用户sihai在系统文件(主要是/etc/passwd,/etc/shadow,/etc/ group等)中的记录,同时删除用户的主目录。

网络管理

10.1 ifconfig

1.查看网卡信息

 ifconfig 
   
   
   
   
  • 1

2.关闭网卡

sudo ifconfig eth0 down 
   
   
   
   
  • 1

3.开启网卡eth0

sudo ifconfig eth0 up 
   
   
   
   
  • 1

4.给eth0配置临时IP

sudo ifconfig eth0 IP
   
   
   
   
  • 1

10.2ping

ping [选项] 主机名/IP地址

查看网络上的主机是否在工作。它向该主机发送ICMP ECHO_REQUEST包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。

命令中各选项的含义如下:

-c 数目 在发送指定数目的包后停止。
-d 设定SO_DEBUG的选项。
-f 大量且快速地送网络封包给一台机器,看它的回应。
-I 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-l 次数 在指定次数内,以最快的方式送封包数据到指定机器(只有超级用户可以使用此选项)。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 不经由网关而直接送封包到一台机器,通常是查看本机的网络接口是否有问题。
-s 字节数 指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

10.3netstat

netstat [选项]

显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运 作。命令中各选项的含义如下:

-a 显示所有socket,包括正在监听的。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,格式同“ifconfig -e”。
-n 以网络IP地址代替名称,显示出网络连接情形。
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况。
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。

10.4nslookup

nslookup name

查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。 如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。

不带参数使用nslookup命令时,出现提示符“>”,在后面输入要查询的IP地址或域名 并回车即可。如果要退出该命令,输入exit并回车即可。

sihai@ubuntu:~$ nslookup
> www.sihai.cn
Server: 127.0.0.1
Address:    127.0.0.1#53
   
   
   
   
  • 1
  • 2
  • 3
  • 4

10.5 finger

finger [-lmsp] user [user@host …] 查询用户的信息,通常会显示系统中某个用 户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用 户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网 络主机需要运行finger守护进程。

命令中各选项的含义如下:

-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以 及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。

sihai@ubuntu:~$ finger sihai
Login: sihai    Name: sihai
Directory: /home/sihai  Shell: /bin/bash
On since Mon Sep 8 08:55 (CST) on tty7  14 hours 48 minutes idle On since Mon Sep 8 21:57 (CST) on pts/1 from :0
11 minutes 18 seconds idle
On since Mon Sep 8 23:12 (CST) on pts/2 from :0 6 seconds idle
No mail. No Plan.
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

常用服务器构建

11.1 ftp

11.1.1ftp服务器

1.安装vsftpd服务器

sudo apt-get install vsftpd
   
   
   
   
  • 1

2.配置vsftpd.conf文件

sudo vi /etc/vsftpd.conf
   
   
   
   
  • 1

添加下面设置

anonymous_enable=YES 
anon_root=/home/sihai/ftp 
no_anon_password=YES 
write_enable=YES 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
anon_umask=0022
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.重启服务器,重新加载/etc/vsftpd.conf配置文件

ubuntu12.04sudo /etc/init.d/vsftpd restart


ubuntu14.04sudo /lib/init/upstart-job vsftpd restart
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.进入你的/home/sihai/ftp目录下创建一个空目录,供用户上传

cd ~/ftp

mkdir anonymous chmod 777 anonymous
   
   
   
   
  • 1
  • 2
  • 3

5.测试上传功能,登陆ftp服务器,进入到anonymous目录

ftp IP
cd anonymous
   
   
   
   
  • 1
  • 2

6.上传命令,可以把你当前目录下的文件上传到ftp服务器的anonymous目录

put somefile 
get somefile
   
   
   
   
  • 1
  • 2
11.1.2 ftp客户端

Ubuntu 默认已经安装ftp客户端

11.1.3 lftp客户端

lftp 也 是 一 种 ftp 客 户 程 序。 它 是 以 文 本 方 式 操 作 的, 但 是 比 起 图 形 界 面 更 为 方 便。lftp几乎具有bash的所有方便功能,Tab 补全,bookmark, queue, 后台下载等可以 得到支持。用法与ftp类似,主要的指令如下:

put 上传文件
mput 上传多个文件 get 下载文件
mget 下载多个文件
mirror 下载整个目录及其子目录 mirror –R 上传整个目录及其子目录
!command 调用本地shell执行命令command

注意,有的发行版可能缺省没有安装lftp工具,需要用户自己安装。如果是Debian或 Ubuntu系统,则安装lftp软件包。

sudo apt-get install lftp
   
   
   
   
  • 1

11.2 nfs

1.安装nfs服务器

sudo apt-get install nfs-kernel-server
   
   
   
   
  • 1

2.设置/etc/exports配置文件

sudo vi /etc/exports
   
   
   
   
  • 1

添加这行配置

/home/用户名/nfs   *(rw,sync,no_root_squash)
   
   
   
   
  • 1

3.在用户目录下创建nfs目录

mkdir /home/用户名/nfs
   
   
   
   
  • 1

4.重启服务器,重新加载配置文件

sudo /etc/init.d/nfs-kernel-server restart
   
   
   
   
  • 1

5.在/home/用户名/nfs目录下创建测试文件hello

cd /home/用户名/nfs touch hello
   
   
   
   
  • 1

6.测试服务器,把服务器共享目录nfs挂在到/mnt节点

sudo mount -t nfs -o nolock -o tcp IP:/home/用户名/nfs /mnt
   
   
   
   
  • 1

7.进入/mnt目录可以看到hello文件,表示构建成功

8.卸载网络共享目录

sudo umount /mnt
   
   
   
   
  • 1

11.3ssh

1.安装ssh服务器

sudo apt-get install openssh-server
   
   
   
   
  • 1

2.远程登陆

ssh 用户名@IP
   
   
   
   
  • 1

其它命令

12.1 终端翻页

Shift-pageup 
Shift-pagedown
   
   
   
   
  • 1
  • 2

12.2 man

看手册(叫做manual或man page)。每一个命令和系统函数都有自己的man page。

man man
   
   
   
   
  • 1
man read 
   
   
   
   
  • 1

查看read命令的man page

man 2 read 
   
   
   
   
  • 1

查看read系统函数的man page(在第二个section中,表示为read(2)) man -k read 以read为关键字查找相关的man page

12.3 clear

清屏。使光标和提示符回到屏幕第一行。

快捷键:Ctrl-l

12.4 alias

alias [-p] name=value … 将 value 字 符 串 起 个 别 名 叫 name, 以 后 在 命 令 行 输 入 name,shell 自 动 将 其 解 释 为value,如果不带参数执行本命令,或以参数-p执行,则显示当前定义的别名列表。

$ alias
alias ls='ls --color=auto' alias rm='rm -i'
   
   
   
   
  • 1
  • 2

12.5 echo

echo [-n] 字符串

在显示器上显示一段文字,一般起到一个提示的作用。其中选项n表示输出文字后不换 行;字符串可以加引号,也可以不加引号。用echo命令输出加引号的字符串时,将字符串原 样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各 字符串之间用一个空格分割。

查看上一个程序退出数值,正常情况程序退出值是0

echo $?
   
   
   
   
  • 1

12.6 date

查看当前时间

12.7 umask

umask [-p] -S [mode]

umask指定用户创建文件时的掩码,其中的mode和chmod的命令中的格式一样。如果不用 mode参数,则显示当前的umask设置。如果用-S参数,则以符号形式显示设置。

$ umask 0022
$ umask -S u=rwx,g=rx,o=rx
   
   
   
   
  • 1
  • 2

比如该用户touch或gedit创建一个文件,则其默认权限为-rw-r-r–,如果该用户创 建一个可执行文件(比如编译生成的程序),则其默认权限为-rwxr-xr-x。也就是说,由于 umask的设定,创建的文件默认是不具有g的w权限和o的w权限的,除非用chmod更改权限。

12.8 创建终端

创建终端标签

Ctrl + Shift + t 
   
   
   
   
  • 1

切换标签

 Alt+n(n=1)
   
   
   
   
  • 1

新开终端

Ctrl + Shift + n
   
   
   
   
  • 1

关机重启

关机重启这些操作都需要有root权限

13.1 poweroff

13.2 shutdown

shutdown -t 秒数 [-rkhncfF] 时间 [警告讯息]

选项:

-t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒).
-k : 仅送出警告讯息文字, 但不是真的要 shutdown.
-r : shutdown 之後重新开机
-h : shutdown 之後关机.
-n : 不经过 init , 由 shutdown 指令本身来做关机动作.(不建议你用)
-f : 重新开机时, 跳过 fsck 指令, 不检查档案系统.
-F : 重新开机时, 强迫做 fsck 检查.
-c : 将已经正在 shutdown 的动作取消.

例子:

shutdown -r now 立刻重新开机 shutdown -h now 立刻关机
shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机 shutdown -t3 -r now 立刻重新开机, 但在警告和删除processes 之间, 延迟3秒钟. shutdown -h 10:42 'Hey! Go away!' 10:42 分关机
shutdown -r 10 'Hey! Go away!' 10 分钟後关机
shutdown -c 将刚才下的 shutdown 指令取消,必须切换至其它tty, 登入之後, 才能下此一指令. shutdown now 切换至单人操作模式(不加任何选项时)
   
   
   
   
  • 1
  • 2
  • 3
  • 4

注意事项:
时间参数务必要加: 不是用 now, 便是用 hh:mm 或 mm now 其实就是 0 的意思.

13.3 reboot

13.4 查看内核版本信息

uname -a
   
   
   
   
  • 1

13.5 查看发行版信息

lsb_release -a
   
   
   
   
  • 1

13.6 查看空闲内存

free -m
   
   
   
   
  • 1

vim

16.1 vi简介

vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。 它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需 要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等 其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多。

Vi有三种基本工作模式:

  • 命令模式
  • 文本输入模式
  • 末行模式。
16.1.1 命令行模式

任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们 在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式 下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符 都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相 应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合 法命令,Vi会响铃报警。

16.1.2 文本输入模式

在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换 命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保 存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。

16.1.3 末行模式

末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时 Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示 符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容 写到文件中等)。末行命令执行完后,Vi自动回到命令模式。例如:

:sp newfile
   
   
   
   
  • 1

则分出一个窗口编辑newfile文件。如果要从命令模式转换到编辑模式,可以键入命令a 或者i;如果需要从文本模式返回,则按Esc键即可。在命令模式下输入“:”即可切换到末 行模式,然后输入命令。

16.2 vim基础操作

进入插入模式:

i: 插入光标前一个字符 I: 插入行首
a: 插入光标后一个字符 A: 插入行未
o: 向下新开一行,插入行首 O: 向上新开一行,插入行首

进入命令模式: ESC:从插入模式或末行模式进入命令模式 移动光标:

h: 左移 j: 下移 k: 上移 l: 右移
M: 光标移动到中间行
L: 光标移动到屏幕最后一行行首 G: 移动到指定行,行号 -G
w: 向后一次移动一个字 b: 向前一次移动一个字
{: 按段移动,上移
}: 按段移动,下移 Ctr-d: 向下翻半屏 Ctr-u: 向上翻半屏 Ctr-f: 向下翻一屏 Ctr-b: 向上翻一屏
gg: 光标移动文件开头 G: 光标移动到文件末尾

删除命令:

x: 删除光标后一个字符,相当于 Del
X: 删除光标前一个字符,相当于 Backspace
dd: 删除光标所在行,n dd 删除指定的行数 D: 删除光标后本行所有内容,包含光标所在字符 d0: 删除光标前本行所有内容,不包含光标所在字符
dw: 删除光标开始位置的字,包含光标所在字符

撤销命令:

u: 一步一步撤销
U: 一次性撤销当前行所作的所有操作 Ctr-r: 反撤销

重复命令:

.: 重复上一次操作的命令

文本行移动:

  • >>: 文本行右移
  • <<: 文本行左移

复制粘贴:

yy: 复制当前行,n yy 复制 n 行
p: 在光标所在位置向下新开辟一行,粘贴

可视模式:

v: 按字符移动,选中文本
V: 按行移动,选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除,复制,左右移动

替换操作:

r: 替换当前字符
R: 替换当前行光标后的字符

查找命令:

/: str查找
n: 下一个
N:上一个

替换命令: 把abc全部替换成123

:%s/abc/123/g
   
   
   
   
  • 1

代码排版:

gg=G: 代码自动缩进排版

16.3 vim分屏操作

分屏操作:

sp: 上下分屏,后可跟文件名
vsp: 左右分屏,后可跟文件名
Ctr+w+w: 在多个窗口切换

启动分屏

1.使用大写O参数进行垂直分屏

$ vim -On file1 file2 ...
   
   
   
   
  • 1

2.使用小写o参数进行水平分屏

$ vim -on file1 file2 ...
   
   
   
   
  • 1

注: n是数字,表示分屏的数量,n要大于等于文件个数

关闭分屏

1.关闭当前窗口

ctrl+w c
   
   
   
   
  • 1

2.关闭当前窗口,如果只剩最后一个,则退出vim

ctrl+w q
   
   
   
   
  • 1

编辑中分屏

1.上下分割当前打开的文件

ctrl+w s
   
   
   
   
  • 1

2.上下分割,并打开一个新的文件

:sp filename
   
   
   
   
  • 1

3.左右分割当前打开的文件

ctrl+w v
   
   
   
   
  • 1

4.左右分割,并打开一个新的文件

:vsp filename
   
   
   
   
  • 1

分屏编辑中光标的移动 vi中的光标键是h,j,k,l,要在各个屏之间切换,只需要先按一下ctrl+w

1.把光标移动到上边的屏

ctrl+w k
   
   
   
   
  • 1

2.把光标移动到下边的屏

ctrl+w j
   
   
   
   
  • 1

3.把光标移动到右边的屏

ctrl+w l
   
   
   
   
  • 1

4.把光标移动到左边的屏

ctrl+w h
   
   
   
   
  • 1

5.把光标移动到下一个的屏

ctrl+w w
   
   
   
   
  • 1

移动分屏 1.向上移动

ctrl+w K
   
   
   
   
  • 1

2.向下移动

ctrl+w J
   
   
   
   
  • 1

3.向右移动

ctrl+w L
   
   
   
   
  • 1

4.向左移动

ctrl+w H
   
   
   
   
  • 1

屏幕尺寸

1.增加高度

ctrl+w +
   
   
   
   
  • 1

2.减少高度

ctrl+w -
   
   
   
   
  • 1

3.让所有屏的高度一致

ctrl+w =
   
   
   
   
  • 1

4.左加宽度

ctrl+w >
   
   
   
   
  • 1

5.右加宽度

ctrl+w <
   
   
   
   
  • 1

6.右增加n宽 (如:n=30)

ctrl+w n <
   
   
   
   
  • 1
            
                
        

jQuery这篇文章

11-09 阅读数 147

jQuery 博文 来自: LMD802的博客

【跨域】jsonp看完这篇文章

04-21 阅读数 86

jsonp是一种jQuery提供的跨域解决方案,我们今天来好好讲讲jsonp。同源策略所有浏览器都会使用同源策略这个安全策略。所谓同源,是指协议、域名、端口号都相同。没有同源的两个危险场景设想在用户访... 博文 来自: 你关注了我,是个概率极低的事件......

EditText,这篇就

04-27 阅读数 3718

EditText,看这里就够了,哈哈! 博文 来自: ThanksForAndroid的博客


nginx看这篇就

02-25 阅读数 208

LK最近在项目中使用到ngnix负载均衡,虽然使用的是阿里云的负载均衡服务,但是LK还是想自学一下nginx,主要有一下知识总结:1.nginx是什么2.nginx优势是什么3.nginx安装和部署4... 博文 来自: yuruizai110的博客

学习Java JDBC,看这篇就

03-26 阅读数 2万+

JDBC(JavaDBConnection)---Java数据库连接JDBC是一种可用于执行SQL语句的JAVAAPI(ApplicationProgrammingInterface应用程序设计接口)... 博文 来自: ljheee的博客

Java 动态代理,看这篇就

09-06 阅读数 123

这篇文章需要用到Java的反射知识,如果对反射还不清楚的小伙伴,可以先移步到这里《Java进阶-反射》。编程思想都是来自于生活的,“代理”在生活中很常见。比如我们买一个东西时,一般都不会是直接从工厂里... 博文 来自: 破风的个人博客

Java语法基础看这篇就

05-24 阅读数 1280

在最近几年的流行开发语言评比中,Java一直稳居榜首。这不仅取决于Java自身拥有很多优点极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程之外,还因为Java的生态环境建设比较好,比... 博文 来自: 卢小喵的学习笔记

Java之JDBC-(看这篇就了)

04-10 阅读数 499

JDBC(JavaDBConnection)---Java数据库连接一、ODBC到JDBC的发展历程(看一眼就可以)自从Java语言于1995年5月正式公布以来,Java风靡全球。出现大量的用java... 博文 来自: 夜空中最亮的星

java工程师linux命令,这篇文章了 - 程序员欧阳思海 - CSDN博客

7-7

java工程师linux命令,这篇文章了 - weixin_3371164..._CSDN博客

5-18




Java反射,看这篇就了!

03-13 阅读数 115

Java所有框架最核心的技术就是反射支持,本文将分析反射机制之中的所有的组成单元问题,并利用反射进行类的使用。1.反射源头——Class类java.lang.Class类是进行反射操作的源头所在,所有... 博文 来自: (再见CSDN)剑主的博客/cngoblog.ink

		
weixin_33716557关注
weixin_33716557

4537篇文章

排名:千里之外

码蹄疾关注
码蹄疾

114篇文章

排名:千里之外

LMD802关注
LMD802

23篇文章

排名:千里之外

Colin_Mindset关注
Colin_Mindset

104篇文章

排名:千里之外

Dart语言基础,看完这篇文章了(二)

04-18 阅读数 224

文章内容是我学习时的点滴笔记,如有不好的地方,欢迎指出。本文承接Dart语言基础,看完这篇文章就够了(一),进一步了解Dart语法知识。1 流程控制语句ifelsefor,forEach,for-in... 博文 来自: 秃头老王的博客

JNI入门这篇文章了(含demo)

12-08 阅读数 402

本来这篇文章想叫JNI使用详解或者使用全解的,但是想了想,这篇文章的内容应该只算基础教学。所以改成这个名字,既成为了标题党,也算是客观。准备工作这篇文章直接进入正题,所谓的ndk下载工程创建我就不多说... 博文 来自: weixin_34367845的博客

蓝桥杯-队列操作(java) - 程序员欧阳思海 - CSDN博客

6-25

蓝桥杯-01字串(java) - 程序员欧阳思海 - CSDN博客

5-17

Android面向切面编程(AOP)

11-16 阅读数 402

一、简述1、AOP的概念如果你用java做过后台开发,那么你一定知道AOP这个概念。如果不知道也无妨,套用百度百科的介绍,也能让你明白这玩意是干什么的:AOP为AspectOrientedProgra... 博文 来自: CSDN_LQR的博客


Dart语言基础,看完这篇文章了(一)

04-14 阅读数 526

文章内容是我学习时的点滴笔记,如有不好的地方,欢迎指出。1变量1.1变量声明var、dynamic、Object①未初始化变量声明:声明未初始化的变量是可以改变得。voidmain(){vardata... 博文 来自: 秃头老王的博客

压敏电阻选型指南,收藏这篇就

12-14 阅读数 260

所谓压敏电阻(英文简称MOV),就是一种非线性伏安特性的限压型保护器件。目前,市面上应用于低压电器浪涌保护的压敏电阻多为氧化锌为主体材料,掺杂多种金属氧化物,采用典型的电子陶瓷工艺制成的多晶半导体陶瓷... 博文 来自: weixin_44100818的博客

Android 属性动画看这篇就

04-08 阅读数 172

前言动画绘制与View绘制有哪些区别?Android动画框架是什么?适应场景有哪些?动画机制Android内部有一套动画框架,开发者通过调用Api能够快速实现华丽丽的动画效果。动画和View有着密切联... 博文 来自: 海象先生

Android App性能优化技能,看这篇就

04-28 阅读数 86

一.何为App的性能拿小车举例,大家知道什么是一辆小车的性能吗?同学甲说,是否省油、加速是否够快、开起来是否稳定、安全等等。没错,那就是小车的性能。那App的性能又是指什么呢?同学已说,App启动是否... 博文 来自: 天外来客1009

面试高并发,看这篇就了(下)

03-16 阅读数 166

1Thread的start方法和run方法的区别?run方法就是普通的一个方法,代码运行在当前主线程,start会启动一个新的线程,并运行run方法。2如何停止线程运行?可以设置一个标志位,任务定期检... 博文 来自: weixin_43275277的博客


匈牙利算法-看这篇绝对就了!

05-31 阅读数 4195

本文讲述的是匈牙利算法,即图论中寻找最大匹配的算法,暂不考虑加权的最大匹配(用KM算法实现),文章整体结构如下:基础概念介绍 算法的实现好的,开始!一.部分基础概念的介绍我会严格介绍其定义,并同时用自... 博文 来自: 夜阑听风

Android基础:Fragment,看这篇就

02-12 阅读数 55

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~由天天P图攻城狮发布在云+社区作者简介:damonxia(夏正冬),天天P图Android工程师下文中Demo的源代码地址:https://git... 博文 来自: weixin_34160277的博客

Zookeeper 入门,看这篇就

01-16 阅读数 464

Zookeeper简介与集群配置【Storm的各个组件间是通过这个组件进行通信】简介:Zookeeper是一个开源的分布式协调服务的框架,使各个机器进行之间进行通信1.1核心功能:文件系统通知机制文件... 博文 来自: 留歌__36的博客

入门 Webpack,看这篇就

04-03 阅读数 76

转载原文:https://segmentfault.com/a/1190000006178770仔细看了一遍,值得推荐,跟文章名称很符合:入门Webpack,看这篇就够了... 博文 来自: 零度的博客专栏

Android上传图片到七牛云看这篇就

08-13 阅读数 6894

在开发中遇到需要将用户的头像上传到七牛云,折腾了好一阵子才搞定,于是,决定写篇博客记录一下,有这方面需求的开发者,可以作为参考。... 博文 来自: fnhfire_7030的博客


从 aar 到 Jcenter 看这篇就

12-15 阅读数 956

eclipse时代的项目依赖通常是jar包依赖和Android库项目依赖。AndroidStudio时代提供了一个新的依赖方式aar。aar结合了以上两种方式的优点可以将资源文件和代码打入这个aar文... 博文 来自: AMing_阿明

安卓学习AIDL这篇就

05-18 阅读数 464

这段时间一直在学习安卓IPC,RPC记录下我学习心得和笔记,最全的使用方式和原理分析慢慢更新…基本使用原理分析parcel和parcelableAIDL简单分析binder共享内存参考文献1.基本使用... 博文 来自: 范明毅的个人博客

Docker入门,看这篇就

05-24 阅读数 77

Docker是怎么出现的关于Docker的发展史,本文就不做介绍,有兴趣的小伙伴们可以查看这篇文章,挺有意思的。http://www.oschina.net/news/5...什么是Docker?  ... 博文 来自: weixin_34194551的博客

如何规范测试流程,看这篇就了~

12-03 阅读数 648

什么是软件测试?利用人工或自动化的手段对软件进行测试,找出bug,从而降低商业风险;正向思维:软件测试是一系列的活动来验证程序是否正常运行,以及是否达到了用户预期的需求;逆向思维:软件测试是为了发现程... 博文 来自: 首席填坑官∙苏南的专栏

搞懂YOLO v1看这篇就

03-21 阅读数 3395

YOLO是一个实时的目标检测系统,本篇文章将带你一步步理解其中的原理,全面细致,小白也能看得懂~... 博文 来自: Antrn的博客

分类专栏

  • 史上最好oracle数据库教程 17篇
  • 蓝桥杯竞赛训练习题 92篇
  • SpringMvc实战教程 11篇
  • 带你进入shiro的世界 4篇
  • java工程师linux命令大全_第1张图片 ===== java基础 ===== 114篇
  • java工程师linux命令大全_第2张图片 √ 深入理解多线程与并发 8篇
  • java工程师linux命令大全_第3张图片 √ 深入理解设计模式 5篇
  • java工程师linux命令大全_第4张图片 √ jdk源码深入分析
  • java工程师linux命令大全_第5张图片 √ 深入理解jvm
  • java工程师linux命令大全_第6张图片 √ tomcat深入学习 6篇
  • java工程师linux命令大全_第7张图片 √ springboot 11篇
  • java工程师linux命令大全_第8张图片 √ springcloud
  • java工程师linux命令大全_第9张图片 √ spring security
  • java工程师linux命令大全_第10张图片 √ java ee 7篇
  • java工程师linux命令大全_第11张图片 √ stucts 19篇
  • java工程师linux命令大全_第12张图片 √ hibernate 11篇
  • java工程师linux命令大全_第13张图片 √ spring 22篇
  • java工程师linux命令大全_第14张图片 √ springmvc 13篇
  • java工程师linux命令大全_第15张图片 √ mybatis 7篇
  • java工程师linux命令大全_第16张图片 √ activiti 9篇
  • java工程师linux命令大全_第17张图片 √ dubbo 4篇
  • java工程师linux命令大全_第18张图片 √ webService 3篇
  • java工程师linux命令大全_第19张图片 √ shiro 7篇
  • java工程师linux命令大全_第20张图片 √ lucene 7篇
  • java工程师linux命令大全_第21张图片 √ freemaker 1篇
  • java工程师linux命令大全_第22张图片 √ junit 3篇
  • java工程师linux命令大全_第23张图片 √ 项目功能总结 16篇
  • java工程师linux命令大全_第24张图片 √ jsoup
  • java工程师linux命令大全_第25张图片 ===== 游戏前端 ===== 1篇
  • java工程师linux命令大全_第26张图片 √ vue 1篇
  • java工程师linux命令大全_第27张图片 √ bootstrap
  • java工程师linux命令大全_第28张图片 √ angular
  • java工程师linux命令大全_第29张图片 √ node.js
  • java工程师linux命令大全_第30张图片 √ react
  • java工程师linux命令大全_第31张图片 √ html 2篇
  • java工程师linux命令大全_第32张图片 √ css 4篇
  • java工程师linux命令大全_第33张图片 √ jquery 2篇
  • java工程师linux命令大全_第34张图片 √ js 5篇
  • java工程师linux命令大全_第35张图片 √ ajax
  • java工程师linux命令大全_第36张图片 √ xml 5篇
  • java工程师linux命令大全_第37张图片 ===== databases ===== 1篇
  • java工程师linux命令大全_第38张图片 √ sqlserver 1篇
  • java工程师linux命令大全_第39张图片 √ mysql 9篇
  • java工程师linux命令大全_第40张图片 √ oracle 21篇
  • java工程师linux命令大全_第41张图片 ===== 你好啊,生活 ===== 5篇
  • java工程师linux命令大全_第42张图片 √ 职业生涯 6篇
  • java工程师linux命令大全_第43张图片 ===== 戏耍算法 ===== 1篇
  • java工程师linux命令大全_第44张图片 √ 365算法每日学打卡计划 6篇
  • java工程师linux命令大全_第45张图片 √ 数据结构与算法 15篇
  • java工程师linux命令大全_第46张图片 √ 蓝桥杯-算法入门 4篇
  • java工程师linux命令大全_第47张图片 √ 蓝桥杯-算法训练 28篇
  • java工程师linux命令大全_第48张图片 √ 蓝桥杯-算法提高 14篇
  • java工程师linux命令大全_第49张图片 √ 蓝桥杯-真题练习 13篇
  • java工程师linux命令大全_第50张图片 √ 蓝桥杯-决赛真题练习 17篇
  • java工程师linux命令大全_第51张图片 √ 蓝桥杯练习系统(c/c++版) 17篇
  • java工程师linux命令大全_第52张图片 ===== 项目管理 ===== 23篇
  • java工程师linux命令大全_第53张图片 √ svn 10篇
  • java工程师linux命令大全_第54张图片 √ git 10篇
  • java工程师linux命令大全_第55张图片 ===== android ===== 5篇
  • java工程师linux命令大全_第56张图片 ===== c/c++ ===== 5篇
  • java工程师linux命令大全_第57张图片 ===== linux ===== 2篇
  • java工程师linux命令大全_第58张图片 √ 阿里云 8篇
  • java工程师linux命令大全_第59张图片 √ 面试不败计划 12篇
  • java工程师linux命令大全_第60张图片 √ 微信开发 6篇
  • java工程师linux命令大全_第61张图片 ===== AI ===== 1篇
  • java工程师linux命令大全_第62张图片 √ python基础 18篇
  • java工程师linux命令大全_第63张图片 √ python数据处理 7篇
  • java工程师linux命令大全_第64张图片 docker 1篇
  • java工程师linux命令大全_第65张图片 √ zookeeper
  • java工程师linux命令大全_第66张图片 √ Java8 2篇
  • java工程师linux命令大全_第67张图片 √ Exception 1篇
  • java工程师linux命令大全_第68张图片 √ 分布式

展开

	

			

你可能感兴趣的:(linux)