linux 命令集锦
Posted 刘文巾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 命令集锦相关的知识,希望对你有一定的参考价值。
1 linux系统目录结构
ls /
linux根目录树状结构
bin | linux经常使用的命令 |
boot | 启动linux时使用的一些核心文件(包括一些连接文件&镜像文件) |
dev | linux的外部设备 |
home | 用户主目录 |
lib | 库,系统中基本的动态链接共享库,作用类似于xindows中的dll。 几乎所有的应用程序都需要用到这些库 |
lost+found | 一般情况下, 该目录为空,当系统非法关机后,里面就存放了一些文件 |
media | linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 |
2 linux文件基本属性
使用ll 或者 ls-l命令,可以显示一个文件的属性&文件所属的用户&组
第一个字符表示文件的属性
d | 目录 |
- | 文件 |
l | 连接文档 |
接下来的字符中,三个为一组,且均为rwx的参数组合(如果没有权限,那么出现-)从前到后分别是用户自己、用户所在的组,以及其他用户的权限
r | 可读 |
w | 可写 |
x | 可执行 |
2.2 更改文件属性的命令
2.2.1 chgrp
更改文件属组 (change group)
chgrp [-R] 属组名 文件名 (-R表示递归)
2.2.2 chown
更改文件属主,也可以同时更改文件属组(change owner)
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
2.2.3 chmod
更改文件的9个属性(change mode)
第一种方法:用数字进行设置 每三位一组,有这个权限就设置为1,没有这个人权限设置为0,三位三位的二进制转化成十进制的数
第二种方法:符号类型改变文件权限
chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限(用户本身可读可写可执行、同组用户可读可执行、其他用户可读)
chmod a-x test1 // 修改 test1 权限 (所有的权限都除去可执行)
3 linux文件与目录管理
3.1 绝对路径与相对路径
- 绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。- 相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
3.2 处理目录的常用命令
3.2.1 ls
列出目录
3.2.1.1 -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
3.2.1.2 -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
3.2.1.3 -l :长数据串列出,包含文件的属性与权限等等数据;(常用) 【加-h会更方便理解】
3.2.2 cd
切换目录
cd - 进入刚才的目录
3.2.3 pwd
显示目前所在目录
3.2.4 mkdir
创建新目录
3.2.4.1 -m :配置文件的权限。直接配置,不需要考虑默认权限
3.2.4.2 -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
3.2.5 rmdir
删除空的目录
- -p :连同上一级『空的』目录也一起删除
rmdir 仅能删除空的目录,我们可以使用 rm 命令来删除非空目录。
3.2.6 cp
复制
-r 递归
可以单独选定几个文件, cp 会默认最后一个选项是要复制去的文件夹. 比如下面把 file1copy 和 file2 复制去 folder1/
3.2.7 rm
移除文件 or 文件目录
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除
3.2.8 mv
移动文件 or 移动文件目录 or 文件重命名
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
3.2.8 touch
新建文件
3.3 文件内容查看
3.3.1 cat
从第一行开始显示文件内容
3.3.1.1 -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
3.3.1.2 -b、-n :列出行号(区别是前者中间的空格不算行号里面,后者中间的空格也算行号)
3.3.1.3 -E :将结尾的断行字节 $ 显示出来;
3.3.1.4 -T :将 [tab] 按键以 ^I 显示出来;
3.3.1.5 -v :列出一些看不出来的特殊字符
3.3.2 tac
cat倒着写,所以也是倒着读
3.3.3 more
一页一页翻动
在 more 这个程序的运行过程中,你有几个按键可以按的:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线pipeline无用。
3.3.4 less
比more更强大的一页一页翻动
less运行时可以输入的命令有:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关)
- q :离开 less 这个程序;
3.3.5 head
显示文件前面几行
默认的情况中,显示前面 10 行
head [-n number] 文件
3.3.6 tail
显示文件后面几行
默认的情况中,显示最后面 10 行
tail [-n number] 文件
3.3.7 nl
显示行号
选项与参数:
- -b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值); - -n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
- -n rn :行号在自己栏位的最右方显示,且不加 0 ;
- -n rz :行号在自己栏位的最右方显示,且加 0 ;
3.4 内容重定向
3.5 查看磁盘空间
3.5.1 df
df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
Filesystem:文件系统
Size: 分区大小
Used: 已使用容量
Avail: 还可以使用的容量
Use%: 已用百分比
Mounted on: 挂载点
选项与参数:
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统;
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘容量,而以 inode 的数量来显示(这里因为是windows系统,所以没有显示)
3.5.2 du
du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。
如果是文件夹的话,会先列出文件夹第一层目录下每个文件的大小,然后是这个文件夹的总大小(如果要是文件夹的所有信息的话 du -a
-h:以K,M,G为单位,提高信息的可读性。
-s:列出总量而已,而不列出每个各别的目录占用容量;
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
4 vim
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
4.1 vim的模式
vim一共三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
4.1.1 命令模式 command mode
用户刚刚启动vim的时候,进入的命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
命令模式常用命令
i | 切换到输入模式,以输入字符 |
x | 删除当前光标所在处的字符 |
: | 切换到底线命令模式 |
数字+上/下/左/右 | 上下左右移动数字格 |
ctrl+d | 屏幕向下移动半页 |
ctrl+u | 屏幕向上移动半页 |
数字+空格 | 向后面移动数字个空格的字符距离 |
数字+enter | 向下移动n行 |
0 | 移动到这一行的最前面 |
$ | 移动到这一行的最后面 |
H(大写) | 移动到这个屏幕最上方一行的第一个字符 |
M(大写) | 移动到这个屏幕中央的一行的第一个字符 |
L(大写) | 移动到这个屏幕最下方一行的第一个字符 |
G(大写) | 移动到这个文档的最后一行 |
数字+G | 移动到这个文档的第数字行 |
gg | 移动到这个文档的第一行 |
/word | 向光标之下寻找一个名称为“word”的字符串 |
?word | 向光标之上寻找一个名称为“word”的字符串 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。
举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
4.1.2 输入模式 insert mode
输入模式常用命令
字符 | 输入字符 |
enter | 换行 |
退格键 | 删除前一个字符 |
del | 删除后一个字符 |
方向键 | 上下左右 |
home/end | 移动光标到行首/行尾 |
page up/page down | 上下翻页 |
insert | 切换为输入/替换模式 |
以上的这些和一般的word是一样的
esc | 退出输入模式,切换为命令模式 |
4.1.3 底线命令模式 last line mode
底线命令模式常用命令
:q | 退出程序 |
:w | 保存文件 |
:wq | 储存后离开 |
:w [filename] | 将编辑的数据存储为另一个档案 |
: n1,n2 w[filename] | 将n1~n2行的内容存储为filename |
esc | 退出底线命令模式,进入命令模式 |
:q! | 强制离开,不存储档案 |
4.2 vim 三种模式的切换(总结)
4.3 一般模式(命令模式)可用的光标移动、复制粘贴、搜索替换
4.3.1 移动光标
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个文档的最后一行(常用) |
nG | n 为数字。移动到这个文档的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G (常用) |
n<Enter> | n 为数字。光标向下移动 n 行(常用) |
4.3.2 搜索替换
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! | |
:n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 (常用) |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 。且在取代前显示提示字符给用户确认 (confirm) 是否需要取代(常用) |
4.3.3 删除
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 那么命令就为『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除下面的 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
4.3.4 复制粘贴
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行。 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。 但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
4.3.5 复原和撤销
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
这个 u 与 [Ctrl]+r 是很常用的指令。一个是复原,另一个则是重做一次~ | |
. | 这就是小数点。 意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
4.4 一般模式(命令模式)切换到编辑模式(输入模式)的可用的按钮说明
i, I | 进入输入模式(Insert mode): I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) |
a, A | 进入输入模式(Insert mode): A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode): o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一。!(常用) |
r, R | 进入取代模式(Replace mode): R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 | |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
4.5 一般模式(命令模式)切换到指令行模式(底线命令模式)的可用的按钮说明
w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是取决于对该档案的权限 |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
ZZ | 大写的 Z 。如果修改过,保存当前文件,然后退出!效果等同于wq(保存并退出) |
ZQ | 不保存,强制退出。效果等同于 :q!。 |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w [filename] | 将 n1 到 n2 行的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
4.5.1 vim 环境的变更
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与 set nu 相反,为取消行号 |
5 进程类
5.1 查看程序xxx是否在执行
ps -ef|grep xxx
5.2 终止进程
kill -9 PID
-9表示强迫进程立即停止
5.2.1 批量终止进程
我现在运行了一堆 cmaes_p_delta,用’ps -ef|grep cmaes_p_delta',命令行上显示如下(其实不止。。。我失误了建了四百多个,电脑直接要崩了233):
ps -efww|grep cmaes_p_delta|cut -c 9-15|xargs kill -9
用上面这一行可以去除所有cmaes_p_delta产生的进程
—>“ps -efww”是查看所有进程的命令。这时检索出的进程将作为下一条命令“grep“的输入。
—>“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
—>“xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该命令。
—> “kill -9”会强行杀掉指定进程,这样就成功清除了同名进程。
6 后台运行
& 放在命令后面表示设置此进程为后台进程。
默认情况下,进程是前台进程,这时此进程(命令执行相当于本质是开启一个进程)就把Shell给占据了,我们无法进行其他操作。
对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。
7 压缩解压缩文档
7.1 压缩成tar.gz形式
tar -zcvf a.tar.gz b
#将文件b压缩成a.tar.gz的形式
7.2 解压缩tar.gz
tar zxvf a.tar.gz
7.3 压缩成tar.bz2格式的压缩包
tar -jcvf a.tar.bz2 b
#把b打包成a.tar.bz2的格式
7.4 解压tar.bz2格式
tar jxvf a.tar.bz2
7.5 压缩成zip格式
zip -q -r a.zip b
7.6 解压zip格式
unzip a.zip
以上是关于linux 命令集锦的主要内容,如果未能解决你的问题,请参考以下文章