目录
一、学习使用AI
二、安装Ubuntu
1、启用Linux 子系统功能
2、安装Virtual Box虚拟机
3、配置Ubuntu
4、成功安装并运行
4.1 遇到的问题1
5、安装增强功能
5.1 遇到的问题2
6、挂载共享文件夹
三、安装openeuler Linux
1、安装好openeuler
2、安装好图形界面
3、遇到的问题3
四、通过别出心裁的Linux命令学习法,学习Linux核心命令
1、快捷键学习
2、Linux命令
3、man命令
4、 Cheat命令
5、其他核心命令
6、终端“每日提醒”学习
五、在“实验楼”中学习「Linux 基础入门(新版)」
(1)实验一:Linux系统简介
(2)实验二:基本概念及操作
(3)实验三:用户及文件权限管理
(4)实验四:Linux目录结构及文件基本操作
(5)实验五:环境变量与文件查找
(6)挑战1 寻找文件
六、小结
第一周作业内容:
一、学习使用AI
二、参考Linux系统安装图文教程安装Ubuntu和Openeuler
三、参考别出心裁的Linux命令学习法学习Linux核心命令
四、重要:学习「Linux 基础入门(新版)」
1、苏格拉底挑战:
2、遇到的问题1(请在二、安装Ubuntu中查看具体原因)
3、遇到的问题2(请在二、安装Ubuntu中查看具体原因)
4、遇到的问题3(请在三、安装openeuler Linux中查看具体原因)
安装好虚拟机并准备安装Ubuntu系统时,出现了异常退出的情况,经过百度查询以及询问Chatgpt发现原因是我的电脑上存在两个虚拟机:VMware和Virtural Box,此时需要进行虚拟化的开启以实现同时开启多个虚拟机的功能。因此需要重启电脑进入Bios,打开虚拟化,才能正常运行Ubuntu。
根据博客进行增强功能的安装。
经过百度查询以及询问Chatgpt发现,必须赋予当前账户root权限,才能进行增强功能的安装,否则将提示你当前账户不是sudoers,即不属于管理组。如下图所示: 因此需要对当前用户进行赋予Root权限操作,即可利用Vim进入/etc/sudoers文件进行修改,赋予当前账号root权限,即加入以下代码:"ysc ALL=(ALL:ALL) ALL",再进行强制保存操作":wq!",保存当前文件,从而达到赋予权限的功能。
最后成功安装功能增强模块。
这一步较为简单,跟随博客一步一步来即可:
安装结果如下:
图形化界面登录后黑屏
经过百度查询以及询问Chatgpt发现原因:
在Virtual Box虚拟机软件里面,可以调整一下设置:修改显卡为第三个:VBoxSVGA
,虽然VirtualBox会提醒你这个选项无效,但是这里要拒绝它的体形,保存修改,再开启欧拉操作系统,UKUI图形界面登陆后就可以不再黑屏。
首先,我们使用的Linux发行版是Ubuntu,使用Ubuntu有几个快捷键要掌握一下,可以提高使用命令行的效率:
1、CTRL+ALT+T:
打开终端,天天使用终端,用鼠标打开太低效了;
2、CTRL+SHIFT+T
:新建标签页,编程时有重要应用;
3、ALT+数字N
:终端中切换到第N个标签页,编程时有重要应用;
4、Tab:
终端中命令补全,当输入某个命令的开头的一部分后,按下Tab
键就可以得到提示或者帮助完成;
5、上下键盘
:切换命令历史,刚输入一个很长的命令,按上
键就可以恢复;
6、CTRL+C:
中断程序运行。
Linux中命令格式为:
command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数 其中选项(options)是调整命令执行行为的开关,选项不同决定了命令的显示结果不同,参数(arguements)是指命令的作用对象。
如ls命令,ls
或ls .
是两条等价的命令,显示是当前目录的内容,这里“.”就是参数,表示当前目录,这个参数缺省可以省略。我们可以用ls -a .
显示当前目录中的所有内容,包括隐藏文件和目录。其中“-a”就是选项,改变了显示的方式,如下图所示:
man命令是用来查看帮助文档的,全称为manual。通过man等操作,可以实现各种帮助文档的查看,从而更好地学习Linux并进行Linux的日常使用。
cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
成功安装:
使用如下图,但发现无权限,有待考究:
和查找相关的核心命令还有find,locate,grep,whereis,which等 。
我们可以让终端自动给我们个每日提示,让我们的学习自动化,更娱乐化一点,我们先安装cowsay。在Ubuntu下安装cowsay:
sudo apt-get install cowsay
安装cowsay后,利用vim进入.bashrc文件,并在其中增加下面一行:
cowsay -f $(ls /usr/share/cowsay/cows | shuf -n 1 | cut -d. -f1) $(whatis $(ls /bin) 2> /dev/null | shuf -n 1)
此后,每次打开命令行都会出现类似的一下内容,就可以了解一个随机的Linux命令:
本实验较为简单,主要是了解Linux系统概念等,故简单记录,主要知识点如下:
- linux 为何物
- linux 历史简介
- linux 重要人物
- linux 与 windows 的不同
- 如何学习 linux
实验内容:
- 实验楼环境介绍
- 常用 Shell 命令及快捷键
- Linux 使用小技巧
- 作业
1、实验楼环境
相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,类似 Windows95 之前的 Windows 的图形界面实则也只是运行在 DOS 环境的一套软件。而 Linux 上的这套软件以前是 XFree86,现在则是 xorg(X.Org),而这套软件又是通过 X 窗口系统(X Window System,也常被称为 X11 或 X)实现的,X 本身只是工具包及架构协议,而 xorg 便是 X 架构规范的一个实现体,也就是说它是实现了 X 协议规范的一个提供图形界面服务的服务器,就像实现了 http 协议提供 web 服务的 Apache 。如果只有服务器也是不能实现一个完整的桌面环境的,当然还需要一个客户端,我们称为 X Client,像如下几个大家熟知也最流行的实现了客户端功能的桌面环境 KDE,GNOME,XFCE,LXDE 。其中就有你看到的,实验楼目前使用的 XFCE 桌面环境,部分老用户可能可以回想起,实验楼之前使用的环境是 LXDE 。这也意味着在 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面。
2、常用Shell命令及快捷键
2.1 常用快捷键
Tab |
补全命令、目录、命令参数等补全操作 |
Ctrl+c |
强行终止当前程序 |
Ctrl+d |
键盘输入结束或退出终端 |
Ctrl+s |
暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z |
将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a |
将光标移至输入行头,相当于Home 键 |
Ctrl+e |
将光标移至输入行末,相当于End 键 |
Ctrl+k |
删除从光标所在位置到行末 |
Alt+Backspace |
向前删除一个单词 |
Shift+PgUp |
将终端显示向上滚动 |
Shift+PgDn |
将终端显示向下滚动 |
2.2 历史输入命令
使用键盘上的方向上键↑
,恢复之前输入过的命令。
2.3 使用通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
使用通配符创建多个文件:
Shell 常用通配符:
字符 | 含义 |
---|---|
* |
匹配 0 或多个字符 |
? |
匹配任意一个字符 |
[list] |
匹配 list 中的任意单一字符 |
[^list] |
匹配 除 list 中的任意单一字符以外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意单一字符 如:[0-9][a-z] |
{string1,string2,...} |
匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} |
匹配 c1-c2 中全部字符 如{1..10} |
3、 Linux使用小技巧——在命令行中获取帮助
可以使用man
命令,它是Manual pages
的缩写。Manual pages 是 UNIX 或类 UNIX 操作系统中在线软件文档的一种普遍的形式, 内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man
命令调用手册页。
这在上述内容中已经学习过,就不再展示。
4、作业
一个可以输出图形字符的命令banner:
若觉得这字体不好看,便可使用默认已经安装的一个命令printerbanner
:
printerbanner -w 50 A
还有两个类似的命令toilet
,figlet,通过安装后,也可以实现趣味的文字输出:
此外,还可以实现更复杂的文字展示,如渐变RGB色彩等:
实验内容:
- Linux 中创建、删除用户,及用户组等操作。
- Linux 中的文件权限设置。
1、查看用户
who命令的使用
例如,使用who am i或who mom likes可以查看当前的用户及用户名:
其他的who命令:
参数 | 说明 |
---|---|
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i ,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
2、创建用户
在 Linux 系统里, root
账户拥有整个系统至高无上的权限,比如新建和添加用户。
root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,这个操作等同于在 Windows 下就是将新建的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
大部分 Linux 系统在安装时都会建议用户新建一个用户而不是直接使用 root 用户进行登录,当然也有直接使用 root 登录的例如 Kali(基于 Debian 的 Linux 发行版,集成大量工具软件,主要用于数字取证的操作系统)。一般我们登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo
这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo
用户组。shiyanlou 用户也属于 sudo 用户组(稍后会介绍如何查看和添加用户组)。
su,su - 与sudo:
su
可以切换到用户 user,执行时需要输入目标用户的密码,sudo
可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su -
命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。
下面使用以下代码创建一个新用户:
sudo adduser lilei
3、用户组
在 Linux 里面知道自己属于哪些用户组的方法:
方法一:使用 groups 命令
方法二:查看/etc/group文件
例如,这里shiyanlou账号即属于shiyanlou sudo public ssl-cert这个用户组。
将lilei用户加入用户组:
4、删除用户和用户组
使用 --remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。
删除用户组可以使用 groupdel
命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。
5、文件权限
查看文件权限:
ls -l
6、变更文件所有者
重新建立一个lilei账户,切换到 lilei 用户,然后在 /home/lilei 目录新建一个文件,命名为 iphone11,
可见文件所有者是 lilei :
现在切换回到 shiyanlou 用户,使用以下命令变更文件所有者为 shiyanlou。
# 需要切换到 shiyanlou 用户执行以下操作
cd /home/lilei
ls iphone11
sudo chown shiyanlou iphone11
使用以下代码修改权限,发现lilei账户无法进行该文件的访问或修改等操作:
chmod 600 iphone11 ls -alh iphone11
8、adduser
和 useradd
的区别
useradd
只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd
去设置新用户的密码。adduser
在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。其实 useradd
、userdel
这类操作更像是一种命令,执行完了就返回。而 adduser
更像是一种程序,需要你输入、确定等一系列操作。
9、作业
添加一个用户 loutest
,使用 sudo
创建文件 /opt/forloutest
,设置成用户 loutest
可以读写。
首先,先添加用户loutest:
sudo adduser loutest
切换到shiyanlou这个root权限账户,进行loutest账户的权限修改,即将其加入sudo 用户组,让它也可以使用 sudo 命令获得 root 权限 。
su - shiyanlou
groups loutest
sudo usermod -G sudo loutest
groups loutest
接下来切换到loutest账户,使用root权限
su - loutest
得到root权限后,即可使用touch来新建文件/opt/forloutest,
因为执行 sudo touch /opt/forloutest
这个命令创建一个空文件的前提是 loutest 用户需要具备 sudo 权限。
sudo touch /opt/forloutest
成功创建文件后,可以设置文件的权限了,即设置成用户 loutest
可以读写的权限。下面是修改权限的代码并查看权限的代码:
chmod 600 forloutest #修改权限
ls -alh forloutest #查看权限
查看权限如下,即只有loutest这个创建者有读写权限,其余人没有任何权限:
实验内容:
- Linux 的文件组织目录结构。
- 相对路径和绝对路径。
- 对文件的移动、复制、重命名、编辑等操作。
1、Linux 的文件组织目录结构
使用“tree /”命令进行查看。
2、相对路径和绝对路径
顾名思义,路径就是你要去哪儿的路线嘛。如果你想进入某个具体的目录或者想获得某个目录的文件(目录本身也是文件)那就得用路径来找到了。
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(注意,我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件),- 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
3、文件常用的基本操作,包括:新建、复制、删除、移动文件与文件重命名、查看文件、查看文件类型、以及编辑文件。
新建空白文件:
使用 touch
命令创建空白文件,关于 touch
命令,其主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件),当然你也可以同时指定该文件的时间戳。
创建名为 test 的空白文件,因为在其它目录没有权限,所以需要先 cd ~
切换回 shiyanlou 用户的 Home 目录:
cd ~ touch test
新建目录:
使用 mkdir
(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
创建名为“ mydir ”的空目录:
mkdir mydir
使用 -p
参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
mkdir -p father/son/grandson
这里使用的路径是相对路径,代表在当前目录下生成,当然我们直接以绝对路径的方式表示也是可以的。
重新使用"touch test",将会覆盖原文件
复制文件:
使用 cp
命令(copy)复制一个文件到指定目录。
将之前创建的 test
文件复制到 /home/shiyanlou/father/son/grandson
目录中:
cp test father/son/grandson
复制目录:
要成功复制目录需要加上 -r
或者 -R
参数,表示递归复制,就是说有点“株连九族”的意思:
cd /home/shiyanlou
mkdir family
cp -r father family
删除
使用 rm
(remove files or directories)命令删除一个文件:
rm test
有时候你会遇到想要删除一些为只读权限的文件,直接使用 rm
删除会显示一个提示,如下:
你如果想忽略这提示,直接删除文件,可以使用 -f
参数强制删除:
rm -f test
删除目录:
跟复制目录一样,要删除一个目录,也需要加上 -r
或 -R
参数:
rm -r family
遇到权限不足删除不了的目录也可以和删除文件一样加上 -f
参数:
rm -rf family
移动文件:
使用 mv
(move or rename files)命令移动文件(剪切)。命令格式是 mv 源目录文件 目的目录
。
例如将文件“ file1 ”移动到 Documents
目录:
mkdir Documents touch file1 mv file1 Documents
重命名文件:
mv
命令除了能移动文件外,还能给文件重命名。命令格式为 mv 旧的文件名 新的文件名
。
例如将文件“ file1 ”重命名为“ myfile ”:
mv file1 myfile
查看文件类型:
我们可以使用 file
命令查看文件的类型:
file /bin/ls
编辑文件:
在Linux 下面编辑文件通常我们会直接使用专门的命令行编辑器比如(emacs,vim,nano),由于涉及 Linux 上的编辑器的内容比较多,且非常重要,故我们有一门单独的基础课专门介绍这中一个编辑器 vim 。
3、作业:
1、创建一个 homework 目录,建立名为 1.txt ~ 10.txt 文件,并删除 1.txt ~ 5.txt
首先使用以下代码创建homework目录:
mkidr homework
首先进入目录后,利用以下代码批量建立文件夹:
touch {1..10}.txt
再使用以下代码删除 1.txt ~ 5.txt
rm {1..5}.txt
2、Linux 的日志文件在哪个目录?
在/var/log目录
实验内容:
本节实验介绍环境变量的作用与用法,及几种搜索文件的方法。学会这些技巧可以高效地使用 Linux 。
1、环境变量
通常我们会涉及到的变量类型有三种:
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。
也有三个与上述三种环境变量相关的命令:set
,env
,export
。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。详见下表:
命 令 | 说 明 |
---|---|
set |
显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env |
显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export |
显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
2、命令的查找路径和顺序
这一节介绍了Shell 是怎么知道去哪找到这个命令然后执行命令。这是通过环境变量 PATH
来进行搜索的,这个 PATH
里面就保存了 Shell 中执行的命令的搜索路径。
3、添加自定义路径到“ PATH ”环境变量
在前面我们应该注意到 PATH
里面的路径是以 :
作为分割符的,所以我们可以这样添加自定义路径:
PATH=$PATH:/home/shiyanlou/mybin
注意这里一定要用绝对路径。
现在你就可以在任意目录执行那两个命令了(注意需要去掉前面的 ./
)。你可能会意识到这样还并没有很好的解决问题,因为我给 PATH 环境变量追加了一个路径,它也只是在当前 Shell 有效,我一旦退出终端,再打开就会发现又失效了。有没有方法让添加的环境变量全局有效?或者每次启动 Shell 时自动执行上面添加自定义路径到 PATH 的命令?下面我们就来说说后一种方式——让它自动执行。
在每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh,它的配置文件是 .zshrc
,相应的如果使用的 Shell 是 Bash,则配置文件为 .bashrc
。它们在 etc
下还都有一个或多个全局的配置文件,不过我们一般只修改用户目录下的配置文件。Shell 的种类有很多,可以使用 cat /etc/shells
命令查看当前系统已安装的 Shell。
我们可以简单地使用下面命令直接添加内容到 .zshrc
中:
echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
上述命令中 >> 表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 > 是以覆盖的方式重定向到一个文件中,使用的时候一定要注意分辨。在指定文件不存在的情况下都会创建新的文件。
4、修改和删除已有变量
变量修改:
变量的修改有以下几种方式:
变量设置方式 | 说明 |
---|---|
${变量名#匹配字串} |
从头向后开始匹配,删除符合匹配字串的最短数据 |
${变量名##匹配字串} |
从头向后开始匹配,删除符合匹配字串的最长数据 |
${变量名%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最短数据 |
${变量名%%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最长数据 |
${变量名/旧的字串/新的字串} |
将符合旧字串的第一个字串替换为新的字串 |
${变量名//旧的字串/新的字串} |
将符合旧字串的全部字串替换为新的字串 |
比如我们可以修改前面添加到 PATH 的环境变量,将添加的 mybin 目录从环境变量里删除。为了避免操作失误导致命令找不到,我们先将 PATH 赋值给一个新的自定义变量 mypath:
mypath=$PATH
echo $mypath
mypath=${mypath%/home/shiyanlou/mybin}
# 或使用通配符 * 表示任意多个任意字符
mypath=${mypath%*/mybin}
可以看到路径已经不存在了:
变量删除:
可以使用 unset
命令删除一个环境变量:
unset mypath
5、如何让环境变量立即生效
前面我们在 Shell 中修改了一个配置脚本文件之后(比如 zsh 的配置文件 home 目录下的 .zshrc
),每次都要退出终端重新打开甚至重启主机之后其才能生效,很是麻烦,我们可以使用 source
命令来让其立即生效,如:
cd /home/shiyanlou
source .zshrc
source
命令还有一个别名就是 .
,上面的命令如果替换成 .
的方式就该是:
. ./.zshrc
在使用 .
的时候,需要注意与表示当前路径的那个点区分开。
注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source
则不需要。
6、搜索文件
与搜索相关的命令常用的有 whereis
,which
,find
和 locate
。
whereis
简单快速locate
快而全which
小而精find
精而细
7、轻松一下——黑客帝国
《黑客帝国》电影里满屏幕代码的“数字雨”,在 Linux 里面你也可以轻松实现这样的效果,你只需要一个命令 cmatrix
。
先安装所需环境:
sudo apt-get update
sudo apt-get install cmatrix
安装好后直接输入 cmatrix:
也可以改变颜色:
cmatrix -C red
8、作业:寻找文件
找出 /etc/
目录下的所有以 .list
结尾的文件。
有多种方法可以实现,这里使用了locate和find两个命令来实现:
locate /etc/*.list
sudo find /etc/ -name "*.list"
有一个非常重要的文件(sources.list
)但是你忘了它在哪了,你依稀记得它在 /etc/
目录下,现在要你把这个文件找出来,然后设置成自己(shiyanlou 用户)可以访问,但是其他用户并不能访问。
#查找文件
sudo find /etc -name sources.list
#把文件所有者改成shiyanlou
sudo chown shiyanlou /etc/apt/sources.list
#赋予权限
sudo chmod 600 /etc/apt/sources.list
#最后查看权限,查看结果
ls -alh /etc/apt/sources.list
通过本周的Linux系统学习,我学会了很多,首次安装了Ubuntu和Openeuler两个不同版本的Linux操作系统,并进行了虚拟机的配置,以及各种Linux命令的学习。此外,我还学习了如何使用AI工具如Chatgpt来解决学习上遇到的问题,并通过苏格拉底提问进行了Linux相关知识的学习。希望接下来的课程中能够有更大的进步。