操作Linux基础必会知识和命令
一、目录层次
"/"根是所有目录的唯一起点
| 一级目录 | 功能(作用) |
|---|---|
| /bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
| /boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
| /dev/ | 设备文件保存位置 |
| /etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
| /home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
| /lib/ | 系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用) |
| /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/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
根"/"目录就相当于Windows10内的c盘一样,而Linux只有这一个唯一的盘。
-
bin (sbin) 二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件
-
sbin 管理员可使用的二进制文件
-
boot 系统内核、启动文件
-
dev 硬件文件(黄色)
-
etc 配置文件等同于windows 注册表,一般都是文本文件
-
run 运行的内存中文件
-
tmp 临时文件 -t
-
usr应用程序和操作系统相关的文件
-
var日志文件,数据变化的
-
home 普通用户的家目录的上级目录zhangsan目录会在 home
-
root系统管理员的目录上 /root
-
lib 动态库文件 类似于windows 的dll文件
-
proc 主要保存系统的内核、进程、外部设备状态和网络状态等
-
media 可移动设备
-
mnt 默认挂载点
-
opt 第三方应用程序安装所在目录程序
二、文件类型
| 第一个字符 | 文件类型 |
|---|---|
| - | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 |
| d | 目录,类似 Windows 系统中的文件夹。 |
| b | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。 |
| c | 字符设备文件,例如键盘、鼠标等。 |
| s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。 |
| p | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。 |
| l | 链接文件,类似 Windows 系统中的快捷方式。 |
-
d 目录文件directory
-
b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
-
c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用; 一个字符一个字符读取 /dev/zero (/dev/null)
-
l 符号链接文件link
-
p 管道文件pipe 主要用于进程间通信单向传输, 一个只读、另一个只写 ,其主要作用是解决多个程序同时存取一个文件所造成的错误。
-
s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。(可以双向)
-
-普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等
三、 颜色表示的文件类型
- 黑色 普通文件
- 绿色 可执行文件
- 黄色 块设备文件
- 红色 压缩包
- 蓝色 文件夹
- 天蓝色 链接文件(快捷方式)
[root@localhost ~]# vim /etc/DIR_COLORS //颜色在这里显示
Linux命令
查找命令
pwd(print work directory) 打印当前目录
[root@localhost /]# cd /zhubao
[root@localhost zhubao]# ll /zhubao
总用量 0
-rw-r--r--. 1 root root 0 3月 28 14:43 data
[root@localhost zhubao]# pwd -P //显示真实路径
/zhubao
cd(change directory)切换目录
| 命令 | 效果 |
|---|---|
| cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
| cd - | 到前一次目录 |
| 一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
| 两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
| “~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
| "."开头文件 | 表示隐藏文件 |
[root@localhost ~]# cd / //切换到根目录
[root@localhost /]# cd ~ //切换到当前用户家目录
[root@localhost ~]# cd - //切换到前一次目录
/
ls (list) 列出目录/文件的详细属性信息
在生产环境中要慎用该命令,生产环境中文件量过大会导致直接死机,一般来说都是配合通配符进行使用,单独使用要慎用。
命令格式:
ls [选项]... [参数]...
命令选项:
| 选项 | 说明 |
|---|---|
| -l | 以长格式显示文件和目录列表 ll=ls -l |
| -a | 显示全部包括隐藏文件 |
| -A | 显示全部文件或隐藏文件,但不包括 . 和.. |
| -d | 只显示当前目录 |
| -h | 友好显示文件大小 |
| -R | 递归显示该目录及该目录的子目录下的所有内容 |
| --color | 显示颜色 |
| -S | 按从大到小排序 |
| -i | 显示inode号 |
| -t | 根据文件创建时间进行排序,由新到旧,新建的排在前面 |
| -tr | 根据文件创建时间进行排序,由旧到新 |
常用搭配:
ls -a 以长格式显示目录下的全部文件,包括隐藏文件、. 和.. ,并友好显示文件大小。
ls -lh以长格式显示目录下的文件,根据文件创建时间进行排序,新建的排在后面,可直接写成ll。
通配符
通配符:(匹配文件的文件)
| 符号 | 效果 |
|---|---|
| ? | 匹配一个字符 f?.txt |
| * | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
| {1..10} | 1到10 |
| {a..z} | a b c ...z |
| {A..Z} | A B C .....Z |
| [123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
| [a-z]单个小写字母 | 范围需要注意 |
| [0-9]单个数字 | 匹配数字范围(0123456789) |
| \ | 转义符,表示原来的意思 |
| [[:lower:]] | 小写字母表示 a-z |
| [[:upper:]] | 大写字母表示 A-Z |
| [^zhou] | 匹配列表中的所有字符以外的字符 |
| [[:digit:]] | 任意数字,相当于0-9 |
| [[:alpha:]] | 任意字母 |
1.关于*号键的使用
[root@localhost boot]# ls ./*.img //查找带有.img结尾的文件
./initramfs-0-rescue-2a6bdb6541b948c18f677114baa0e324.img
./initramfs-3.10.0-693.el7.x86_64.img
./initramfs-3.10.0-693.el7.x86_64kdump.img
./initrd-plymouth.img
[root@localhost boot]# ls ./*a* //查找文件中带有字母a的文件
./initramfs-0-rescue-2a6bdb6541b948c18f677114baa0e324.img
./initramfs-3.10.0-693.el7.x86_64.img
./initramfs-3.10.0-693.el7.x86_64kdump.img
./System.map-3.10.0-693.el7.x86_64
2{a..z} 和 {A..Z},[a-z] 和 [A-Z],大小写字母对比
[root@localhost zhutou]# touch {a..z}.txt
[root@localhost zhutou]# touch {A..Z}.txt
[root@localhost zhutou]# ls
a.txt C.txt f.txt H.txt k.txt M.txt p.txt R.txt u.txt W.txt z.txt
A.txt d.txt F.txt i.txt K.txt n.txt P.txt s.txt U.txt x.txt Z.txt
b.txt D.txt g.txt I.txt l.txt N.txt q.txt S.txt v.txt X.txt
B.txt e.txt G.txt j.txt L.txt o.txt Q.txt t.txt V.txt y.txt
c.txt E.txt h.txt J.txt m.txt O.txt r.txt T.txt w.txt Y.txt
[root@localhost zhutou]# ls [zhu].txt //显示包含z h u四个字母的任意文件
h.txt u.txt z.txt
[root@localhost zhutou]# ls [c-f].txt //显示cC、dD、eE、f的文件不包括F
c.txt C.txt d.txt D.txt e.txt E.txt f.txt
[root@localhost zhutou]# ls {c..f}.txt //显示c到f的所有小写字母文件
c.txt d.txt e.txt f.txt
[root@localhost zhutou]# ls {C..F}.txt //显示C到F所有大写文件
C.txt D.txt E.txt F.txt
[root@localhost ~]# ls 1[[:lower:]]* //显示小写字母
1a1.txt 1e1.txt 1i1.txt 1m1.txt 1q1.txt 1u1.txt 1y1.txt
1b1.txt 1f1.txt 1j1.txt 1n1.txt 1r1.txt 1v1.txt 1z1.txt
[root@localhost ~]# ls 1[[:upper:]]* //显示大写字母
1A1.txt 1E1.txt 1I1.txt 1M1.txt 1Q1.txt 1U1.txt 1Y1.txt
3.使用{1..10}和[0-9],数字的匹配
[root@localhost zhutou]# touch zhu{1..9}.txt //创建数字包含1到9的文件
[root@localhost zhutou]# touch zhu{10..20}.txt //创建数字包含10到20的文件
[root@localhost zhutou]# ls
zhu10.txt zhu13.txt zhu16.txt zhu19.txt zhu2.txt zhu5.txt zhu8.txt
zhu11.txt zhu14.txt zhu17.txt zhu1.txt zhu3.txt zhu6.txt zhu9.txt
zhu12.txt zhu15.txt zhu18.txt zhu20.txt zhu4.txt zhu7.txt
[root@localhost zhutou]# ls zhu{1..9}.txt //显示文件名包含数字1到9的文件
zhu1.txt zhu3.txt zhu5.txt zhu7.txt zhu9.txt
zhu2.txt zhu4.txt zhu6.txt zhu8.txt
[root@localhost zhutou]# ls zhu[0-9][0-9].txt //两个[0-9]可以匹配双数
zhu10.txt zhu12.txt zhu14.txt zhu16.txt zhu18.txt zhu20.txt
zhu11.txt zhu13.txt zhu15.txt zhu17.txt zhu19.txt
alias别名命令
该命令只是临时修改命令的别名,当关机后别名会自动删除
- alias 命令别名 = ’命令‘
- unalias 别名命令 删除别名
- \加别名命令 (显示原始命令)
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost dev]# alias myls=ls -alh //若不加引号的话会导致1无法识别
-bash: alias: -alh: 未找到
#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls //如果想用命令原本命令就在前方加上转义符
[root@localhost dev]# unalias myvim //删除名称
[root@localhost dev]# myvim
bash: myvim: 未找到命令...
想要永久修改命令别名需要更改配置文件
- 在/etc/.bashrc 会影响全部
- /root/.bashrc只影响当前用户
命令执行顺序:别名命令>内部命令>缓存命令>外部命令
*在生产环境中要先查看有没有别人设的别名命令可以避坑
du --disk usage 统计目录或文件所占磁盘空间大小的命令
du [选项] [文件或者目录]
| 选项 | 说明 |
|---|---|
| -a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
| -h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
| -s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
| --max-depth=n (-d 1) | 最大显示到第n层 |
| --exclude | 不计入统计 |
需注意:
-
-a和-s不可同时使用。
-
du看到的不是文件的真实大小,而是该文件占用了磁盘的具体空间不满4k按4k,磁盘是一个块设备 一块等于4k。与ls -l不同,ll看到的是文件的真实大小。
-
问题:硬盘满了怎么处理 ,使用du命令查找,占用量较大的文件夹或文件,然后确认是垃圾或者无用文件可以删除。
Linux创建命令
创建需注意
-
文件名最长255个字节
-
包括路径在内文件名称最长4095个字节
-
除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引
号来引用(比如选项-r最好不要出现在文件名开头处)
mkdir(make direction)创建文件夹
-
mkdir -p 递归创建,如果初始文件夹不存在 ,会自动递归创建。
-
mkdir [选项] 目录位置及名称…
[root@localhost data]# mkdir a b c d //创建多个文件夹
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/cccc // 递归创建文件夹
[root@localhost data]# ls
a aaa b c d
[root@localhost data]# tree //tree可以更好的看清递归顺序
.
├── a
├── aaa
│ └── bbb
│ └── cccc
├── b
├── c
└── d
touch 创建文件
文件名已存在 刷新文件创建时间
文件名不存在 创建新文件
每个文件有三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
ln硬链接软链接的创建
- 硬链接:
硬链接是指多个文件共享同一个索引节点(inode),它们实际上指向同一块数据区域。当创建硬链接时,新文件和原始文件都指向相同的数据块,因此它们在内容上完全相同。
删除原始文件不会影响硬链接文件,因为它们共享相同的数据块。只有当所有硬链接和原始文件都被删除后,该数据块才会被释放。
注意事项:
- 硬链接只能对已存在的文件进行创建 。
- 不支持给目录创建硬链接;
- 不支持跨分区创建硬链接。
- 硬链接文件不占用存储空间。
- 修改源文件或者目标文件,对应另外一个文件也会发生相应修改。
- 删除源文件或者目标文件,对另外一个文件没有影响。
- 软链接:
软链接是一个特殊的文件,它包含了另一个文件的路径信息。当访问软链接时,系统会自动将其解析为原始文件的路径,并打开原始文件。
软链接类似于Windows系统中的快捷方式,它们允许跨文件系统或目录引用文件,并且可以链接到目录。
如果原始文件被删除或移动,软链接将失效,无法访问原始文件;而硬链接则不受影响。
总的来说,硬链接直接指向同一份数据,而软链接指向文件的路径。硬链接不能跨文件系统,而软链接可以。在使用时需要注意各自的特性和适用场景。
注意事项:
- 可对不存在的文件或目录创建软链接,可交叉文件系统。
- 删除源文件无法访问,再新建同名文件后依然可以访问
硬链接和软链接对比
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 本质是同一个文件 | 本质不是同一个文件 |
| inode(身份证号) | 相同 | 不同 |
| 连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
| 文件夹 | 不支持 | 支持 |
| 删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
| 文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
| 文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
硬链接、软链接创建
软链接创建:ln -s 绝对路径的源文件 软连接位置
硬链接创建:ls 绝对路径源文件 硬连接位置