学习笔记|Linux 命令
本文最后更新于:3 years ago
Linux 系统使用入门,本文系统地记录常见命令、服务。
零、背景
1.Linux 和 windows 不同
- linux严格区分大小写
- 所有内容以文件形式保存,包括硬件
- 没有任何扩展名区分文件类型
压缩包:.gz
.bz2
.tar.bz2
.tg2
二进制软件包:.rpm
网页文件:.html
.php
脚本文件:.sh
配置文件:.conf
- Window 下程序不能直接在linux中安装和运行
2.字符界面的优势
- 占用资源少
- 减少出错、被攻击的可能性
一、命令基本格式
1.登陆
1 |
|
- root: 用户名
- localhost: 主机名
- ~: 表示当前位置在
~
- #: 表示当前用户是超级用户,普通用户是 $
2.格式
命令 【选项】【参数】
注意:
- 个别命令使用不遵循格式
- 当有多个选项时,可以写在一起
- 简化选项与完整选项(-a 等于 -all)
3.命令类型
- 文件处理命令
- 文件搜索命令
- 帮助命令
- 压缩和解压缩命令
- 关机和重启命令
- 其他常用命令
二、目录处理命令
1.常用目录名
系统目录结构 | 备注 |
---|---|
/ | 根目录 |
/bin | 命令保存目录,Binary的缩写,存放普通用户可读取的命令,sbin存放超级用户能访问的命令 |
/boot | 启动目录,保存着启动相关的文件 |
/dev | 设备文件保存目录,Device(设备)的缩写,存放的是硬件、特殊命令 |
/etc | 配置文件保存目录,存放所有的系统管理所需要的配置文件和子目录 |
/home | 保存所有的用户主目录,一个用户一个目录 |
/lib | 动态链接共享库保存目录,数据库 |
/usr | 系统软件资源目录,Unix System Resources。 /usr/bin:存放用户可执行的二进制文件 /usr/sbin:存放系统管理员可执行的二进制文件 /usr/lib:存放共享库文件 /usr/local:存放用户自己编译安装的软件。桌面快捷方式会出现在 /usr/local/share/applications。 /usr/share:存放共享数据,如帮助文档、图标等。 |
/opt | 用于存放第三方厂商开发的程序,所以取名为option,意为"选装"。 |
/mnt | 系统挂载目录。需要用户手动挂载 |
/media | 用户临时挂载目录。系统可以识别设备并自动挂载 |
/sys | 内存的挂载点,不能操作 |
/proc | 虚拟目录,是系统内存的映射。该目录的内容不在硬盘上,而在内存中。我们可以访问该目录来获取系统信息 |
/tmp | 临时目录 |
/var | 系统相关文档内容 |
PS: 为什么 / 和 /usr 下有相同的目录?
因为一开始使用一块盘,后来大小不够,加了一块盘,并挂载在 /usr 上。两块盘的目录结构完全相同,第一块盘的目录(/bin, /sbin, /lib, /tmp…)都在/usr目录下重新出现一次。
2.文件的颜色
白色 | 普通文件 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
青色 | 链接文件 |
黄色 | 设备文件(block块、char字符、fifo管道) |
灰色 | 其他文件 |
3.查询目录中的内容 ls
存放在 /bin/ls。
ls【选项】【文件或目录】
1 |
|
选项 | 备注 |
---|---|
-a | 显示所有文件、包括隐藏文件 |
-l | 显示详细信息【 ls -l 简写成 ll 】 |
-d | 查看目录属性 |
-h | 人性化显示文件大小 |
-i | 显示文件索引节点号(inode) |
-t | 按时间排序(最近时间在最上面) |
1 |
|
- drwxr-xr-x:
d
rwx
r-x
r-x
d
:表类型,-是文件,d是目录,l是软连接文件,另外有:块设备文件(b)、字符设备文件(c)、套接字文件(s)、管道文件(p)rwx
:前三个是 uers所有者r-x
:中间三个是 group所属组r-x
:后面三个是 other其他人- r是read,w是write,x是execute执行。
- 5:引用计数,默认是 1,创建一个硬链接,加 1。
- root1:所有者
- root:所属组
- 160:字节大小
- 9 19 17:10 :修改时间为9月18日 17:10
- java:文件名
4.建立目录 mkdir
mkdir【目录名】:make directories(目录)
1 |
|
5.切换所在目录 cd
cd【目录名】
简化操作 | 备注 |
---|---|
cd ~ | 进入home目录 |
cd | 进入home目录 |
cd - | 进入上次目录 |
cd … | 进入上级目录 |
. | 表示当前目录 |
**相对路径:**从当前目录开始 | |
**绝对路径:**从根目录开始 |
6.查询目录位置 pwd
pwd:print working directory
7.删除空目录 rmdir
rmdir:remove empty directories
注:只能删除空目录,非空目录不能删除
8.删除文件或目录 rm
rm:remove
1 |
|
9.显示目录结构 tree
查看当前目录的一级目录结构:
1 |
|
打印完整路径,便于查找:
1 |
|
三、文件处理命令
1.复制命令 cp
cp【选项】【原文件名或目录名】【目标目录】:copy
选项 | 备注 |
---|---|
-r | 递归复制,复制目录,不加 -r 复制文件 |
-p | 连带文件属性复制 |
-d | 若源文件是链接文件,则复制链接属性 |
-a | 相当于 -pdr 【所有都一样,包括时间】 |
1 |
|
注意:拷贝文件时,
- 如果存在 2.txt,则覆盖 2.txt 的内容;
- 如果不存在 2.txt,拷贝并命名为 2.txt。
1 |
|
注意:拷贝目录时,
- 如果存在 tmp,则将 my_dir 拷贝一份,并放入 tmp 文件夹中;
- 如果不存在 tmp,则将 my_dir 拷贝一份,并命名为 tmp。
1 |
|
2.剪切命令 mv
mv【源文件或目录】【目标目录】
1 |
|
3.创建文件 touch
- 如果文件存在,修改文件修改时间。(不报错)
- 如果文件不存在,创建文件。
1 |
|
4.查看文件 cat
当文件过长,在终端上无法全部显示。(因为终端上不能往上翻。)
1 |
|
PS: 使用 cat *
查看当前目录的所有文件内容时,无法分清是哪个文件的内容。使用以下命令即可在文件内容前,显示文件名。
1 |
|
5.查看文件 more
- 回车键:往下翻一行
- 空格键:往下翻一页
- q键:退出
缺点:翻完不能返回上面。
1 |
|
6.查看文件 less
- 回车键(ctrl + n)(↓):往下翻一行
- ctrl + p (↑):往上翻一行
- 空格键(ctrl + f):往下翻一页
- ctrl + b:往上翻一页
- q键:退出
1 |
|
7.文件前几行 head
1 |
|
8.文件后几行 tail
1 |
|
9.统计命令 wc
- 统计输入的行数、单词数、字符数。
1 |
|
- 统计文件的行数、单词数、字符数。
1 |
|
- 好用!
wc 执行 `` 中的内容。【不是单引号!是 反撇!】
1 |
|
10.查看二进制文件 od
-t
:指定数据的显示格式。
参数 | 含义 |
---|---|
c | ASCII字符 |
d | 有符号的十进制数 |
f | 浮点数 |
o | 八进制数 |
u | 无符号十进制数 |
x | 十六进制 |
1 |
|
11.查看目录大小 du
1 |
|
-h
:human-readable,print sizes in human readable format (e.g., 1K 234M 2G)
12.查看磁盘使用情况 df
1 |
|
13.修改文件权限 chmod
chmod
:change file modes or Access Control Lists。
- chmod 【who】【+|-|=】【mode】 【文件名】
1 |
|
who | 含义 |
---|---|
a | 所有人 |
u | 文件所有者 |
g | 文件所属组 |
o | 其他人 |
- chmod 【+|-|空】【数字】 【文件名】
1 |
|
数字 | 权限 |
---|---|
4 | r |
2 | w |
1 | x |
PS:目录必须有执行权限,不然打不开。
14.修改文件所有者和所属组 chown、chgrp
chown
: - change file owner and group
chgrp
: - change group ownership文件所有者不一定在文件所属组中。
- chown 【新的所有者】 【文件名】
1 |
|
- chown 【新的所有者】:【新的所属组】 【文件名】
1 |
|
- chgrp 【新的所属组】 【文件名】
1 |
|
四、链接命令
ln【选项】【源文件】【目标文件】
命令 | 备注 |
---|---|
ln | 创建硬链接 |
ln -s | 创建软链接 |
- 硬链接特点
相当于备份功能,源文件和硬连接文件都指向内存上的同一个储存块。
当源文件被删,硬链接文件依然可以访问内存上的储存块。
当源文件和所有硬链接文件都被删除,这块内存才会被释放。
- 拥有相同的 i节点和储存block块,可以看成是同一个文件。
- 只能通过 i节点识别。
- 不能跨分区。
- 不能针对目录使用。
- 软链接特点
- 类似windows快捷方式,源文件删除,软链接文件无法访问。
- 软链接拥有自己的 i节点和block块,数据块存的是原文件的 i节点。
- 软链接权限由原链接控制它。
- 创建软连接时,要使用源文件的绝对路径,否则移动软连接,将找不到文件。
PS:软链接文件的大小为 源文件的路径 的整个字符串的字节大小。
1 |
|
五、搜索命令
1.文件搜索命令 locate
locate 【文件名】
在后台数据库中按文件名搜索,搜索速度更快(数据库不实时更新,一天更新一次)。
/var/lib/mlocate/mlocate.db
是 locate 命令搜索的数据库。(也可能是 slocate.db,不同版本不同。)
命令需要安装并更新数据库 mlocate.db:
1 |
|
使用:
1 |
|
配置文件 \etc\update.conf
(解决问题:为什么不搜索 /tmp 目录?):
1 |
|
2.命令搜索命令 whereis、which
which
可以查找别名,whereis
不可以。
(1)whereis 【命令名】
搜素命令所在路径、及帮助文档所在的位置。
1 |
|
选项 | 备注 |
---|---|
-b | 只查找可执行命令 |
-m | 只查找帮助文件 |
(2)which 【命令名】
查找命令所在路径、及别名。
1 |
|
(3)$PATH
whereis
、which
命令在环境变量 $PATH
中搜索。
1 |
|
3.文件搜索命令 find
避免大范围搜索,会非常耗费系统资源。若负载过大,容易宕机。
(1)find 【搜索范围】【搜索条件】
1 |
|
通配符 | 备注 |
---|---|
* | 匹配任意内容 |
? | 匹配任意一个字符 |
[] | 匹配任意一个中括号内的字符 |
搜索条件 | 备注 |
---|---|
-name | 名称 |
-iname | 名称(不区分大小写) |
-user | 所有者 |
-nouser | 没有所有者 —> 垃圾文件 |
(2)find 【搜索范围】【时间】
1 |
|
时间选项 | 备注 |
---|---|
-10 | 10内的修改文件 |
10 | 10天当天修改文件 |
+10 | 10天前修改文件 |
搜索条件 | 备注 |
---|---|
-atime | 文件访问时间 |
-ctime | 改变文件属性的时间 |
-mtime | 修改文件内容的时间 |
(3)find 【搜索范围】【大小】
1 |
|
大小(不可以是小数)(小k 和 大M) | 备注 |
---|---|
-2k | < 2k 的文件 |
2k | == 2k 的文件 |
+2k | > 2k 的文件 |
-20M | < 20M 的文件 |
(4)find 【搜索范围】【 i 节点】
1 |
|
(5)find【搜索范围】【多个条件】
1 |
|
逻辑 | 备注 |
---|---|
-a | 与and |
-o | 或or |
(6)find 【搜索范围】【条件】-exec 【命令2】{} ;
把搜索到的结果,交给 命令2 执行。
⚠️注意:{} 和 \ 之间有空格;结尾有分号。
1 |
|
(7)find 【搜索范围】 【文件类型】
1 |
|
搜索条件 | 含义 |
---|---|
-type | 类型 |
字母 | 含义 |
---|---|
f | 文件 |
d | 目录 |
l | 软连接文件 |
b | 块设备文件 |
c | 字符设备文件 |
s | 套接字文件 |
p | 管道文件 |
4.字符串搜索命令 grep
在文件中匹配符合条件的字符串。
grep 【选项】字符串 文件名
1 |
|
选项 | 备注 |
---|---|
-i | 忽略大小写 |
-v | 排除指定字符 |
-n | 显示原文中的行数 |
-H | 搜索结果前打印文件名 |
-h | 搜索结果前不打印文件名 |
- 在多个文件中查找
1 |
|
-v
排除指定字符
1 |
|
PS:待搜索的内容中包含特殊字符,需要转义。
除了上述搜索文件的方式还可以使用管道。
1 |
|
有关 grep 和正则表达的应用,可以跳转 shell 的正则表达式部分。
六、帮助命令
1.man
manual
获取指令命令的帮助
1 |
|
/-d
定位到选项为 -d 的位置。n
向下翻。- man 的级别 1~9。
级别 | 内容 |
---|---|
1 | 查看命令的帮助 |
2 | 查看别内核调用的函数的帮助 |
3 | 查看函数和函数库的帮助 |
4 | 查看特殊文件的帮助 |
5 | 查看配置文件的帮助 |
6 | 查看游戏的帮助 |
7 | 查看其他杂项的帮助 |
8 | 查看系统管理员可用命令的帮助 |
9 | 查看内核相关文件的帮助 |
2.help
- 【外部命令】–help
1 |
|
- help 【内部命令】
1 |
|
PS:如何判断是否是 shell 的内部命令?
- tpye 查看命令是内部命令还是外部命令
1 |
|
3.info
超详细的帮助文档
选项 | 备注 |
---|---|
-回车 | 进入子帮助页面(带*号标记) |
-u | 进入上一层页面 |
-n | 进入下一个帮助小节 |
-p | 进入上一个帮助小节 |
-q | 退出 |
七、压缩与解压缩命令
常用的压缩格式:zip、gz、bz2、tar.gz、tar.bz2。
总结表:
zip
.zip
选项 | 含义 |
---|---|
-r | 压缩目录 |
-d | 指定压缩位置 |
gzip
.gz
选项 | 含义 |
---|---|
-r | 压缩目录下的文件 |
-c | 将源文件写入压缩包,保留源文件 |
-d | 解压缩 |
bzip2
.bz2
选项 | 含义 |
---|---|
-k | 压缩之后,保留源文件 |
-d | 解压缩 |
tar
.tar、.tar.gz、.tar.bz2
选项 | 含义 |
---|---|
-c(小写) | 压缩 |
-C(大写) | 指定解压缩位置 |
-v | 显示过程 |
-f | 指定压缩文件 |
-x | 解压缩 |
-t | 只查看内容,不解压 |
无选项 | 压缩成 .tar 格式 |
-z | 压缩成 .tar.gz 格式 |
-j | 压缩成 .tar.bz2 格式 |
1.zip
(1)zip 【压缩后文件名】【源文件】
1 |
|
(2)zip -r 【压缩后的文件名】【源目录】
(3)unzip 【压缩文件】
解压缩。
1 |
|
(4)unzip -d 【解压缩的路径】 【压缩文件】
1 |
|
2.gzip
(1)gzip 【源文件】
压缩为 .gz 格式的文件,源文件消失。
1 |
|
(2)gzip -c 【源文件】> 【压缩文件】
压缩为 .gz 格式的文件,源文件保留。
1 |
|
说明:
-c
:是将文件打印出来。
1 |
|
(3)gzip -r 【源目录】
压缩目录下所有文件,不压缩目录。
(4)gzip -d 【压缩文件】
解压缩文件,不保留源文件。
1 |
|
(5)gunzip -d 【压缩文件】
解压缩文件,不保留源文件。
1 |
|
(6)gunzip -r 【含有 .gz压缩文件 的目录】
解压缩 abc 目录中的压缩文件,不保留源文件。
1 |
|
3.bzip2
(1)bzip2 【源文件】
压缩为 .bz2 格式文件,不保留源文件。
1 |
|
(2)bzip2 -k 【源文件】
压缩为 .bz2 格式文件,保留源文件。
k:keep
1 |
|
(3)bzip2 -d 【压缩文件】
解压缩,-k保留源压缩文件。
1 |
|
(4)bunzip2 【压缩文件】
1 |
|
4.tar
(1)tar -cvf 【打包后的文件名】 【源文件】
压缩为 .tar 格式的文件,源文件保留。
1 |
|
选项 | 含义 |
---|---|
-c(小写) | 创建(打包) |
-v | 显示提示信息 |
-f | 指定打包后的文件名 |
(2)tar -xvf 【压缩文件】-C /tmp/
解压缩,源压缩文件保留。
1 |
|
选项 | 含义 |
---|---|
-x | 释放(解打包) |
-C(大写) | 指定解压缩的位置 |
(3)tar -zcvf 【打包后的文件名】 【源文件】
压缩为 .tar.gz 格式的文件,源文件保留。
1 |
|
选项 | 含义 |
---|---|
-z | 压缩成 .tar.gz 格式 |
(4)tar -zxvf 【压缩文件】
解压缩,源压缩文件保留。
1 |
|
(5)tar -jcvf 【打包后的文件名】 【源文件】
压缩为 .tar.bz2 格式的文件,源文件保留。
1 |
|
选项 | 含义 |
---|---|
-j | 压缩成 .tar.bz2 格式 |
(6)tar -jxvf 【压缩文件】
解压缩,源压缩文件保留。
1 |
|
(7)tar -jcvf 【打包后的文件名(绝对路径)】【源文件1】【源文件2】
打包 多个文件 到 指定位置的压缩包 中。
1 |
|
(8)tar -jtvf 【源压缩文件】
只查看压缩包内容,不解压缩。
1 |
|
选项 | 含义 |
---|---|
-t | 只查看压缩包内容,不解压缩。 |
八、停止、关机、重启
停止机器:停止所有的 CPU 功能,但是仍然保持通电,使系统处于底层维护状态。
关闭机器:关闭电源。
1.shoudown
shoudown 【选项】时间
选项 | 含义 |
---|---|
-c | 取消前一个关机/重启命令 |
-h | 关机 |
-r | 重启 |
-H | 停止机器 |
-p | 关闭机器 |
PS:如果使用了时间参数,系统关机前 5 分钟,会创建 /run/nologin
文件。以确保没有人可以再登录。
1 |
|
2.poweroff
会发送一个 ACPI 信号来通知系统关机(关闭电源)。
ACPI:Advanced Configuration and Power Management Interface
选项 | 含义 |
---|---|
–halt | 停止机器 |
–reboot | 关机 |
1 |
|
3.halt
选项 | 含义 |
---|---|
-p | 关机 |
–reboot | 重启 |
1 |
|
4.init0
init进程,它是一个由内核启动的用户级进程。
init 命令在 sbin 目录下。
1 |
|
Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做 runlevel。
runlevel 可以认为是系统状态,进入每个 runlevel 都需要启动或关闭相应的一系列服务(services),这些服务(services)以初始化脚本的方式放置于目录
/etc/rc.d/rc?.d/
或者/etc/rc?.d
下面(?代表runlevel的对应序号)。
选项 | 含义 |
---|---|
0 | 关机 |
1 | 单用户,有且仅有一个 root 用户登陆。 |
2 | 不完全多用户,不能使用NFS(Net File System) |
3 | 完全多用户 |
4 | 未分配 |
5 | 图形界面 |
6 | 重启 |
5.runlevel
查看用户系统级别。
1 |
|
表明最初的运行模式是1,而现在的运行模式是3。
6.logout
退出登陆。
九、设备文件名与挂载
1.磁盘种类
设备文件名 | 含义 |
---|---|
sd | SCSI Device(SSD硬盘、u盘) |
hd | Hard Disk 硬盘 |
fd | Floppy Disk 软盘 |
2.设备文件名
- 硬盘最多四块主分区,从 sda5 开始,只能是逻辑分区。
- 硬盘名称是a、b、c…进行编号。
| 硬盘编号 | 名称 | 分区 |
| -------- | ---- | ------------------------------------------------------------ |
| 硬盘1 | sda | 主分区:sda1、sda2、sda3、sda4
扩展分区:sda5、sda6、sda7… |
| 硬盘2 | sdb | 主分区:sdb1、sdb2、sdb3、sdb4
扩展分区:sdb5、sdb6、sdb7… |
| 硬盘3 | sdc | |
3.fdisk
查看所有设备文件
1 |
|
4.mount
装载命令
(1)查询挂载
1 |
|
(2)依据配置文件 /etc/fstab 的内容,自动挂载
1 |
|
(3)挂载命令格式
mount 【-t 文件系统】【-o 特殊选项】【设备文件名】【挂载点名】
选项 | 含义 |
---|---|
-t | 文件系统:指定挂载类型,ext3、ext4、iso9660 |
-o | 特殊选项:指定挂载额外选项 |
特殊选项 | 含义 |
---|---|
exec/noexec | 是否允许执行 |
rw/ro | 读写/只读 |
remount | 重新挂载 |
- 挂载光盘
(1)建立挂载点
手动挂载时,挂载点应在
/mnt/
下的某个文件夹(自己创建即可)。
1 |
|
(2)挂载
1 |
|
-t iso9660
:文件系统/dev/cdrom
或者 dev/cdorm
:光驱设备名,/dev/cdrom
是 /dev/sr0
的软连接。/mnt/cdrom
:挂载点
(3)简化挂载
1 |
|
- 挂载U盘
(1)查看U盘设备文件名
1 |
|
(2)建立挂载点
1 |
|
(3)挂载
1 |
|
-t vfat
:Fat32 格式。/dev/sdb1
:fdisk -l
命令查询到的U盘设备文件名。/mnt/usb/
:U盘挂载点
5.umount
卸载命令
umount 【设备文件名或者挂载点】
先退出光盘/U盘所在位置,再卸载光盘/U盘。
1 |
|
十、用户管理
1.w、who、whoami
w、who:查看登录用户信息
whoami:查看当前用户
1 |
|
字段 | 含义 |
---|---|
USERs | 登录的用户名 |
TTY | 登陆的终端 |
FROM | 从哪个IP地址登陆 |
LOGIN@ | 登录时间 |
IDLE | 用户闲置时间 |
JCPU | 和该终端连接的所有进程占用的时间 这个时间不包括过去的后台作业所占用的时间 |
PCPU | 当前进程所占用的时间 |
WHAT | 当前正在运行的命令 |
1 |
|
root
:用户名pts/0、tty1
:登陆终端
tty1
:tty1
~tty6
文字终端;tty7
桌面终端。pts/0
:设备终端(黑窗口)2020-12-12 03:33
:登陆时间(gateway)
:登陆来源IP地址
2.last
查询当前登录和过去登录的用户信息
last 命令默认读取 /var/log/wtmp
文件数据。
1 |
|
root
:登录名pts/0
:登录终端172.16.103.1
:登录IPTue Sep 15 02:42 - 02:47
:登录时间 - 退出时间(00:04)
:在线时间
3.lastlog
查看所有用户最后一次登录时间。
lastlog 命令默认读取 /var/log/lastlog
文件内容。
1 |
|
4.用户增删改
(1)添加用户
1 |
|
(2)查看用户权限
1 |
|
(3)更改密码
1 |
|
(4)删除用户
1 |
|
(5)增加用户组
1 |
|
(6)更改用户组
1 |
|
(7)查看所有用户和用户组
1 |
|
(8)切换用户
1 |
|
十一、软件安装
1.安装 ifconfig
- 发现没有 ifconfig 命令
- yum install ifconfig 安装不上
- yum search ifconfig 查看 ifconfig 在哪个安装包中。发现是 net-tools.x86_64
- yum install net-tools.x86_64 发现安装不上
- yum install net-tools
- 安装成功!
十二、shell
shell:命令行解释器。
用户 ==> shell ==> 内核(硬件)
1.shell 分类
- Bourne shell:主文件名为 sh。
- C shell:主要在 BSD 版的 Unix 系统中使用,因语法与 C 语言相似而得名。
在语法上,Bourne 和 C 互不兼容。 - Bourne 包括 sh、ksh、bash、psh、zsh。
- C 家族包括 csh、tcsh。
2.查看 shell 类型
1 |
|
3.切换 shell 类型
1 |
|
十三、脚本
1.echo
echo 【选项】【输出内容】
选项-e
:支持反斜线控制的字符转换。
字符转换 | 含义 |
---|---|
\a | 输出警告音 |
\b | 退格键 |
\n | 换行符 |
\r | 回车键 |
\t | 水平制表符 |
\v | 垂直制表 |
\0nnn | 将 nnn 转化为八进制,输出ASCII码 |
\xnn | 将 nn 转化为十六进制,输出ASCII码 |
1 |
|
代码 | 颜色 |
---|---|
30m | 黑 |
31m | 红 |
32m | 绿 |
33m | 黄 |
34m | 蓝 |
35m | 粉红 |
36m | 青 |
37m | 白 |
1 |
|
2.脚本格式
1 |
|
#!/bin/zsh
:表示 shell 类型,不是格式。
3.执行脚本
(1)赋予执行权限,直接运行。
1 |
|
(2)通过 shell 调用执行脚本。
1 |
|
十四、shell 功能
1.alias
命令的临时别名
1 |
|
- 使临时别名永久生效
1 |
|
- 临时删除别名
真正删除别名需要在 ~/.zshrc 中更改。
unalias 【别名】
1 |
|
- 命令生效顺序
(1)自己写的脚本
(2)执行别名
(3)shell 的内部命令
(4)$PATH
环境变量中的目录中的命令
2.快捷键
方向键:
ctrl
+ p
:up,方向上键
ctrl
+ n
:next,方向下键
移动光标:
ctrl
+ f
:front,光标向前移动
ctrl
+ b
:back,光标向后移动
ctrl
+ a
:光标移动到行首
ctrl
+ e
:end,光标移动到行尾
删除:
ctrl
+ h
:删除光标前面的字符
ctrl
+ d
:删除光标后面的字符
ctrl
+ u
:从光标处删到行首
其他:
ctrl
+ r
:在历史命令中搜索
ctrl
+ z
:把命令放入后台
crtl
+ L
:清屏
3.history
(1)查看缓存命令
1 |
|
(2)清空缓存命令
1 |
|
(3)增加历史范围
1 |
|
(4)重复执行上一条命令
1 |
|
(5)重复执行最后一条以该字符串开头的命令
1 |
|
PS:ctrl
+ r
:在历史命令中搜索
4.输出重定向
(1)标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
(2)输出重定向
- 正确内容的重定向
1 |
|
- 报错信息的重定向
因为标准错误输出的文件描述符为 2。
**注意:**错误信息重定向 箭头两侧均没有空格。
1 |
|
- 无论命令正确错误,均写入文件。
**注意:**错误信息重定向 箭头两侧均没有空格。
1 |
|
特殊的例子:/dev/null
该文件是个黑洞,将输出重定向至 /dev/null
就是将其扔进黑洞。
1 |
|
- 如果命令正确,将 输出内容 写入 test.log,将 空 写入 err.log。
如果命令错误,将 空 写入 test.log,将 报错信息 写入 err.log。
**注意:**如果是覆盖写入,当内容写入 test.log,err.log中的内容也会被清空。
1 |
|
5.输入重定向
举个例子,wc 命令,统计字符数,需要在键盘中输入字符进行统计。
我们可以使用输入重定向来替代我们的输入。
1 |
|
6.多命令执行符
多命令执行符 | 含义 |
---|---|
命令1 ; 命令2 | 先执行命令1,再执行命令2。 无论命令1是否报错,命令2均会执行。 |
命令1 && 命令2 | 命令1正确执行,命令2才会执行。 |
命令1 || 命令2 | 命令1正确执行,命令2不会执行; 命令1报错,命令2才会执行。 |
举个例子:
如果 cd ..
执行成功,才会执行 echo yes
,因为 echo yes
执行成功,所以不会执行 echo no
。
如果 cd ..
执行不成功,则不会执行 echo yes
,因为 echo yes
执行失败,所以会执行 echo no
。
1 |
|
7.管道符
1 |
|
命令1 的结果,作为命令2 的操作对象。
例子:查看系统中的所有网络链接
1 |
|
netstat -an
:查看网络连接
grep ESTABLISHED
:查找网络连接
wc -l
:统计行号,一行一人
8.通配符
假设当前目录下有
abc1 abc2 abc3 abca abc_frist
这几个文件。
- ?
匹配任意一个字符。
1 |
|
匹配0个或者任意多个任意字符 ==》匹配任意内容。
1 |
|
- []
匹配中括号中任意一个字符。
1 |
|
- [ - ]
匹配一个范围中的一个字符。
1 |
|
- [^]
逻辑非,表示匹配不是中括号内的一个字符。
1 |
|
- ’ ’
单引号内容中特殊字符无特殊含义。
1 |
|
- " "
双引号内容中特殊字符无特殊含义。$
```` 除外。
$
:调用变量名
1 |
|
\
:转义字符
十五、进程管理
1.ps
- ps -aux
1 |
|
选项 | 含义 |
---|---|
-a | 查看所有用户 |
-u | 查看所以用户的详细信息 |
-x | 查看没有终端的应用程序 |
- 补充
显示的内容更多,会显示父进程 PPID、进程组 PGID、会话 SID
1 |
|
2.kill
发送信号。
- Kill -l
查看所有信号
1 |
|
- kill -9 【进程号】、kill -KILL 【进程号】
1 |
|
3.env
查看当前进程的环境变量。
1 |
|
4.top
查看进程
1 |
|
十六、网络管理
1.ifconfig
查看网卡
1 |
|
2.ping
测试连通性,使用的 ICMP 协议。
3.nslookup
显示域名对应的 IP。
1 |
|
十七、FTP服务器
1.服务器端 vsftpd
- 安装 vsftpd
1 |
|
- 修改配置文件
1 |
|
- 重启服务
1 |
|
PS:如果重启服务出现 Job for vsftpd.service failed because the control process exited with error code. See “systemctl status vsftpd.service” and “journalctl -xe” for details。由于 CentOS7 中 vsftp 的配置文件默认将 listen_ipv6=YES 这一行没有注释掉,而我们目前的网络环境还不支持 ipv6,从而导致出现错误无法启动,所以将这一行注释掉即可。
2.客户端 ftp
- 安装客户端
1 |
|
- 实名用户登录
ftp + IP(server)
输入用户名(server)
输入密码
1 |
|
- 匿名用户登录
ftp + IP(server)
输入匿名用户名 anonymous
密码:直接回车
【FTP 服务器端需要创建一个匿名用户的目录】
匿名用户默认主目录:/srv/ftp/
1 |
|
3.ftp操作
注意关注进行 ftp 登录时,客户端机器所在目录。
只能上传和下载文件,目录需要打包。
- get
1 |
|
- put
1 |
|
- bye、quit、exit
退出
4.客户端lftp
- 安装客户端
- **比ftp更智能的地方:**显示当前位置
1 |
|
- 实名登录
1 |
|
- 匿名登录
1 |
|
5.lftp操作
操作 | 含义 |
---|---|
put | 上传文件 |
mput | 上传多个文件 |
get | 下载文件 |
mget | 下载多个文件 |
mirror | 下载整个目录及其子目录 |
mirror -R | 上传整个目录及其子目录 |
6.问题
- ftp: connect: 没有到主机的路由
CentOS7的防火墙禁止了ftp客户端的访问, ftp 服务器关闭防火墙试试。
Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去掉了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
1 |
|
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
修改主目录写权限即可;若要上传文件,可上传到主目录下的其他目录。
1 |
|
7.scp
Super copy
- 本地拷贝到远程服务器
1 |
|
- 远程服务器拷贝到本地
1 |
|
- 拷贝目录
1 |
|
选项 | 含义 |
---|---|
-r | 递归拷贝整个目录 |
十八、NFS服务器
1.服务端 nfs-utils
- 安装 nfs-utils
1 |
|
- 创建共享目录
1 |
|
- 修改配置文件
1 |
|
rw:支持读写
sync:内存中的数据实时更新到磁盘上。
- 重启服务
1 |
|
2.客户端
- 安装 nfs-utils
1 |
|
- 挂载 nfs服务器
1 |
|
十九、文本编辑器 vim
1.移动光标
命令模式
h | j | k | l |
---|---|---|---|
← | ↓ | ↑ | → |
快捷键 | 含义 |
---|---|
0 | 行首 |
$ | 行尾 |
gg | 文件开始 |
G | 文件末尾 |
300G | 行跳转(跳转到300行) |
2.删除
命令模式
Linux 删除 其实是 剪切,在剪切版中。
快捷键 | 含义 |
---|---|
x(小写) | 删除光标后的字符(光标所覆盖的字符) |
X(大写) | 删除光标前的字符 |
dw | 删除光标后的第一个单词 |
d0 | 从光标处一直删除到行首 |
d$ | 从光标处一直删除到行尾 |
D | 同 d$ |
dd | 删除整行 |
3dd | 从当前行开始,删除3整行 |
u | 撤销(恢复删除的内容) |
ctrl+r | 反撤销 |
3.复制
命令模式
快捷键 | 含义 |
---|---|
yy | 复制 |
nyy | 复制 n 行 |
4.粘贴
命令模式
快捷键 | 含义 |
---|---|
p(小写) | 粘贴到光标所在行的下一行 |
P(大写) | 粘贴到光标所在行 |
5.查找
命令模式
以查找字符“linux”为例,
用法 | 含义 |
---|---|
/linux | 光标处向下查询 |
?linux | 光标处向上查询 |
讲光标移至想要查询的单词上,按# | 高亮显示该单词 |
快捷键 | 含义 |
---|---|
n | 从当前高亮字符,跳转到下一个高亮字符 |
N | 从当前高亮字符,跳转到上一个高亮字符 |
6.缩进
命令模式
快捷键 | 含义 |
---|---|
>> | 向右缩进 |
<< | 向左缩进 |
7.替换单个字符
命令模式
- 光标选中该字符
- 按 r
- 输入替换的字符(单个)
8.man文档查看
命令模式
以查看 printf 的 man 文档为例,光标放在 printf 上,按 shift + k。
上述操作会进入 man 文档的第一章,但 printf 是函数,应该在 man 文档中的第三章。
所以需要先按 3,再按 shift + k。这样才能进入正确的 man 文档。
9.ZZ 保存退出
命令模式
命令模式下,两个 ZZ 保存推出。(大写Z)
10.可视模式
v:进入可视模式。
**在可视模式下,**可进行选中、复制、删除。
快捷键 | 含义 |
---|---|
←↓↑→ 或者 hjkl | 选中 |
d | 删除选中 |
y | 复制选中 |
p(小写) | 光标所在字符后面粘贴选中 |
P(大写) | 光标前面粘贴选中 |
11.插入模式
快捷键 | 含义 |
---|---|
i | 光标前插入 |
a | 光标后插入 |
A | 跳转到行尾插入 |
I(大写) | 跳转到行首插入 |
s | 删除光标所在字符,并插入 |
S(大写) | 删除光标所在行,并插入 |
12.跳转
末行模式
- 输入
:
后, - 输入想要跳转的行号。
1 |
|
13.替换
末行模式
**例子一:**将 25 行的 第一个 abc 替换为 eeee。
- 光标移动到想要替换的行,25 行。
- 输入命令
1 |
|
- s:表示字符串
**例子二:**将 25 行的 所有 abc 替换为 eeee。
- 光标移动到想要替换的行,25 行。
- 输入命令
1 |
|
- s:表示字符串
- g:表示整行全部都替换
例子三:将全文的 所有的第一个 abc 替换成 eeee。
输入命令
1 |
|
- %:表示所有的行
- s:表示字符串
例子四:将全文的 所有 abc 替换成 eeee。
输入命令
1 |
|
- %:表示所有的行
- s:表示字符串
例子五:将15行~20行的 所有 abc 替换成 eeee。
输入命令
1 |
|
- %:表示所有的行
- s:表示字符串
- 15,20:表示从 15 行 ~ 20 行。
总结
符号 | 含义 |
---|---|
s | 表示字符串 |
% | 表示全文 |
g | 表示整行中的所有该字符 |
15,20 | 从15行到20行 |
14.执行其他命令
末行模式
在末行模式可以在当前目录执行一些命令。
1 |
|
15.vi分屏
末行模式
快捷键 | 含义 |
---|---|
:sp | 水平分屏(上下分)(同文件) |
:vsp | 垂直分屏(左右分)(同文件) |
:sp 1.txt | 水平分屏(当前文件和1.txt) |
:vsp 1.txt | 垂直分屏(当前文件和1.txt) |
:wqall | 保存两个文件并退出 |
:wall | 保存两个屏幕 |
分屏后,切换窗口:
命令模式
快捷键 | 含义 |
---|---|
ctrl + w 后,w | 循环切换窗口 |
ctrl + w 后,k | 上面窗口 |
ctrl + w 后,j | 下面窗口 |
ctrl + w 后,l | 右边窗口 |
ctrl + w 后,h | 左边窗口 |
光标所在窗口和其他窗口互换位置:
快捷键 | 含义 |
---|---|
ctrl + w 后,K | 光标所在窗口和上面窗口换位 |
ctrl + w 后,J | 光标所在窗口和下面窗口换位 |
ctrl + w 后,L | 光标所在窗口和右边窗口换位 |
ctrl + w 后,H | 光标所在窗口和左边窗口换位 |
关闭光标所在窗口:
ctrl + w 后,c
16.设置行号
**临时显示:**命令模式下,set number 或者 set nu。
**临时隐藏:**命令模式下,set nonumber 或者 set nonu。
当前用户永久显示: vim ~/.vimrc,添加一行 set number。
系统用户永久显示: vim /etc/vimrc,添加一行 set number。
二十、其他
1.Linux 版本
1 |
|
2.查看机器当前时间
1 |
|
3.清屏
1 |
|
快捷键:crtl
+ L