【前端&运维那点事儿】一:先来说说Linux和Linux的基础命令

1,464 阅读12分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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的学习版是不收费的,可以免费下载,只需要进入页面输入姓名和邮箱就会提供下载链接,如下图

image_moZ2yhDm1z.png

上图框中的地址就是下载地址,复制到地址栏打开即可下载。

软件的安装非常简单,这里就不演示了。

第一步:安装完成之后打开XShell,会弹出下面这个页面:

image_Qo_WCe4LaS.png

第二步:点击新建,会出现下面这个页面:

image_gHGdKlP7uf.png

第三步:输入名称和主机,这里的主机指的是Linux系统的IP地址,如下图:

image_d-nKpmWGnK.png

值得注意的是如果是在阿里云或者腾讯云购买的服务器需要保证22端口可以访问,然后点击【确定】或者【连接】;

点击【确定】可以选中在点击【连接】:

image_rez_pT5NfO.png

最后一步:输入用户名和密码,用户名我这里使用的是root,毕竟这个权限最高嘛,连接成功如下图:

image_4SJVbr1UH8.png

🥝 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系统命令存放目录,例如rebootshutdown

🍓 Linux基础命令

🍒 命令提示符

命令提示符就是一进入看到的那个,如下:

[root@ywanzhou tmp]# su zhou
[zhou@ywanzhou tmp]$ 

  • rootzhou,也就是@前面的内容,表示用户名

  • 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命令

该命令用于搜索文件或者目录,该命令的用法比较多,咱们依次介绍:

  1. 按名称查找,在/etx/目录下查找

    # 查找文件abc
    find /etc/ -name 'abc' 
    # 查找以a开头的文件
    find /etc/ -name 'a*'
    # 查找以后缀名为txt的文件
    find /etc/ -name '*.txt'
    # 忽略大小写查找
    find /etc/ -iname 'abc'
    
  2. 根据文件大小进行查找

    # 当前目录下搜索大于10k的文件
    find . -size +10k
    # /etc/目录下搜索小于10k的文件
    find /etc/ -size -10k
    # 搜索等于10KB的文件
    find . -type f -size 10k
    
  3. 按文件时间戳进行搜索

    # 修改时间超过5天
    find /etc -mtime +5
    # 修改时间超过5天
    find /etc -mtime 5 
    # 修改时间超过5天
    find /etc -mtime -5
    # 搜索访问时间超过10分钟的所有文件
    find /etc -amin +10
    
  4. 按文件类型进行搜索

    # 修改时间超过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->目录 
    
  5. 按照文件的属主、属组查找

    # 查找属组为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:表示或           #
    ###############################
    
  6. 找到后处理的动作 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命令需要确认  #
    ###################################
    
  7. find结合xargs,这种比使用-exec-ok更加的节省系统资源

    # 查找当前目录下的空文件并删除
    find . -empty | rm -rf
    # 将文件复制到/tmp目录
    find /etc -iname 'ifcfg*' |xargs -I {} cp -rvf {} /tmp
    
  8. 按深度查找

    # 向下最大深度限制为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的基础命令,内容不复杂,但是量有点大;

如果喜欢这个专栏,可以给专栏点个关注呦~