持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~
🍉 写在前面
先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。
这是这篇专栏的第一篇文章,将介绍一下Linux和Linux常用的基础命令,因为该专栏是从0基础开始的,所以前几篇文章将会非常的简单,不喜勿喷。
🍊 先说说Linux
Linux同Windows和macOS一样,都是一个操作系统软件;与Windows和macOS不同的是,Linux是一个开源的操作系统。
在Linux中它与我们常用的Windows有着以下几点的不同:
-
Linux中所有的内容都是以文件的形式存在,并没有Windows中硬盘分区的概念;
-
LInux中是不靠扩展名来区分文件类型的,是靠权限开区分,但是Linux中也有一些约定的扩展名例如:
.gz
、.bz2
、.tar.zd2
表示的压缩包,.rpm
表示二进制文件等等; -
LInux中使用更多的是命名行界面,这相比Windows的图形化界面来说资源占用更小,更安全;
🍋 Linux的安装
这里不就介绍Linux的安装了,如果在实际开发中的服务器通常都是通过阿里云、腾讯云或者各种云购买的,如果是学习的话可以通过Vmware安装的虚拟机,这种安装方式百度有很多教程,这里就不赘述了。
🍌 连接服务器
🐵 XShell连接
首先我们使用XShell来连接我们购买的服务器(不想购买的话可以使用VMware中的虚拟机),XShell的学习版是不收费的,可以免费下载,只需要进入页面输入姓名和邮箱就会提供下载链接,如下图
上图框中的地址就是下载地址,复制到地址栏打开即可下载。
软件的安装非常简单,这里就不演示了。
第一步:安装完成之后打开XShell,会弹出下面这个页面:
第二步:点击新建,会出现下面这个页面:
第三步:输入名称和主机,这里的主机指的是Linux系统的IP地址,如下图:
值得注意的是如果是在阿里云或者腾讯云购买的服务器需要保证22
端口可以访问,然后点击【确定】或者【连接】;
点击【确定】可以选中在点击【连接】:
最后一步:输入用户名和密码,用户名我这里使用的是root,毕竟这个权限最高嘛,连接成功如下图:
🥝 SSH连接
如果不想下载XShell,也可以使用ssh
命令连接,该命令比较简单,用法如下:
ssh root@192.168.20.32
# 其中 ssh 为命令
# root 表示用户名
# 192.168.20.32 表示服务器的ip
首次连接可能需要输入yes
,然后输入密码即可连接成功。
🌭 Linux的目录
在开始敲Linux的命令之前,我们先来了解一下Linux的目录结构,Linux并没有WIndows的磁盘分区的概念,它只有一个根目录,也就是/
,该目录是Linux系统中最为重要的目录,Linux中的常见目录如下:
目录 | 用途 |
---|---|
/ | 根目录 |
/boot | 系统启动目录 |
/dev | 设备文件保存位置 |
/etc | 配置文件保存位置。系统内所有采用默认安装方式的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home | 普通用户的家目录,等同于Windows的C:\Users |
/lib | 系统库保护目录 |
/mnt | 移动设备挂载目录 |
/root | 超级管理员用户的家目录 |
/tmp | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。 |
/proc | 正则运行的内核信息映射,主要输出进程信息、内存资源信息和磁盘分区信息等等 |
/sys | 硬件设备的驱动程序信息 |
/var | 变量 |
/bin | 基本命令存放目录,例如常用的ls 等 |
/sbin | 系统命令存放目录,例如reboot 、shutdown 等 |
🍓 Linux基础命令
🍒 命令提示符
命令提示符就是一进入看到的那个,如下:
[root@ywanzhou tmp]# su zhou
[zhou@ywanzhou tmp]$
-
root
和zhou
,也就是@
前面的内容,表示用户名 -
ywanzhou
表示主机名,可以修改 -
tmp
表示当前所在目录 -
#
和$
表示提示符,其中普通用户为$,超级用户为#
🍑 pwd命令
该命令的作用是显示当前工作目录的路径,用法如下:
pwd [选项]
# -LP 选项,可以显示链接的真实路径,这里的链接指的是软硬链接,后面介绍
示例用法如下:
[zhou@ywanzhou tmp]$ pwd
/tmp # 返回当前工作目录
🍐 cd命令
cd
命令用于切换当前的工作目录,用法非常简单
[zhou@ywanzhou tmp]$ cd /home/zhou # 切换目录到/home/zhou
[zhou@ywanzhou zhou]$ cd .. # 返回上一级
[zhou@ywanzhou zhou]$ cd . # 当前目录
[zhou@ywanzhou home]$ cd - # 返回前一个目录
[zhou@ywanzhou home]$ cd # 返回家目录
🍏 ls命令
ls
命令的作用是显示目录和文件的信息,该命令有如下常用的几个选项:
-
-a
: 显示所有文件,包括隐藏文件注:在linux中的隐藏文件指的是
.
开头的文件,例如.gitignore
; -
-d
: 显示目录本身的信息,而非显示目录的文件 -
-h
: 更人性化的方式显示文件的大小 -
-l
: 长格式显示文档的详细信息
命令示例如下:
[zhou@ywanzhou demo]$ ls # 显示该目录下的文件
test.txt
[zhou@ywanzhou demo]$ ls -a # 显示该目录下的文件包括隐藏文件
. .. .gitignore test.txt
[zhou@ywanzhou demo]$ ls -l # 以长格式显示该目录的文件,这样可以显示更多信息 与 ll 命令等价(ll命令是ls -l的别名)
total 4
-rw-rw-r-- 1 zhou zhou 164 Oct 9 22:23 test.txt
[zhou@ywanzhou demo]$ ls -la # 以长格式显示该目录的文件包括隐藏文件
total 12
drwxrwxr-x 2 zhou zhou 4096 Oct 9 22:23 .
drwxrwxrwt. 11 root root 4096 Oct 9 22:22 ..
-rw-rw-r-- 1 zhou zhou 0 Oct 9 22:23 .gitignore
-rw-rw-r-- 1 zhou zhou 164 Oct 9 22:23 test.txt
[zhou@ywanzhou demo]$ ls -lha # 以长格式且大小可读的方式显示该目录的文件
total 12K
drwxrwxr-x 2 zhou zhou 4.0K Oct 9 22:23 .
drwxrwxrwt. 11 root root 4.0K Oct 9 22:22 ..
-rw-rw-r-- 1 zhou zhou 0 Oct 9 22:23 .gitignore
-rw-rw-r-- 1 zhou zhou 164 Oct 9 22:23 test.txt
[zhou@ywanzhou demo]$ ls -ld # 以长格式方式显示当前目录
drwxrwxr-x 2 zhou zhou 4096 Oct 9 22:23 .
[zhou@ywanzhou demo]$
🍎 mkdir命令
mkdir命令用于创建目录可以添加-p
选项用于创建多级目录,示例如下:
[zhou@ywanzhou demo]$ mkdir test # 创建test目录
[zhou@ywanzhou demo]$ ls
test test.txt
[zhou@ywanzhou demo]$ mkdir -p test1/test2/test3/test4 # 递归创建目录
[zhou@ywanzhou demo]$ cd ./test1/test2/test3/test4/
[zhou@ywanzhou test4]$ pwd
/tmp/demo/test1/test2/test3/test4
[zhou@ywanzhou test4]$
🥭 touch命令
该命令用于创建或者修改文件的时间,如果文件不存在则创建文件,存在则修改文件的时间为当前系统时间:
[zhou@ywanzhou test]$ touch ywanzhou.txt # 创建文件
[zhou@ywanzhou test]$ touch test{1..5}.txt # 创建text1.txt到test5.txt
[zhou@ywanzhou test]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt ywanzhou.txt
🍍 cp命令
该命令用于复制文件和目录,用发如下:
cp [选项] 源目录 目标目录
常用选项如下:
-
-r
: 递归复制文件夹和文件,复制目录时需要 -
-a
: 复制时保留源文件的所有属性,包括权限时间等内容
示例如下:
[zhou@ywanzhou demo]$ cp test.txt test-copy.txt # 复制文件
[zhou@ywanzhou demo]$ cp -r test test-copy # 复制目录
🍉 du命令
该命名用于计算文件或者文件夹的占磁盘空间的大小,用法如下
du [选项] 文件...
常用选项如下:
-
-h
: 人性化显示容量信息 -
-a
: 同ls
的-a
选项 -
-s
: 显示总容量
示例如下:
[zhou@ywanzhou demo]$ du -hs /etc/ # 查看 etc 目录总大小
🍌 rm命令
该命令用于删除文件或者文件夹,用法如下:
rm [选项] 文件...
常用选项如下:
-
-r
: 递归删除文件夹和文件,删除目录时需要 -
-f
: 强制执行 -
-i
: 删除时需要确认
注意:删除操作是不可逆的,在删除时需要再三确认删除的目录是否正确
🍋 mv命令
该命令用于移动或者重命名文件和文件夹,示例如下:
mv test-copy.txt ywanzhou.txt # 重命名
mv test/test1.txt test1.txt # 移动
🍊 find命令
该命令用于搜索文件或者目录,该命令的用法比较多,咱们依次介绍:
-
按名称查找,在
/etx/
目录下查找# 查找文件abc find /etc/ -name 'abc' # 查找以a开头的文件 find /etc/ -name 'a*' # 查找以后缀名为txt的文件 find /etc/ -name '*.txt' # 忽略大小写查找 find /etc/ -iname 'abc'
-
根据文件大小进行查找
# 当前目录下搜索大于10k的文件 find . -size +10k # /etc/目录下搜索小于10k的文件 find /etc/ -size -10k # 搜索等于10KB的文件 find . -type f -size 10k
-
按文件时间戳进行搜索
# 修改时间超过5天 find /etc -mtime +5 # 修改时间超过5天 find /etc -mtime 5 # 修改时间超过5天 find /etc -mtime -5 # 搜索访问时间超过10分钟的所有文件 find /etc -amin +10
-
按文件类型进行搜索
# 修改时间超过5天的普通文件 find /etc -type f -mtime +5 # 查找/dev下的所有目录 find /dev -type d # 查找/dev下的所有目录,目录名称列出到标准输出 find /dev -type d -ls # 查找根目录下的普通,并输出数量 find / -type f | we -l # 文件类型 f->普通文件 l->符号链接 d->目录
-
按照文件的属主、属组查找
# 查找属组为admin的文件 find . -group admin # 查找属主为admin的文件 find . -user admin # 查找没有用户的文件 find /home/ -nouser # 查找属主不是admin的文件 find . ! -user admin find . -not -user admin # 查找属主是admin和属组是admin大小在1兆以上的普通文件 find . -size +1M -type f -user admin -a -size +1M -type f -group admin ############################### # ! 或 -not:表示取反 # # a:表示且 # # -o:表示或 # ###############################
-
找到后处理的动作 ACTIONS
# 将查询结果打印出来 find . -group admin -print # 将前面查询的结果复制到/mnt目录中,直接复制 不交互 {}用来代替找到的结果\;表示结束标志 find /home/ ! -not ! -user admin -exec cp -rvf {} /mnt/ \; # 将前面查询的结果复制到/mnt目录中,执行指令之前会先询问用户,若回答“n”或“N”,则放弃执行命令; find /home/ ! -not ! -user admin -ok cp -rvf {} /mnt/ \; # 将查找到的文件进行删除 find /home/ ! -user admin -delete find /home/ ! -user admin -exec rm -rf {} \; ################################### # -print: 打印 # # -ls: 执行结果进行ll查询 # # -delete: 将结果删除 # # -exec: 后面跟自定的shell命令 # # -ok: 后面跟自定的shell命令需要确认 # ###################################
-
find结合
xargs
,这种比使用-exec
和-ok
更加的节省系统资源# 查找当前目录下的空文件并删除 find . -empty | rm -rf # 将文件复制到/tmp目录 find /etc -iname 'ifcfg*' |xargs -I {} cp -rvf {} /tmp
-
按深度查找
# 向下最大深度限制为3 find . -maxdepth 3 -type f # 搜索出深度距离当前目录至少2个子目录的所有文件 find . -mindepth 2 -type f
🍇 ln命令
ln
命令用于创建软硬链接文件,软链接可以理解为Windows的快捷方式但又不完全一样;
创建软链接需要添加-s
选项,如果源文件被删除则软链接失效。示例如下:
ln -s ../ywanzhou.txt ywanzhou.txt # 将父级目录的ywanzhou.txt在当前目录创建软链接
🍉 查看文件内容的命令
🍇 cat命令
该命令用于查看文件的内容,该命令常用的选项是-n
,用于显示行号,示例用法如下
cat /etc/passwd # 显示该文件的内容
cat -n /etc/passwd # 带行号,显示该文件的内容
🍍 more命令
more
命令采用分页的方式查看文件的内容,其操作如下:
-
Enter
键滚动一行,按下数字后按Enter键滚动数字行; -
空格向下滚动一屏;
Ctrl+F
向下滚动一屏;Ctrl+B
返回上一屏; -
按下
=
输出当前行的行号;按下:f
输出文件名和当前行的行号; -
按下
v
调用vi编辑器,按下!
调用shell,按下q
突出more。
more test.txt # 查看当前目录的test.txt
🍌 less命令
less
命令同样采用分页的方式查看文件的内容,该命令比more更加强大,简单来说对比more它的优势:
-
可以通过上下键进行翻页
-
如果需要向下搜索,在输入斜杠(
/
)之后接着输入需要搜索的内容:/linux
-
如果需要向上搜索,在输入问号(
?
)之后接着输入需要搜索的内容:?linux
🍋 head命令
head
命令用于查看文件头部的内容,默认显示的是前10行,可以添加-n
参数来控制显示行数,n表示行数,示例如下:
head /etc/passwd # 查看指定文件的前10行内容
head -15 /etc/passwd # 查看指定文件的前15行内容
🍊 tail命令
tail
命令用于查看文件尾部的内容,默认显示尾10行,可以添加-n
参数来控制显示的行数,n表示行数,示例如下:
tail /etc/passwd # 查看指定文件的后10行内容
tail -15 /etc/passwd # 查看指定文件的后15行内容
除-n
外,还命令常用的参数还有一个-f
,可以动态显示文件内容,通常用于查看日志,按【Ctrl+C】组合键退出,示例如下:
tail -f test.txt # 文件更新会自动更新显示的内容
🍈 打包压缩与解压命令
🥝 gzip命令和bzip2
gzip
命令和bzip2
命令都是用于压缩和解压缩,添加-d
选项的作用是解压缩,压缩的后缀分别为.gz
和.bz2
,他们两个的区别是gzip
命令的执行效率更快,而bzip2
命令的压缩比更高,测试如下:
[root@ywanzhou demo]$ gzip test.txt
[root@ywanzhou demo]$ gzip -d test.txt.gz
[root@ywanzhou demo]$ bzip2 test.txt
[root@ywanzhou demo]$ bzip2 -d test.txt.bz2
值得注意的是和****无法直接对目录进行压缩和解压操作,需要配合tar
命令一起使用。
🫐 tar命令
tar命令用于打包和解包,打包后的后缀名为.tar
,该命令的用法如下:
tar [选项...] [参数]... # 参数指要打包的文件或目录列表
常用选项如下:
-
-c
: 创建打包文件 -
-x
: 释放打包文件 -
-t
: 列出打包的文件列表 -
—delete
: 从打包的文件中删除文件 -
-r
: 追加文件到打包文件 -
-C
: 指定解压路径 -
-f
: 获取文件名来解压或创建文件,创建时f后面跟的是打包的文件名 -
-j
: 使用bzip2格式压缩 -
-z
: 使用gzip格式压缩 -
—remove-files
: 打包后删除源文件
示例如下:
# 将当前目录下的etc目录进行打包
tar -cf etc.tar etc/
# 将当前目录下的etc目录进行打包并删除源文件
tar -cf etc.tar etc/ --remove-file
# 将当前目录下的etc打包并压缩,采用bzip2格式
tar -cjf etc.tar.bz2 etc/
# 将当前目录下的etc打包并压缩,采用gzip格式
tar -czf etc.tar.gz etc/
# 效果对比
ls -lh
-rw-r--r-- 1 root root 30M Oct 10 23:25 etc.tar
-rw-r--r-- 1 root root 8.9M Oct 10 23:26 etc.tar.bz2
-rw-r--r-- 1 root root 11M Oct 10 23:27 etc.tar.gz
# 可以明显看出区别
# test.txt 追加到 etc.tar
tar -f etc.tar -r test.txt
# 从 etc.tar 中删除 test.txt
tar -f etc.tar --delete test.txt
# 解包
# 解包并解压bz2格式的压缩包到当前目录
tar -xjf etc.tar.bz2
# 解包并解压gz格式的压缩包到 test 目录
tar -xzf etc.tar.gz -C test
🍓 命名行小技巧
最后我们来介绍几个命令行中的小技巧:
-
按下【Tab】键可以自动补齐命令或者路径;
-
按下【Ctrl+L】或者键入
clear
命令可以清屏; -
巧用历史命令,在命令行中按上下键可以查看历史命令;键入
history
命令可以查看所有的历史命令记录(CentOS默认记录1000条历史命令),键入!250
就可以执行编号为250的命令。
🍒 写在最后
本篇文章到这就结束了,全文一共介绍了21个Linux的基础命令,内容不复杂,但是量有点大;
如果喜欢这个专栏,可以给专栏点个关注呦~