当前正在阅读
SpringBoot 旧版
预计阅读时间: 2 小时
  知识库提供的所有文档均为本站版权所有,禁止任何未经授权的个人或企业发布、传播、售卖本站提供的文档,如经发现,本站有权起诉侵权方并追究法律责任。
点击查看图片来源

Linux操作系统与项目部署

注意: 本版块会涉及到操作系统相关知识。

现在,几乎所有智能设备都有一个自己的操作系统,比如我们的家用个人电脑,基本都是预装Windows操作系统,我们的手机也有Android和iOS操作系统,还有程序员比较青睐的MacBook,预装MacOS操作系统,甚至连Macbook的Touchbar都有一个自己的小型操作系统。

操作系统是管理计算机硬件与软件资源的计算机程序,操作系统可以对计算机系统的各项资源板块开展调度工作,运用计算机操作系统可以减少人工资源分配的工作强度。

在我们的电脑没有操作系统的情况下,它就是一堆电子元器件组合而成的机器,就像我们有了一具完整的身体,但是现在缺少的是一个大脑,来控制我们的身体做出各种动作和行为,而安装了操作系统,就像为电脑注入了灵魂,操作系统会帮助我们对所有的硬件进行调度和管理。

比如我们现在最常用的Windows操作系统,我们可以在系统中做各种各样的事情,包括游戏、看片、学习、编程等,而所有的程序正是基于操作系统之上运行的,操作系统帮助我们与底层硬件进行交互,而在程序中我们只需要告诉操作系统我们需要做什么就可以了,操作系统知道该如何使用和调度底层的硬件,来完成我们程序中指定的任务。

(如果你在自己电脑上安装过Windows操作系统,甚至自己打过驱动程序,或是使用安装过Linux任意发行版本,那么本章学习起来会比较轻松)

发展简史

这是整个SpringBoot阶段的最后部分了,为了不让学习那么枯燥,我们先来讲点小故事。

在1965年,当时还处于批处理操作系统的时代,但是它只能同时供一个用户使用,而当时人们正希望能够开发一种交互式的、具有多道程序处理能力的分时操作系统。于是,贝尔实验室、美国麻省理工学院和通用电气公司联合发起了一项名为 Multics 的工程计划,而目的也是希望能够开发出这样的一个操作系统,但是最终由于各种原因以失败告终。

以肯•汤普森为首的贝尔实验室研究人员吸取了 Multics 工程计划失败的经验教训,于 1969 年实现了分时操作系统的雏形,在1970 年该操作系统正式取名为UNIX,它是一个强大的多用户、多任务操作系统,支持多种处理器架构,1973 年,也就是C语言问世不久后,UNIX操作系统的绝大部分源代码都用C语言进行了重写。

从这之后,大量的UNIX发行版本涌现(基于Unix进行完善的系统)比如 FreeBSD 就是美国加利福尼亚大学伯克利分校开发的 UNIX 版本,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。

而后来1984年苹果公司发布的的MacOS(在Macintosh电脑上搭载)操作系统,正是在 FreeBSD 基础之上开发的全新操作系统,这是首次计算机正式跨进图形化时代,具有里程碑的意义。

Mac OS

同年,乔布斯非常高兴地将自家的图形化MacOS界面展示给微软创始人比尔盖茨,并且希望微软可以为MacOS开发一些软件。比尔盖茨一看,woc,这玩意牛逼啊,咱们自己也给安排一个。于是,在1985年,微软仿造MacOS并基于MS-DOS操作系统,开发出了名为Windows的操作系统:

img

Windows操作系统的问世,无疑是对MacOS的一次打击,因为MacOS只能搭载在Mac上,但是售价实在太贵,并且软件生态也不尽人意,同时代的Windows却能够安装到各种各样的DIY电脑上,称其为PC,尤其是后来的Windows95,几乎是封神的存在,各种各样基于Windows的软件、游戏层出不穷,以至于到今天为止,MacOS的市场占有率依然远低于Windows,不过Apple这十几年一直在注重自家软件生态的发展,总体来说在办公领域体验感其实和Windows差不多,甚至可能还更好,但是打游戏,别想了。

