目录
一、目录层次
1、常见目录
一级目录 | 功能(作用) |
/bin/ | 存放系统命令,普通用户和root都可以执行。放在/bin下的命令在单用户模式下也可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存的位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在/home/下建立一个和用户名相同的目录。如用户liming的主目录就是在/home/liming |
/lib/ | 系统调用的函数库保存位置 |
/media/ | 挂载目录。系统建议用来挂在媒体设备,如软盘和光盘 |
/mnt/ | 挂载目录。早期Linux中只有一个挂在目录,并没有细分。系统建议这个目录用来挂载额外的设备,如U盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂在目录。系统建议用来挂载NFS服务的共享目录。虽然系统准备了三个默认挂在目录/media、/mnt、/misc/,但是到底在哪个目录中挂载什么设备可以有管理员自己决定。例如,笔者在接触Linux的时候,默认挂载目录只有/mnt/,所以弄成了在/mnt/下建立不同目录挂载不同设备的习惯,如/mnt/cdrom/挂载光盘/、/mnt/usb/挂载U盘,都是可以的 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可安装到这个目录中,不过笔者还是习惯把软件放到/usr/.local/目录中,也就是说,/usr.local/目录也可以用来安装软件 |
/root/ | root的主目录。普通用户主目录在/home/下,root主目录在”/“下 |
/sbin/ | 保存于系统环境设置相关的命令,只有root可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不保存重要数据,最好每次开机都把该目录清空 |
2、根目录
根目录(/):是Linux文件系统的组织者,也是最上级的领导者;Linux的文件系统的入口就是根目录“/”,所有的目录、文件、设备也都置于根目录“/”之下。linux的目录都是从根开始,整个目录结构是一棵倒立的树结构,“/”是树根,其中的子文件夹就是树干和树叶。
根目录(/)下有如下目录文件:
目录/文件名 | 功能 |
bin | 存放二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件——命令 |
sbin | 管理员可以使用的二进制文件——命令ls、cd、useradd等 |
boot | 系统内核、启动文件 |
dev | 硬件文件(黄色) |
etc | 系统默认配置文件,等同于Windows的注册表,一般都是文本文件 |
run | 运行的内存中文件,运行中的文件 |
tmp | 临时文件 -t 特殊权限 |
usr | 应用程序和操作系统相关的文件 |
var/log | 日志文件,数据变化的 |
home | 普通用户的家目录的上级目录,如用户liming,在/home/目录下/home/liming |
root | 系统管理员的家目录 |
lib | 动态库文件,类似于Windows的dll文件 |
proc | 主要保存系统的内核、进程、外部设备状态和网络状态等 |
media | 可移动设别 |
mnt | 默认挂载点 |
opt | 第三方应用程序安装所在目录 |
二、查看文件内容
1、常见的七种Linux文件
-:普通文件,包括纯文本文件、二进制文件、各种压缩文件等
d:目录文件(directory)
b:块设备文件(block),就是保存大块数据的设备,如硬盘
c:字符设备文件(character),这些文件通常隐藏在/dev/目录下,当进行设别读取或外设交互时才会被使用
l:符号链接文件(link)
p:管道文件(pipe),主要用于进程间同行单向传输一个发一个传输管道文件
s:套接字文件(socket),套接字文件一般隐藏在/var/run/目录下,用于进程的网络通信
2、显示命令
cat
格式:cat [选项] 文件名
选项:-n -b -s -A
-n:显示行号,包括空行
-b:跳过空行标号
-s:将所有的连续的多个空行替换成一个空行(压缩成一个空行)
-A:显示隐藏字符
tac 反方向查看
more
格式:more [选项] 文件名
基本操作
-
空格下一行 到文末后自动退出
-
b上一行
-
enter一行一行滚动
-
自动退出
-
q退出
选项如下:
less
格式:less [选项] 文件名
-
可以使用/ 查找 n向下 N向上查找
-
Page Up 向上翻页,Page Down 向下翻页
-
其余参考more
head/tail
head -n 具体数字 文件名(不加数字,默认开头十行)
tail -n 具体数字 文件名(不加数字,默认结尾十行
tail -f 具体数字 文件名 实时跟踪最后十行
tr 基本功能转换
格式:tr [选项] SET1 [SET2]
SET是一组字符串,一般都可按照字面含义理解
选项:-d 删除 -s 压缩
-d:删除
-s:压缩
wc
格式:wc [选项] 目标文件
统计列数,wc本身就是参数word
选项:-l -w -c
-l:统计行数
-w:统计单词数
-c:统计字节数
grep 过滤
格式:grep [选项]… 查找条件 目标文件
-
-i:查找时忽略大小写
-
-v:反向查找,输出与查找条件不相符的行
-
-o 只显示匹配项
-
-f 对比两个文件的相同行
-
-c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)
基本格式
-
要查找的字符串以双引号括起来单引号也可以
-
“^……”表示以……开头,“……$”表示以……结尾
-
“^$”表示空行
paste 合并文件
-d 指定分隔符
-s 平行输出
split 分割文件
split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]
最常用的选项:
-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-<行数>或-l<行数>:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
3、压缩 解压缩
gzip bzip2
gzip [-9] 文件名… 提高压缩比例,但是文件较大时效率会低 bzip2 [-9] 文件名... gzip -d .gz格式的压缩文件 d就是解压 bzip2 -d .bz2格式的压缩文件
9代表压缩比率,9最大1最小,使用以上两种压缩源文件不存在了
gzip的压缩率 要高于bzip2
tar 归档
tar [选项] ... 归档文件名 源文件或目录
tar [选项] ... 归档文件名 [-C 目标目录]
选项:
-
-c:创建(Create).tar 格式的包文件
-
-x:解开.tar 格式的包文件
-
-C:解压时指定释放的目标文件夹
-
-f:表示使用归档文件(一般都要带上表示使用tar)
-
-p:打包时保留文件及目录的权限
-
-P:打包时保留文件及目录的绝对径
-
-t:列表查看包内的文件(要和f一起使用)
-
-v:输出详细信息(Verbose)
-
-j:调用 bzip2 程序进行压缩或解压
-
-z:调用 gzip 程序进行压缩或解压
一般压缩时,联合使用以上的多个选项如 zcvf 表示将文件以gzip格式压缩,jcvf 表示将文件以bzip2格式压缩,但是解压时,可以直接使用 xf 两个选项联合,可解压以上两种格式的压缩文件。
在使用以上选项时可以不加“ - ”,如果加“ - ” ,那么联合使用多个选项时,必须将 f 选项放在最后,非则会报错。
解压缩使用 xf 两个选项的联合
三、vi编辑器
linux中常见的 文本 nano ,gedit,vi,推荐使用 Vi 文本编辑器,原因如下:
-
几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
-
Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计 接口
vim是vi的升级版
基本格式:vim [选项] 文件
vim 文件名不存在 是新建
vim 文件名存在 就是修改
如果在安装Linux系统时,是最小化安装,则系统中是没有安装vim的需要手动安装;
使用yum install vim -y 命令安装。
1、vim常用选项
+# 打开文件后,让光标处于第几行的行首,+默认行尾
! 打开上一次的文件
2、vim的三种模式
三种常见模式:
-
命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
-
插入(Insert)或编辑模式:用于修改文本
-
扩展命令(extended command )或末行模式:保存,退出等搜索替代
命令模式-------->插入模式
有以下几种方式:
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
命令模式
命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
命令模式中的一些常用命令:
退出VIM的命令
ZZ 保存退出
ZQ 不保存退出
光标跳转
h:向左; l:向右; j:向下; k:向上
单词间跳转
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
当前页跳转:
H:页首
M:页中间行
L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
行首行尾跳转:
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
行间移动:
G 跳转至页末行
gg 跳转至页首行
字符编辑:
x 剪切光标处的字符
#x 从光标处开始剪切,向后剪切#个(#是数字)
~ 转换大小写
J 删除当前行后的换行符
替换命令(replace)
r 只替换光标所在处的一个字符
R 切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
删除命令(delete)
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw 下一个单词的词首
de 当前或下一个单词的词尾
db 当前或上一个单词的词首
dd 剪切光标所在的行
D 从当前光标位置一直删除到行尾,等同于d$
复制命令(yank)
y 复制,行为相似于d命令
y$ 复制到行尾
y0 复制到行首
y^ 复制到非空行首
ye 当前或下一个单词的词尾
yw 下一个单词的词首
yb 当前或上一个单词的词首
yy 复制一整行
Y 复制多个整行
粘贴命令(paste)
p(小p) 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P(大P) 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
撤消更改
u 撤销最近的更改,相当于windows中ctrl+z
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
Ctrl-r 重做最后的“撤消”更改,相当于windows中crtl+y
. 重复前一个操作
#. 重复前一个操作#次
输入模式
输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。
切入到输入模式:
i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I 在当前光标所在行的行首输入
a 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
A 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
末行模式
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
基础命令:
# #具体第#行,例如2表示第2行
#,# #从左侧#表示起始行,到右侧#表示结尾行
#,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
. #当前行
$ #最后一行
.,$-1 #当前行到倒数第二行
% #全文, 相当于1,$
/pattern/ #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/ #从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有
查找并替换
格式:范围 s/要查找的内容/替换的内容/g
说明:
要查找的内容:可使用基本正则表达式模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;
还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
c #全局替换,每次替换前询问
显示行号 set nu 取消显示 set nonu
加密 set key=密码 取消加密 set key=空
可视化模式
在末行有”-- VISUAL -- “指示,表示在可视化模式
允许选择的文本块
-
v 面向字符,-- VISUAL --
-
V 面向整行,-- VISUAL LINE --
-
ctrl-v 面向块,-- VISUAL BLOCK --