Linux(基础)——学习笔记(目录/文件操作、打包/解压、zip命令)
参考/摘录书籍:鸟哥的Linux私房菜(基础学习篇) 著○鸟哥
参考图片:来自网络/自己提供
说明:本人相关博客仅供学习参考!
一、Linux简介
Linux 就是一个操作系统,而不是应用程序。
Linux 的内核版本编号有类似如下的特点:
3.10.0-123.e.17.x86-64
//主版本.次版本.发布版本-修改版本
推荐学习版本:
推荐适用场景 | 版本 |
---|---|
以RPM软件管理为主 | RHEL 、Fedora 、SUSE 、CentOS |
探讨更严谨的Linux版本 | Debian |
考虑性能至上 | Gentoo |
“虚拟化
”指的是:在一台物理主机上面模拟出多个逻辑上完全独立的硬件,这个假的虚拟出来的硬件主机,可以用来安装一台逻辑上完全独立的操作系统。
【拓展点】(重点理解)
- 各个组件或设备在Linux下面都是一个文件。
1.1 Linux 文件系统目录结构
【备注】该图片和下列解释来自菜鸟教程。
目录名 | 描述 |
---|---|
/ | 根目录【最重要】 |
/bin | bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 |
/boot | 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
/dev | dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备。 在 Linux 中访问设备的方式和访问文件的方式是相同的。 |
/etc | etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
/home | 用户的主目录。 在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 |
`` |
【扩展】
.
代表当前的目录,也可以使用./
来表示;..
代表上一层目录,也可以使用../
来表示;-
代表前一个工作目录;~
代表目前使用者身份所在的家目录;(如果当前是root用户,则其家目录为/root
;如果当前是普通用户,则其家目录为/home/用户名
)
二、Linux使用
2.1 基础知识点
2.1.1 知识点
// Last login:这行表示我们这个用户的上次登录的时间和位置。
[root@linux ~]# // 这行的root:表示登录的是root用户
// @:相当at
// Linux:表示所登录的服务器,一般为服务器名称
// ~:表示目前位于/root目录下
// #:表示root的提示符号,普通用户为$
2.1.2 常见命令
命令 | 描述 |
---|---|
date [pattern] | 查看当前系统时间 |
`` |
2.2 配置 IP
2.2.1 网络常用命令
命令 | 说明 |
---|---|
ip addr | 查看当前网卡名称 |
systemctl restart network | 重启所有网卡 |
Ctrl+C | 结束ping连接 |
ping ip -c 数量 | 测试与某个IP地址的通信情况; 数量:表示要测试的通信次数。 |
`netstat -nltp | grep 端口号` |
ps -ef | 查看当前系统的进程 |
`ps -ef | grep 查询的字符串` |
关于centos7获取IP地址的方法主要有两种,1:动态获取ip
;2:设置静态IP地址
。登录到centos7后,可通过命令ip addr
查看当前网卡名称。
2.2.2 动态获取IP【了解】
动态获取IP的前提是你的路由器已经开启了DHCP(动态主机配置协议)。通过 vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改网卡配置文件, 按下字母i
才能修改.此配置文件默认配置信息说明:
TYPE="Ethernet" # 网卡类型:为以太网
PROXY_METHOD="none" # 代理方式:关闭状态
BROWSER_ONLY="no" # 只是浏览器:否
BOOTPROTO="dhcp" # 网卡的引导协议:DHCP[中文名称: 动态主机配置协议]
DEFROUTE="yes" # 默认路由:是, 不明白的可以百度关键词 `默认路由`
IPV4_FAILURE_FATAL="no" # 是不开启IPV4致命错误检测:否
IPV6INIT="yes" # IPV6是否自动初始化: 是[不会有任何影响, 现在还没用到IPV6]
IPV6_AUTOCONF="yes" # IPV6是否自动配置:是[不会有任何影响, 现在还没用到IPV6]
IPV6_DEFROUTE="yes" # IPV6是否可以为默认路由:是[不会有任何影响, 现在还没用到IPV6]
IPV6_FAILURE_FATAL="no" # 是不开启IPV6致命错误检测:否
IPV6_ADDR_GEN_MODE="stable-privacy" # IPV6地址生成模型:stable-privacy [这只一种生成IPV6的策略]
NAME="ens33" # 网卡物理设备名称
UUID="f47bde51-fa78-4f79-b68f-d5dd90cfc698" # 通用唯一识别码, 每一个网卡都会有, 不能重复, 否两台linux只有一台网卡可用
DEVICE="ens33" # 网卡设备名称, 必须和 `NAME` 值一样
ONBOOT="no" # 是否开机启动, 要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes`
动态获取IP地址需要修改两处地方即可
(1)bootproto=dhcp (2)onboot=yes
修改后要按esc
退出编辑(或只读)模式,输入:wq
保存修改并退出. 再用systemctl restart network
重启一下网络服务。最后用ip addr查看一下就可以看到已经获取了IP地址,且能够ping 外网。(Ctrl+c 结束ping连接)
2.2.3 静态 IP【掌握】
当我们希望IP不要总是改变的时候,就可以配置静态IP,修改网卡配置文件ifcfg-ens33
, 编辑命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33,
修改配置如下:
BOOTPROTO="static" # 网卡引导协议为 静态
ONBOOT="yes" #设置网卡启动方式为开机启动 并且可以通过系统服务管理器 systemctl 控制网卡
最后加上几行(IP地址、网关、dns服务器)
IPADDR=192.168.238.66
GATEWAY=192.168.238.2
DNS1=192.168.238.2 # 如果没有此配置,ping命令会报未知的 名称或服务
上面的IPADDR需要和虚拟网卡的ip在同一个网段里(但是不能使用同一个IP,会冲突),虚拟网卡的适配器叫VMware Network Adapter VMnet8
然后按esc 退出
,输入:wq 保存
,最后输入systemctl restart network
重启网卡。以上操作完成后查看ip地址及ping外网都可以了。
注意:如果ping外网不成功,会导致以后安装软件失败。可打开VmWare的虚拟网络编辑器,确保子网IP和上面配的IP地址在同一网段,网关也要正确:如下图
2.3 基础常见命令
类型 | 命令 | 描述 |
---|---|---|
目录相关 | cd / | 切换到系统根目录(所有用户共享的目录) |
cd test | 切换到当前目录下的test目录 | |
cd ~ | 切换到 当前用户的家目录 如果当前是root用户,其效果等同 cd /root 。如果当前是普通用户,其效果等同 cd /home/用户名 。注意:普通用户的家目录都在 home 目录下。 | |
cd . | 切换到当前目录 | |
cd .. | 切换到当前目录的父级目录 | |
功能性命令 | clear | 清除终端上显示的屏幕内容(清屏) |
touch 文件名 | 创建一个空的文件 | |
pwd | 显示当前目录(print working directory 的缩写) | |
ps -ef | 查看当前系统的进程 | |
kill -9 进程的pid | 结束进程 | |
`` |
2.4 目录的操作命令
2.4.1 创建目录或文件
创建目录的命令:
mkdir 目录名称
: 在当前文件夹中创建一个目录;
mkdir -p 多级目录
: 表示递归创建多级目录;
创建文件命令 :touch 文件名称
创建一个空文件;
【注意】
touch 命令
创建多个空文件的时候文件之间用空格隔开;touch 命令
只能在当前文件夹中创建空文件;
2.4.2 查看目录结构
命令:ls [-alhd] [目录]
-alhd | 单个说明 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息(ls -l 等同于 ll ) |
-h | 可以配合 -l 以更加详细的方式显示文件大小 |
-d | 可以查看当前目录的属性 |
2.4.3 查询目录
命令:find 目录 -name '匹配内容'
在匹配内容字符串中可以用*
表示任意个字符,?
表示单个字符。
例如:查找 /root 下的与 test 相关的目录(文件) find /root -name ‘test’
2.4.4 修改目录
命令:mv 旧目录名称 新目录名称
【注意】:mv 的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行重命名的操作。
2.4.5 移动目录位置(剪切)
命令:mv 目录原位置 目录的新位置
例如:将当前文件夹中的b文件夹移动到父文件夹中 mv b ../
【注意】
- mv 语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。
- 文件进行剪切后目录原位置中就没有该文件了,该文件已经剪切到新位置了。
- 该命令还可以用来重命名文件,如:
mv a.txt b.txt
将a.txt文件重命名为b.txt。
2.4.6 复制目录或文件
案例:复制apache-tomcat-8.5.14到当前文件夹中并重新命名为tomcat1;
cp -pr apache-tomcat-8.5.14 tomcat1
【注意】
递归式复制
指的是当要复制的目录下存在子目录,且子目录中存在子目录或文件的时候,将逐一复制它们。windows的复制默认是这样的。如果不递归复制,结果你得到的目录只包含空的子目录,其子目录下的内容将不会复制。- cp 命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r 递归。
2.4.7 删除目录或文件
命令:rm [-fir] 文件
;rmdir [-fir] 目录
参数名 | 描述 |
---|---|
-f | 就是 force (暴力) 的意思,忽略不存在的文件,不会出现警告讯息; |
-i | 互动模式,在删除前会询问使用者是否动作; |
-r | 递归删除(一定要慎用!!!)。 |
【注意】
- 当使用 rm 删除命令的时候,不能删除目录;
- 当使用 rmdir 删除命令的时候,如果要删除的文件夹中有子文件夹或子文件,则不能删除,会提示要删除的文件夹不为空,此时可以使用
rmdir -r 目录
递归删除目录中的子文件或子文件夹。
2.4.8 搜索
命令:grep 要搜索的字符串 要搜索字符串所在的文件
例如:搜索/etc/sudo.conf 文件中包含字符串 to 的行;
grep to /etc/sudo.conf
1.默认关键字 to 是高亮显示的,如果未高亮,可以在文件后面加
--color
。
2.5 文件内容查看
命令名称 | 描述 |
---|---|
cat | 由第一行开始显示文件内容; |
tac | 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! |
nl | 显示的时候,顺道输出行号! |
more | 一页一页的显示文件内容 |
less | 与 more 类似,但是比 more 更好的是,它可以往前翻页!(q 退出查看 ) |
head | 只看头几行 |
tail | 只看尾巴几行 |
od | 以二进制的方式读取文件内容! |
2.5.1 在文件中搜索关键字
在文件中(非插入模式)输入命令:/关键字
即可查找在文件中匹配的关键字,按 n
查找下一个符合条件的关键字。
2.6 Vim
在实际开发中,使用 vim 编辑器主要作用就是修改配置文件
vim 文件
------>进入文件----->命令模式------>按i
进入编辑模式----->编辑文件------->按Esc
进入底行模式----->输入:wq
或q!
(wq :代表写入内容并退出;q! :代表强制退出不保存;)
常用命令:
命令 | 描述 |
---|---|
文件名 -s reload | reload会重新加载配置文件,服务不会中断。 提示:一般编辑好配置文件后,都会重新加载该文件。 |
`` |
2.7 建立链接文件 ln
Linux 中链接文件分为软链接和硬链接。
软链接
:软链接相当于 Windows 下的快捷方式,源文件删除则软链接失效。
硬链接
:硬链接只能链接普通文件,不能链接目录,硬链接会和源文件同步更新。
使用语法:
硬链接:ln 源文件 链接文件
软链接:ln -s 源文件或目录 链接文件或目录
【注意】
- 如果没有-s 选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。
软链接可以链接目录
,是常用的。硬链接不能连接目录
。- 如果软链接文件和源文件不在同一个目录,源文件必须写绝对路径,否则软链接文件不能使用,硬链接没有这样的要求。
2.8 打包压缩解压
2.8.1 打包压缩
Linux 中的打包文件一般是以.tar
结尾的,压缩的命令一般是以.gz
结尾的。
一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz
。(多个要压缩的文件名之间用空格隔开)
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的源文件
参数 | 描述 |
---|---|
z | 调用 gzip 压缩命令进行压缩 |
c | 产生.tar 打包文件 |
v | 显示执行过程 |
f | 指定压缩后的文件名 |
# 单个文件压缩打包
tar czvf my.tar.gz file1ip
# 多个文件压缩打包
tar czvf my.tar.gz file1 file2 ···
# 单个目录压缩打包
tar czvf my.tar.gz dir1io
# 多个目录压缩打包
tar czvf my.tar.gz dir1 dir2
2.8.2 解压
命令:tar [-xvf] 压缩文件 -C 要解压到的目录
参数 | 描述 |
---|---|
x | 代表解压 |
【注意】
-C
代表指定解压的位置。
2.9 zip命令
格式:
[root@ccbx ~]#zip [选项] 压缩包名 源文件或源目录列表(多个文件空格隔开)
例子1:
zip -v files.zip file1.txt file2.txt file3.txt ...
例子2:(注意 -r选项 递归压缩目录中文件)
zip -vr dir.zip dir1 dir2 dir3 ...
选项 | 含义 |
---|---|
-r | 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。 |
-m | 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。 |
-v | 显示详细的压缩过程信息。 |
-q | 在压缩的时候不显示命令的执行过程。 |
-压缩级别 | 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。 |
-u | 更新压缩文件,即往压缩文件中添加新文件。 |
2.10 管道命令
管道命令用"|
"来表示,管道命令需要接收前一个命令的输出结果来进行操作,但不能处理前一个命令的错误。
示例:查看当前系统中所有的进程中包括 system 字符串的进程ps -ef | grep system
2.11 技巧
2.11.1 创建命令文件(.sh)
1) 创建一个批量开启 redis服务 的命令文件:
[root@localhost modules]# touch start-all-redis.sh
[root@localhost modules]# vim start-all-redis.sh
cd ./redis-6379
./bin/redis-server redis.conf
cd ..
cd ./redis-6380
./bin/redis-server redis.conf
cd ..
cd ./redis-6381
./bin/redis-server redis.conf
cd ..
cd ./redis-6382
./bin/redis-server ./bin/redis.conf
#开启哨兵进程
cd ..
cd ./redis-6379
./bin/redis-sentinel sentinel01.conf
# 退回到执行文件的目录位置
cd ..
[root@localhost modules]# chmod u=rwx start-all-redis.sh
[root@localhost modules]# ./start-all-redis.sh
执行命令文件的效果:
2) 创建一个批量停止 redis 服务 的命令文件:
[root@localhost modules]# touch down-all-redis.sh
[root@localhost modules]# vim down-all-redis.sh
cd ./redis-6379/bin
./redis-cli -p 6379 shutdown
cd ../../
cd ./redis-6380/bin
./redis-cli -p 6380 shutdown
cd ../../
cd ./redis-6381/bin
./redis-cli -p 6381 shutdown
cd ../../
cd ./redis-6382/bin
./redis-cli -p 6382 shutdown
# 退回到当前目录
cd ../../
[root@localhost modules]# chmod u=rwx down-all-redis.sh