说了这么多,Linux呢,怎么一句都没提它呢?最牛逼的当然放最后说(不是

Unix虽然强大但是有着昂贵的授权费用,并且不开放源代码,于是有人发起了GNU运动(GNU IS NOT UNIX,带有那么一丝嘲讽),模仿 Unix 的界面和使用方式,从头做一个开源的版本。在1987年荷兰有个大学教授安德鲁写了一个Minix,类似于Unix,专用于教学。当Minix流传开来之后,世界各地的黑客们纷纷开始使用并改进,希望把改进的东西合并到Minix中,但是安德鲁觉得他的系统是用于教学的,不能破坏纯净性,于是拒绝了。

在1991年,林纳斯.托瓦兹(Linus Torvalds)认为Minix不够开放,自己又写了一个全新的开源操作系统,它希望这个系统由全世界的爱好者一同参与开发,并且不收费,于是Linux内核就被公开发布到互联网上。一经发布,便引起了社会强烈的反响,在大家的努力下,于1994年Linux的1.0版本正式发布。结合当时的GNU运动,最终合在一起称为了GNU/Linux,以一只企鹅Tux作为吉祥物。

点击查看图片来源

没错,Git也是林纳斯.托瓦兹只花了2周时间开发的。不过林纳斯非常讨厌C++,他认为C++只会让一个项目变得混乱。

从此以后,各式各样的基于Linux发行版就开始出现:

点击查看图片来源

这些发行版都是在Linux内核的基础之上,添加了大量的额外功能,包括开发环境、图形化桌面、包管理等。包括我们的安卓系统,也是基于Linux之上的,而我们要重点介绍的就是基于Debian之上的Ubuntu操作系统。

最后,2022年了,我们再来看一下各大操作系统的市场占有率:

  • Windows11/10/7:80%
  • MacOS:11%
  • Linux:5%
  • 其他:4%

Windows无疑是现在最广泛的操作系统,尤其是Windows XP,是多少00后的青春,很多游戏都是基于Windows平台。当然,如果你已经厌倦了游戏,一心只读圣贤书的话,那么还是建议直接使用任意Linux桌面版或是Mac,因为它们能够为你提供极致和纯粹的开发体验(貌似之前华为也出过Linux笔记本?)


image-20230306225112463

安装Ubuntu系统

这里我们就以安装虚拟机的方式在我们的电脑上安装Linux操作系统,我们选用Ubuntu作为教程,如果有经济实力,可以在腾讯云、阿里云之类的服务商购买一台云服务器,并选择预装Ubuntu系统;如果你还想搞嵌入式开发之类的工作,可以购买一台树莓派服务器,也可以在上面安装Ubuntu系统,相当于一台迷你主机。在你已经有云服务器的情况下,可以直接跳过虚拟机安装教学。

官网下载:https://cn.ubuntu.com/download/server/step1

注意是下载服务器版本,不是桌面版本。

在虚拟机中安装

这里我们使用VMware进行安装,VMware是一个虚拟化应用程序,它可以在我们当前运行的操作系统之上,创建一个虚线的主机,相当于创建了一台电脑,而我们就可以在这台电脑上安装各种各样的操作系统,并且我们可以自由为其分配CPU核心和内存以及硬盘容量(如果你接触过云计算相关内容,应该会对虚拟化技术有所了解)

官网下载:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

安装完成后,会出现一个类似于CMD的命令窗口,而我们就是通过输入命令来操作我们的操作系统。

使用SSH远程连接

如果你使用的是树莓派或是云服务器,那么你会得到一个公网的IP地址,以及默认的用户名和密码,由于服务器安装的Ubuntu并不是在我们的电脑上运行的,那么我们怎么去远程操作呢?

比如我们要远程操作一台Windows电脑,直接使用远程桌面连接即可,但是Ubuntu上来就是命令行,这种情况下要实现远程连接就只能使用SSH终端。

SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

云服务器上安装的Ubuntu默认都是自带了OpenSSH服务端的,我们可以直接连接,如果你的Ubuntu服务器上没有安装OpenSSH服务器端,那么可以输入命令进行安装:

shell 复制代码
sudo apt install openssh-server
#输入后还需要你输入当前用户的密码才可以执行,至于为什么我们后面会说

这里我们使用XShell来进行SSH登陆,官网:https://www.netsarang.com/zh/free-for-home-school/

文件系统介绍

在Windows下,我们的整个硬盘实际上可以被分为多个磁盘驱动器:

在这里插入图片描述

我们一般习惯将软件装到D盘,文件数据存在E盘,系统和一些环境安装在C盘,根据不同的盘符进行划分,并且每个盘都有各自的存储容量大小。而在Linux中,没有这个概念,所有的文件都是位于根目录下的:

img

我们可以看到根目录下有很多个文件夹,它们都有着各自的划分:

  • /bin 可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等实际上都是一些小的应用程序
  • /home 普通用户的主目录,对应Windows下的C:/Users/用户名/
  • /root root用户的主目录(root用户是具有最高权限的用户,之后会讲)
  • /boot 内核文件的引导目录, 放置 linux 系统启动时用到的一些文件
  • /sbing 超级用户使用的指令文件
  • /tmp 临时文件目录,一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
  • /dev 设备文件目录,在Linux中万物皆文件,实际上你插入的U盘等设备都会在dev目录下生成一个文件,我们可以很方便地通过文件IO方式去操作外设,对嵌入式开发极为友好。
  • /lib 共享库,系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
  • /usr 第三方 程序目录
  • /etc 配置程序目录,系统配置文件存放的目录
  • /var 可变文件,放置系统执行过程中经常变化的文件
  • /opt 用户使用目录,给主机额外安装软件所摆放的目录。

我们可以直接输入命令来查看目录下的所有文件:

shell 复制代码
#只显示文件名称,且不显示隐藏文件
ls
#显示隐藏文件以及文件详细信息
ll

那么我们如何才能像Windows那样方便的管理Linux中的文件呢?我们可以使用FTP管理工具,默认情况下Ubuntu是安装了SFTP服务器的。

这里我们使用Xftp来进行管理,官网:https://www.netsarang.com/zh/free-for-home-school/


用户和用户组

我们整个Linux阶段的学习主要是以实操为主,大量的命令需要大量的使用才能记得更牢固。

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统的用户,都必须申请一个账号,然后以这个账号的身份进入系统。比如我们之前就是使用我们在创建服务器时申请的初始用户test,通过输入用户名和密码登录到系统中,之后才能使用各种命令进行操作。其实用户机制和我们的Windows比较类似。一般的普通用户只能做一些比较基本的操作,并且只能在自己的目录(如/home/test)中进行文件的创建和删除操作。

我们可以看到,当前状态信息分为三段:

shell 复制代码
test@ubuntu-server:~$

格式为:用户名@服务器名称:当前所处的目录$,其中~代表用户目录,如果不是用户目录,会显示当前的绝对路径地址。我们也可以使用pwd命令来直接查看当前所处的目录。

在Linux中默认存在一个超级用户root,而此用户拥有最高执行权限,它能够修改任何的内容,甚至可以删除整个Linux内核,正常情况下不会使用root用户进行登陆,只有在特殊情况下才会使用root用户来进行一些操作,root用户非常危险,哪怕一个小小的命令都能够毁掉整个Linux系统,比如rm -rf /*,感兴趣的话我们可以放在最后来演示(在以前老是听说安卓手机root,实际上就是获取安卓系统底层Linux系统的root权限,以实现修改系统文件的目的)

我们可以使用sudo -s并输入当前用户的密码切换到root用户,可以看到出现了一些变化:

shell 复制代码
test@ubuntu-server:~$

root@ubuntu-server:/home/test#

我们发现$符号变成了#符号,注意此符号表示当前的用户权限等级,并且test也变为了root,在此用户下,我们可以随意修改test用户文件夹以外的内容,而test用户下则无法修改。如果需要退出root用户,直接输入exit即可。

接着我们来看一下,如何进行用户的管理操作,进行用户管理,包括添加用户和删除用户都需要root权限才可以执行,但是现在我们是test用户,我们可以在命令前面添加sudo来暂时以管理员身份执行此命令,比如说我们现在想要添加一个新的用户:

shell 复制代码
sudo useradd study

其中study就是我们想要创建的新用户,useradd命令就是创建新用户的命令,同样的,删除用户:

sh 复制代码
sudo userdel study

Linux中的命令一般都可以携带一些参数来以更多特地的方式执行,我们可以在创建用户时,添加一些额外的参数来进行更多高级操作:

  • -d<登录目录>  指定用户登录时的起始目录。
  • -g<群组>  指定用户所属的群组。
  • -G<群组>  指定用户所属的附加群组。
  • -m  自动建立用户的登入目录。
  • -M  不要自动建立用户的登入目录。
  • -s 指定Shell,一般指定为/bin/bash

如果还想查看更多命令,可以直接使用man来查看命令的详细参数列表,比如:

shell 复制代码
man useradd

比如我们现在需要在用户创建时顺便创建用户的文件夹,并指定shell(任意一种命令解释程序,用于处理我们输入的命令)为bash:

shell 复制代码
sudo useradd study -m -s /bin/bash

可以看到已经自动在home目录下创建了study文件夹(这里..表示上一级目录,.表示当前目录):

shell 复制代码
test@ubuntu-server:~$ ls ..
study  test

用户创建完成之后,我们可以为此用户设定密码(如果不指定用户,那么会设置当前用户的密码):

shell 复制代码
sudo passwd study

输入密码之后,我们可以使用命令来切换用户:

shell 复制代码
test@ubuntu-server:~$ su - study
Password: 
study@ubuntu-server:~$ 

可以看到,切换用户后名称已经修改为study了,我们使用exit即可退出当前用户回到test。

输入who可以查看当前登录账号(注意是登录的账号)输入whoami可以查看当前的操作账号:

shell 复制代码
test@ubuntu-server:~$ su study
Password: 
study@ubuntu-server:/home/test$ cd ~
study@ubuntu-server:~$ who
test     pts/0        2022-01-24 03:57 (192.168.10.3)
study@ubuntu-server:~$ whoami
study
study@ubuntu-server:~$ 

接着我们来看用户组,每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。我们可以输入groups来查看当前用户所有的用户组:

sh 复制代码
test@ubuntu-server:~$ groups
test adm cdrom sudo dip plugdev lxd

我们可以输入id来查看用户所属的用户相关信息:

sh 复制代码
test@ubuntu-server:~$ id
uid=1000(test) gid=1000(test) groups=1000(test),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lxd)

我们可以看到test用户默认情况下主要用户组为同名的test用户组,并且还属于一些其他的用户组,其中sudo用户组就表示可以执行sudo命令,我们发现我们创建的study用户没有sudo的执行权限:

sh 复制代码
study@ubuntu-server:~$ sudo -s
[sudo] password for study: 
study is not in the sudoers file.  This incident will be reported.

正是因为没有加入到sudo用户组,这里我们来尝试将其添加到sudo用户组:

sh 复制代码
test@ubuntu-server:~$ id study
uid=1001(study) gid=1001(study) groups=1001(study)

使用usermod命令来对用户的相关设置进行修改,参数与useradd大致相同:

sh 复制代码
test@ubuntu-server:~$ sudo usermod study -G sudo
test@ubuntu-server:~$ id study
uid=1001(study) gid=1001(study) groups=1001(study),27(sudo)

接着切换到study用户就可以使用sudo命令了:

sh 复制代码
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

study@ubuntu-server:/home/test$ sudo -s
[sudo] password for study: 
root@ubuntu-server:/home/test# 

实际上,我们的用户信息是存储在配置文件中的,我们之前说了,配置文件一般都放在etc目录下,而用户和用户组相关的配置文件,存放在/etc/passwd/etc/group中,我们可以使用cat命令将文件内容打印到控制台:

bash 复制代码
test@ubuntu-server:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

格式为:注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 ,而我们的密码则存放在/etc/shadow中,是以加密形式存储的,并且需要root权限才能查看。


常用命令

接着我们来看一下Linux系统中一些比较常用的命令。

文件操作

文件是最基本的内容,我们可以使用ls命令列出当前目录中所有的文件,参数-a表示包含所有的隐藏文件,-l表示列出详细信息:

sh 复制代码
test@ubuntu-server:~$ ls -al
total 44
drwxr-xr-x 4 test test 4096 Jan 24 08:55 .
drwxr-xr-x 4 root root 4096 Jan 24 04:24 ..
-rw------- 1 test test 2124 Jan 24 04:29 .bash_history
-rw-r--r-- 1 test test  220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 test test 3771 Feb 25  2020 .bashrc
drwx------ 2 test test 4096 Jan 21 15:48 .cache
drwx------ 3 test test 4096 Jan 23 14:49 .config
-rw-r--r-- 1 test test  807 Feb 25  2020 .profile
-rw------- 1 test test   34 Jan 24 04:17 .python_history
-rw-r--r-- 1 test test    0 Jan 21 15:52 .sudo_as_admin_successful
-rw------- 1 test test 7201 Jan 24 08:55 .viminfo

可以看到当前目录下的整个文件列表,那么这些信息各种代表什么意思呢,尤其是最前面那一栏类似于drwxr-xr-x的字符串。

它表示文件的属性,其中第1个字符表示此文件的类型:-表示普通文件,l为链接文件,d表示目录(文件夹),c表示字符设备、b表示块设备,还有p有名管道、f堆栈文件、s套接字等,这些一般都是用于进程之间通信使用的。

第2-4个字符表示文件的拥有者(User)对该文件的权限,第5-7个字符表示文件所属用户组(Group)内用户对该文件的权限,最后8-10个字符表示其他用户(Other)对该文件的权限。其中r为读权限、w为写权限、x为执行权限,为了方便记忆,直接记UGO就行了。

比如drwxr-xr-x就表示这是一个目录,文件的拥有者可以在目录中读、写和执行,而同一用户组的其他用户只能读和执行,其他用户也是一样。

第二栏数据可以看到是一列数字,它表示文件创建的链接文件(快捷方式)数量,一般只有1表示只有当前文件,我们也可以尝试创建一个链接文件:

sh 复制代码
test@ubuntu-server:~$ ln .bash_logout kk

创建后,会生成一个名为kk的文件,我们对此文件的操作相当于直接操作.bash_logout,跟Windows中的快捷方式比较类似,了解一下即可。再次执行ll命令,可以看到.bash_logout的链接数变成了2。

第三栏数据为该文件或是目录的拥有者。

第四栏数据表示所属的组。

第五栏数据表示文件大小,以字节为单位。

第六栏数据为文件的最后一次修改时间

最后一栏就是文件名称了,就不多说了,再次提及..表示上级目录,.表示当前目录,最前面有一个.开头的文件为隐藏文件。可以看到上级目录(也就是/home目录)所有者为root,并且非root用户无法进行写操作,只能执行读操作,而当前目录以及目录下所有文件则属于test用户,test用户可以随意进行修改。

在了解了Linux的文件查看之后再去看Windows的文件管理,会觉得Windows的太拉了:

img

那么,如果我们希望对文件的属性进行修改,比如我们现在希望将某个文件的写权限给关闭,可以使用chmod命令来进行文件属性修改,我们先创建一个test文件,使用touch命令来创建文件,使用mkdir命令来创建目录:

shell 复制代码
test@ubuntu-server:~$ touch test
test@ubuntu-server:~$ ll test
-rw-rw-r-- 1 test test 0 Jan 24 09:32 test

可以看到文件创建之后的默认权限为可读可写,接着我们来将其修改为只读,chmod的使用方法如下:

  • chmod (u/g/o/a)(+/-)(r/w/x) 文件名称

我们可以从ugo中选择或是直接a表示所有,+和-表示添加和删除权限,最后rwx不用我说了吧

sh 复制代码
test@ubuntu-server:~$ chmod a-w test
test@ubuntu-server:~$ ll test
-r--r--r-- 1 test test 0 Jan 24 09:32 test

除了这种方式之外,我们也可以使用数字来代替,比如现在我要给前两个添加读权限,那么:

约定:r=4,w=2,x=1,需要什么权限就让对应权限的数字相加,一个数字表示一个rwx的权限状态,比如我们想修改为-rw-rw-r--,那么对应的数字就是664,对应的命令为:

sh 复制代码
test@ubuntu-server:~$ chmod 664 test
test@ubuntu-server:~$ ll test
-rw-rw-r-- 1 test test 0 Jan 24 09:32 test

如果我们想修改文件的拥有者或是所属组,可以使用chownchgrp命令:

sh 复制代码
test@ubuntu-server:~$ sudo chown root test 
test@ubuntu-server:~$ ls -l
total 0
-rw-rw-r-- 1 root test 0 Jan 24 10:43 test
test@ubuntu-server:~$ sudo chgrp root test 
test@ubuntu-server:~$ ls -l
total 0
-rw-rw-r-- 1 root root 0 Jan 24 10:43 test

再次操作该文件,会发现没权限:

sh 复制代码
test@ubuntu-server:~$ chmod 777 test 
chmod: changing permissions of 'test': Operation not permitted

接着我们来看文件的复制、移动和删除,这里我们先创建一个新的目录并进入到此目录用于操作:

sh 复制代码
test@ubuntu-server:~$ mkdir study
test@ubuntu-server:~$ cd study
test@ubuntu-server:~/study$

首先我们演示文件的复制操作,文件的复制使用cp命令,比如现在我们想把上一级目录中的test文件复制到当前目录中:

sh 复制代码
test@ubuntu-server:~/study$ cp ../test test
test@ubuntu-server:~/study$ ls
test

那么如果我们想要将一整个目录进行复制呢?我们需要添加一个-r参数表示将目录中的文件递归复制:

sh 复制代码
test@ubuntu-server:~/study$ cd ~
test@ubuntu-server:~$ cp -r study study_copied
test@ubuntu-server:~$ ls -l
total 8
drwxrwxr-x 2 test test 4096 Jan 24 10:16 study
drwxrwxr-x 2 test test 4096 Jan 24 10:20 study_copied
-rw-rw-r-- 1 test test    0 Jan 24 09:32 test

可以看到我们的整个目录中所有的文件也一起被复制了。

接着我们来看看移动操作,相当于是直接将一个文件转移到另一个目录中了,我们再创建一个目录用于文件的移动,并将test文件移动到此目录中,我们使用mv命令进行文件的移动:

sh 复制代码
test@ubuntu-server:~$ mkdir study2
test@ubuntu-server:~$ mv test study2
test@ubuntu-server:~$ ls
study  study2  study_copied
test@ubuntu-server:~$ cd study2
test@ubuntu-server:~/study2$ ls
test

现在我们想要移动个目录到另一个目录中,比如我们想将study目录移动到study2目录中:

sh 复制代码
test@ubuntu-server:~$ mv study study2
test@ubuntu-server:~$ ls
study2  study_copied
test@ubuntu-server:~$ cd study2
test@ubuntu-server:~/study2$ ls
study  test

mv命令不仅能实现文件的移动,还可以实现对文件重命名操作,比如我们想将文件test重命名为yyds,那么直接将其进行移动操作即可:

sh 复制代码
test@ubuntu-server:~/study2$ ls
study  test
test@ubuntu-server:~/study2$ mv test yyds
test@ubuntu-server:~/study2$ ls
study  yyds

最后就是删除命令了,使用rm进行删除操作,比如现在我们想删除study2目录(注意需要添加-r参数表示递归删除文件夹中的内容):

sh 复制代码
test@ubuntu-server:~$ rm -r study2
test@ubuntu-server:~$ ls
study_copied

而最常提到的rm -rf /*正是删除根目录下所有的文件(非常危险的操作),-f表示忽略不存在的文件,不进行任何提示,*是一个通配符,表示任意文件。这里我们演示一下删除所有.txt结尾的文件:

sh 复制代码
test@ubuntu-server:~$ touch 1.txt 2.txt 3.txt
test@ubuntu-server:~$ ls
1.txt  2.txt  3.txt
test@ubuntu-server:~$ rm *.txt
test@ubuntu-server:~$ ls
test@ubuntu-server:~$ 

最后我们再来看文件的搜索,我们使用find命令来进行搜索,比如我想搜索/etc目录下名为passwd的文件:

复制代码
test@ubuntu-server:~$ sudo find /etc -name passwd
[sudo] password for test: 
/etc/pam.d/passwd
/etc/passwd

它还支持通配符,比如搜索以s开头的文件:

复制代码
test@ubuntu-server:~$ sudo find /etc -name s*
/etc/subuid
/etc/screenrc
/etc/sensors3.conf
/etc/sysctl.conf
/etc/sudoers
/etc/shadow
/etc/skel
/etc/pam.d/su
/etc/pam.d/sshd
/etc/pam.d/sudo
...
大纲 (于 2025年1月1日 更新)
正在加载页面,请稍后...