LINUX
@[toc] # 学习目标- 独立安装LINUX
- 掌握常用命令的使用
- 掌握系统管理方法
- 熟悉LINUX服务器的搭建
操作系统
操作系统的定义:
操作系统(OS)是管理计算甲硬件与软件资源的计算机程序。
操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。
操作系统也提供一个让用户与系统交互的操作界面。
常用的操作系统:
服务器:Linux、Unix、Windows server
个人电脑:Windows、macOS
手机/pad:iOS、Android
Linux基本使用
命令行与图形化的选择:
Linux平常工作中使用都是远程连接到服务器,图形界面操作效率低,而且占用内存高,网络带宽占用也更高,所以都是使用命令行指令操作。
打开终端:
开机进入系统,输入密码登录后,桌面点击右键,选择
打开终端
[root@]ocalhost ~]# :
root:当前登录的用户
@localhost:当前登录的系统名
~:当前所在目录,
~
表示当前用户的主目录#:代表管理员权限
$;代表普通用户权限
Linux命令
linux命令的通用基本格式:
命令 -选项 参数1 参数2 参数n
执行命令,输入好命令后回车,命令就执行了!
重点是命令与重要选项与参数的组合
ls命令:
功能:列出目录中的文件和文件夹。
语法:
ls [选项] [目录或是文件]
# 注意命令与选项、参数之间有空格常用命令:
ls -l
# 列出当前目录中的文件列表的详细信息(不显示隐藏文件)
ls -a
# 列出当前目录中的所有文件,包括隐藏文件
ll
# 等同于ls -l
ls /etc
# 列出/etc目录下的文件信息
ls -al
# 可以将单字母的选项一起写,两个功能都实现相当于ls -a -l
注:Linux中的隐藏文件或文件夹名字以
.
开头
文件参数详解:
对于文件:链接数为硬链接的数量
对于文件夹:链接数为子文件夹的数量
命令注意事项:
- 区分大小写!
- 注意命令与选项、参数之间的空格!
- 注意单词的拼写!
常用快捷键:
- 上下键:选择之前执行过的历史命令。
history
指令可以查看历史指令列表- Tab键:自动补全准备输入的命令或文件名,如果按一下没有补全,就按两下,会列出所有可能的结果
- CTRL+C:结束正在执行的命令。(如果还结束不了,关闭终端窗口。)
- clear或CTRL+L:清除屏幕中的内容
远程登录Linux
常用软件:
- Xshell软件
- 功能:虚拟终端,远程登录到Linux服务器,执行命令。
- Xftp软件
- 功能:可以方便地在windows上管理Linux上的文件。
帮助命令:
man命令:例
man ls
可按上下键查看上一行或下一行,空格翻页,按q键退出
help命令:例
ls --help
其他方式:使用搜索引擎查找
ifconfig命令:
功能:查看本机的ip地址
关机命令:
shutdown -h 20:25
在20:25分关机
shutdown -h +10
10分钟后关机
shutdown -c
取消关机进程
shutdown -h now
立即关机poweroff 也是立即关机(不能设置关机时间)
halt 也是立即关机(vmware虚拟机对这个支持不好,会卡住)
重启命令:
reboot
立即重启shutdown -r now
也是立即重启
init指令:
init 0
关机init 3
加载为文字界面init 5
加载为图形界面init 6
重启
Linux命令 - vi
命令行模式:
在一般模式下,按:
键可进入命令行模式。命令行模式下输入:wq
回车,则保存文件并退出编辑。:q!
则不保存,直接退出编辑。
命令行模式下,可按ESC键返回到一般模式。
# 注意看界面左下角,有没有--insert--
或--插入--
字样,有的话就是编辑模式。如果左下角是:
且光标在下面则是命令行模式。如果左下角为/
则为一般模式的查询模式。
一般模式下常用指令:
- 移动光标:上下左右键
- 删除一个字符:
x
- 删除一行:
dd
# 删除多行就先按一下数字再按dd- 还原上一次修改:
u
- 不撤销刚才的还原操作:
CTRL+r
# 与u键功能相反- 移动光标到某行的末尾:
$
# 移动到一行的开头可以按0
- 移动光标到文档的最后一行:
G
# 注:是大写- 移动光标到文档的第一行:
gg
在一般模式下按
/
可查找文件中指定的字符。 例如:
/abc
回车,然后按n
往下查找下一个,N
往前查找上一个。
编辑模式下常用指令:
- 一般模式下按
i
进入编辑模式,在当前光标**前**开始编辑。- 一般模式下按
a
进入编辑模式,在当前光标所在字符**后面**开始编辑。- 一般模式下按
O
进入编辑模式,在当前光标**下一行**开始编辑。- 编辑模式下左下角会显示
--insert--
或--插入--
- 使用Xshell远程登录时,可以使用右键**复制,粘贴**功能。
- 编辑模式下按
ESC
键可返回到一般模式。注意:输入内容的时候不要使用小键盘,vi不兼容小键盘输入
命令行模式下常用指令:
在一般模式下按
:
进入命令行模式
-
:wq
回车,保存文件的修改并退出。:wa!
则为强制保存-
:q!
回车,不保存修改,并退出。-
:w
回车,保存修改,不退出。-
:w 新文件名
把当前内容存为另一个指定文件名的文件。(相当于 另存为…)-
:set nu
回车,显示行号。set nonu
不显示行号-
:5
回车,光标移动到第5行。要定位到第几行就写几命令行模式下,按ESC返回一般模式
touch命令:
功能:如果指定文件不存在,则新建一个空白文件。如果指定文件存在,则变更文件修改时间。
常用指令:
touch file
新建一个空白的file文件或如果已存在,则修改时间。
CD命令:
功能:进入指定目录
常用命令:
cd
# 不带参则进入当前账户的主目录或cd ~
cd ..
# 进入上一级目录,注意空格
cd /etc
# 进入根目录下的etc目录(绝对路径,从/开始)
cd abc
# 进入当前目录中的abc文件夹。(相对路径,从当前路径开始)
cd ../usr
# 当前目录的上一级目录中找到usr目录,并进入。(相对路径)
cd /
# 进入根目录
Linux命令 - 文件与目录操作
pwd命令:
功能:显示当前所在目录
mkdir命令:
功能:新建文件夹
常用命令:
mkdir abc
# 在当前目录下新建一个名为abc的文件夹,注意空格
mkdir -p aaaa/bbbb/cccc
# 新建一个名为aaaa文件夹中再建一个bbbb文件夹再在里面建 一个cccc文件夹cp命令:
功能:复制文件或目录
语法:
cp -选项 源 目标
常用命令:
cp file1 abc/
# 将当前目录中的file1文件复制到当前目录下的abc目录中
cp/root/file/home/file2
# 将root目录中的file文件复制到home目录下,并改名为file2
cp -r abc/ /tmp/bcd/
# 将当前目录下abc文件夹复制到根目录下的tmp目录中的bcd文件夹 中(复制文件夹要加-r
)注意:最前面的
/
是根目录的意思,最后面的斜杠是表示这是一个文件夹,文件夹目录名字后面一般写个/
不容易搞混!
mv命令:
功能:移动文件或目录。也可改名。
语法:
mv 源 目标
常用命令:
mv /root/file/home/
# 将/root目录中的file文件移动到/home目录下
mv test/ /test2/
# 将当前目录下的test文件夹移动到/test2目录下
mv a.txt b.txt
# 把当前目录下的a.txt改名为b.txtrm命令:
功能:删除文件或文件夹
常用命令:
rm aaa
# 删除当前目录下的aaa,有是否删除的提示
rm -r bbb
# 删除文件夹及里面的内容,需要加上-r
选项
rm -rf ccc
# 强制删除ccc,不提示注意:此操作很危险,要删除的文件名不要输错了!
cat命令:
功能:显示文件的内容
常用命令:
cat file
# 查看文件内容
cat -n file
# 查看文件内容,并显示行号重定向符号:> 、 2> 、 >> 、 2>>
功能:
>
将左边命令的输出覆盖到右边的文件中(右边的文件内容会被覆盖)
>>
将左边命令的输出追加到右边文件的末尾(不会覆盖原内容) 常用命令:
ifconfig > file2
# 将 > 左边的指令执行后打印在屏幕上的内容写入file2,并覆盖 file2原来的内容
echo “abc” >> file
# 将>>左边的指令执行后打印在屏幕上的内容追加到file文件末尾
LS 2> bbb
# 将错误信息输出到bbb文件中
more命令:
功能:文件内容较多时,只显示一部分,可以滚动查看内容。
常用命令:
more 文件路径
# 分页滚动查看指定文件的内容 在more中
空格键
向下翻页,回车键
向下滚动一行,b键
向上翻页,q键
退出less命令:
功能:和more功能一样,more的加强版,更方便操作
常用命令:
less 文件路径
# 分页滚动查看指定文件的内容 在less中,可以按上下键,上下滚动,
pageup
、pagedown
键上下翻页,q键
退出
head命令:
功能:只查看文件的前几行。默认显示10行。
常用命令:
head -5 aaa
# 查看aaa文件的前5行,想显示几行就写几行tail命令:
功能:只显示文件的后几行。默认显示10行
常用命令:
tail -f /var/log/messages
# 查看messages文件,并实时更新(可按CTRL+c
退出)
tail -5 aaa
# 查看文件后5行
管道命令 (|):
功能:将|左边命令的输出结果作为|右边命令的输入数据。
(左边指令的输出结果是指输出到屏幕上显示的内容)
功能示例:
ifconfig | head -5
# 将|左边的指令执行后打印到屏幕上的文字内容,作为|右边指 令的输入文件
链接文件:
Linux中有两种链接文件 符号链接(又叫软链接)和硬链接。
软链接文件相当于windows中的快捷方式。
硬链接文件相当于两个不同的文件名,但都指向同一份文件内容。
inode
相同ln命令:
功能:新建链接文件。
语法:ln -选项 源文件 链接文件
常用命令:
ln test hard
# 新建一个叫hard的硬链接文件,源文件为test
ln -s /root/test soft
# 新建一个叫soft的软链接文件,源文件路径为/root/test文件夹不能创建硬链接,可以创建软链接
文件参数详解:
对于文件:链接数为硬链接的数量+1
对于文件夹:链接数为子文件夹的数量
Linux一共有7种文件类型:
-
普通文件类型。包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩 文件d
目录、文件夹b
块设备文件。比如硬盘c
字符设备文件。比如鼠标、键盘s
套接字文件、这类文件通常用在网络数据连接p
管道文件。一种特殊的文件类型,解决多个程序同时存取一个文件所造成的的错误l
软链接文件。相当于windows中的快捷方式
rwx详解:
针对普通文件:
r(read):可读取此文件的实际内容,如读取文本内容
w(write):可以编辑、新增、修改文件内容
x(execute):文件可以被系统执行
针对目录:
r: 可以读取目录结构,ls指令
w: 具有更改该目录结构列表的权限,包括增、删、改文件
x: 允许进入目录,也就是可以cd进入
通用使用的数字值和其意义:
rw-------
(600) # 文件拥有者有读写权限,文件所属群组的用户无权限,其他用户无权限
rw-r--r--
(644) # 文件拥有者有读写权限,文件所属群组的用户只读权限,其他用户只读权限
rwxrwxrwx
(777) # 所有用户都有读、写、执行权限[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZtJy0PMm-1606814261140)(A:/markdown/images/DfVXgx.png)]
chmod命令:
功能:修改文件或目录的权限
常用命令:
chmod 644 file
# 将file 的权限改为rw-r- -r- -
chmod -R 777 folder
# 将folder目录及其里面的所有文件的权限改为rwxrwxrwx
chmod ug+w,o-x file
# 给file的拥有者和所属群组加上写权限,其他用户去掉执行权限 u:拥有者 g:所属群组 o:其他用户 a:所有人
chown命令:
功能:修改文件拥有者
语法:
chown -选项 拥有者:群组 目录或文件名
用法:
chown user file
# 将file的拥有者修改为user用户
chown -R user:group folder
# 将folder目录及其里面的所有文件的拥有者修改为user用户,所 属群组修改为group群组chgrp命令:
功能:修改文件所属群组
用法:
chgrp group file
# 将file的所属群组改为group
find命令:
功能:查找文件
常用命令:
find / -name file
# 在/目录下查找名字为file的文件
find / -name ‘rest*’
# 在/目录下查找名字为test开头的文件(模糊匹配)locate命令:
功能:查找文件,根据文件列表的数据库查找,速度快,但更新不及时
常用命令:
locate file
# 查找文件名为file的文件
updatedb
# 更新文件列表数据库
which命令:
功能:在当前用户的环境变量$PATH路径中寻找指令文件
用法:
which ls
# 查找ls指令所在文件夹whereis命令:
功能:查找指令文件,帮助文档及源代码等内容,和which类似,找到的文件多一些
用法:
whereis ls
grep命令:
功能:只显示文件中符合指定条件的行。通常配合管道
|
使用 常用命令:
grep word file
# 在file中查找包含word单词的行
grep -i word file
# 在file中查找包含word单词的行,忽略大小写
grep -n word file
# 查找并显示行号
ps -ef | grep crond
# 查找正在运行的进程中包含crond字符的行grep -E 或 grep -P 支持 正则表达式 语句来匹配
tar命令:
功能:文件打包与解包
常用命令:
tar -cvf test.tar file1 file2
# 将file1和file2文件打包为test.tar文件(不压缩)
tar -zcvf test.tar.gz file1 file2
# 将file1和file2文件打包到test.tar.gz的**压缩**文件
tar -xvf file.tar
# 将file.tar文件解包到当前文件夹
tar -zxvf file.tar.gz
# 将file.tar.gz.压缩文件解压到当前文件夹
tar -zxvf file.tar.gz -C folder/
# 将file.tar.gz压缩文件解压到当前目录下的folder目录中注意:-C指定的目录必须已存在,如果没有,先用mkdir创建好
gzip命令:
功能:将.gz后缀名的压缩文件解压或压缩一个文件
常用命令:
gzip testfile
# 压缩testfile文件为testfile.gz
gzip -d test.gz
# 将test.gz文件解压缩bzip2命令:
功能:将.bz2后缀名的压缩文件解压或压缩一个文件
常用命令:
bzip2 testfile
# 压缩testfile文件为testfile.bz2
bzip2 -d test.bz2
# 将test.bz2文件解压缩zip命令:
功能:将.zip后缀名的压缩文件解压或压缩一个文件
常用命令:
zip test.zip file1 file2
# 将file1和file2一起压缩到test.zip文件
unzip test.zip
# 将test.zip文件解压缩
unzip test.zip -d folder/
# 解压到指定folder目录
Linux命令 - 磁盘管理
df命令:
功能:查看硬盘使用情况
常用命令:
df -hT
# 硬盘容量,已使用容量,剩余容量等显示du命令:
功能:查看指定目录及其子目录容量使用量
常用命令:
du -sh /home
# 只查看home目录容量使用情况
mount命令:
功能:将硬盘,光盘等挂载到指定文件夹
用法:
mount /dev/cdrom /media
# 将光驱挂载到/media文件夹
umount /media
# 取消挂载/media注:Linux开机后会挂载/etc/fstab文件中指定的要挂载的目录和硬盘
Linux命令 - 用户与群组
Linux用户与群组:
Linux每个用户都属于一个或多个群组,自己的主群组和用户名相同。用户名保存在/etc/passwd文件中。密码保存在/etc/shadow文件中。群组信息保存在/etc/group文件中。
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUl4TXjG-1606814261141)(https://s3.ax1x.com/2020/12/01/DfynIS.png)]
它的内容类似下面的例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4BGwFPF-1606814261142)(https://s3.ax1x.com/2020/12/01/DfyDMR.png)]
useradd命令:
功能:新建用户。只有管理员root用户有这个权限
常用命令:
useradd testuser
# 新建名为testuser的用户passwd命令:
功能:为用户设定密码。一般只能修改自己的密码。只有root用户可以给其他用户设定密码
常用命令:
passwd
# 修改自己的密码
passwd testuser
# 修改testuser的密码(root用户才可以)userdel命令:
功能:删除用户
常用命令:
userdel -r testuser
# 删除testuser的用户及其主目录中的所有文件
usermod命令:
功能:修改用户信息,比如群组,主目录等
常用命令:
usermod -G wheel testuser
# 修改testuser用户的附属群组为wheel(可以加 -a 参数给用户多添加几个附加群)groupadd命令:
功能:新建群组
常用命令:
groupadd testgroup
# 新增一个testgroup群组(可以在/etc/group中查 看到)groupdel命令:
功能:删除群组
常用命令:
groupdel tsetgroup
# 删除testgroup群组
su命令:
功能:切换用户
常用命令:
su - root
# 切换为root用户(注意:- 左右都有空格)
su - testuser
# 切换为testuser用户 要返回到切换前的用户可输入
exit
命令 带
-
与不带-
的区别:带-
使用**切换后**用户的环境变量 不带
-
使用**切换后**用户的环境变量sudo命令:
功能:以管理员权限执行命令(必须在/etc/sudoers 中配置用户或组)
用法:
sudo ls /root
who命令:
功能:查看所有已登录用户信息
who
# 查看所有已登录用户信息
who am i
# 查看当前登录用户信息id命令:
功能:查看用户的uid,gid及所在的群组
常用命令:
id
# 不带参数则显示当前用户的信息
id testuser
# 显示testuser的用户信息
Linux命令 - 进程管理
ps命令:
功能:查看当前正在运行的程序
常用命令:
ps -ef
# 查看所有正在运行的程序
ps aux
# 查看所有正在运行的程序(另一个系统的用法BSD系统)
ps -ef | grep crond
# 使用grep过滤,只显示包含有crond字符的进程 一个程序可以占用多个端口,同一时间一个端口只能被一个程序占用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgmTcdGC-1606814261143)(https://s3.ax1x.com/2020/12/01/DfWiRS.png)]
pidof命令:
功能:查看进程的pid号
常用命令:
pidof crond
# 查看crond相关进程的pid号kill命令:
功能:结束指定进程
常用命令:kill -9 pid号 首先使用
ps -ef | grep 程序名
找到想要的进程,看到进程pid号之后, 用
kill -9 pid号
来结束该进程
top命令:
功能:查看系统的cpu,内存使用情况,也显示进程信息。类似windows下的任务管理器
常用命令:
top
按q键退出free命令:
功能:查看内存使用情况
常用命令:
free -h
vmstat命令:
功能:查看系统的cpu,内存,硬盘等的性能信息
常用命令:
vmstat 3
# 每3秒刷新一次
Linux命令 - 网络管理
ip addr命令:
功能:查看网卡的IP地址等信息,和ifconfig类似。(centos7有,centos6没有)
netstat命令:
功能:查看系统网络连接情况
常用命令:
netstat -anp
# 显示所有网络连接情况
netstat -anp | grep:端口号
# 查找指定端口号是否被占用ping命令:
功能:看看对应的网址能否连通,以及查看网络延时、ctrl+c中止
常用命令:
ping www.baidu.com
或ping 14.215.177.39
Linux命令 - 服务管理
systemctl命令:
功能:对系统服务进行管理。停止
常用命令:
systemctl start firewalld
# 启动防火墙服务
systemctl stop firewalld
# 停止防火墙服务
systemctl restart firewalld
# 重启防火墙服务
systemctl status firewalld
# 查看防火墙服务运行状态
systemctl disable firewalld
# 设置不要开机启动
systemctl enable firewalld
# 设置开机启动service命令:
功能:CentOS6使用的系统服务管理命令
用法:
service crond start
# 启动crond服务
Linux命令 - 安全管理
SElinux:
SElinux是Redhat/CentOS系统使用的一个安全机制。对文件的访问限制较多,一般直接配置关闭它。
查看selinux启用状态:
getenforce
关闭方法:1.使用vi编辑/etc/selinux/config文件,将中间那一行的SELINUX=enforcing 修改
为SELINUX=disabled 保存
2.然后 reboot 重启系统才能生效
防火墙:
CentOS7使用firewalld。CentOS6使用iptables防火墙。一般测试环境直接配置关闭防火墙
systemctl stop firewalld
# 停止防火墙服务
systemctl disable firewalld
# 设置不要开机启动
Linux命令 - 软件安装
yum安装:
CentOS可使用yum命令在线安装需要的软件,类似苹果手机的App Store,可安装的软件在软件库中,也可以自 己修改为其他库的地址
常用指令:
yum install tree
# 安装tree程序,安装时会提示是否确认安装
yum -y install tree
# 在线安装tree程序,不会提示,直接安装
yum remove tree
# 删除已安装的tree程序
yum update tree
# 在线升级已安装的软件rpm安装:
rpm是“Redhat Package Manager”的缩写,是Redhat公司使用的安装包管理程序。
rpm命令:
功能:安装.rpm软件安装包。查询已安装的rpm包。
常用指令:
rpm -ivh aaa- 1.0.rpm
# 安装aaa-1.0.rpm软件包
rpm -Uvh aaa-1.1.rpm
# 升级安装aaa-1.1.rpm软件包
rpm -qa | grep aaa
# 查询已使用rpm或yum安装的软件中是否有aaa相关的
rpm -e aaa
# 卸载已安装的软件 注意 aaa是软件名(通过rpm -qa查询到 的名字),不是安装的rpm包的文件名
rpm -e aaa --nodeps
#强制卸载aaa软件, 忽略依赖关系
源代码安装:
有些我们需要安装的软件在yum中没有,也没有rpm包,这时只有从其官方网站上下载.tar.gz格式压缩的源码包来 安装。
1. 首先将包下载到Linux系统中, 下载方法有两种:
1)使用wget命令在线下载,例 wget www.abc.com/abcd.tar.gz
2)使用windows下载,然后使用Xftp软件传输到Linux服务器中
2. 然后使用
tar -zxvf abcd.tar.gz
命令解压出来。 3. cd命令进入刚解压的安装文件夹,再运行
. /configure
命令配置安装参数。(必须执行) (可用
. /configure --help
查看相关参数说明) 如果报错,需要根据报错信息安装依赖的软件,比如 gcc 再
./configure
通过不报错为止 4. 使用
make
命令编译要安装的程序。(将源代码转换成可执行的程序) 5. 使用
make install
命令执行安装。 (将可执行程序文件复制到相应文件夹) (先cd进入执行make install的文件夹,有些软件可运行
make uninstall
卸载,有些软件卸载不了,需要手动删除)
Linux - 服务环境搭建
Apache:
Apache是市场占有率最多的Web服务器。服务名为httpd
MySQL:
MySQL 是一个免费开源的数据库系统,已被oracle公司收购。
PHP:
PHP是PHP: Hypertext Preprocessor (超文本预处理器)的缩写,它是一种服务器端的 脚本/编程语言。安装php程序后, apache服务器才能支持php语言编写的网站系统
Linux命令 - 网络管理
修改固定IP地址:
- 使用vi编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件
注意: ens33为centos7默认网卡名字,如果是centos6默认网卡名为eth0
- 修改BOOTPROTO=static
增加以下几行:
IPADDR=192.168.163.200 本网段未被别人使用的IP地址
NETMASK=255.255.255.0 子网掩码
GATEWAY=192.168.163.1 本网段的网关IP地址
DNS1=192.168.163.1 DNS服务器地址
3.保存退出:wq
4.service network restart # 重启网络服务
Linux - 配置文件
ypertext Preprocessor (超文本预处理器)的缩写,它是一种服务器端的 脚本/编程语言。安装php程序后, apache服务器才能支持php语言编写的网站系统
Linux命令 - 网络管理
修改固定IP地址:
- 使用vi编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件
注意: ens33为centos7默认网卡名字,如果是centos6默认网卡名为eth0
- 修改BOOTPROTO=static
增加以下几行:
IPADDR=192.168.163.200 本网段未被别人使用的IP地址
NETMASK=255.255.255.0 子网掩码
GATEWAY=192.168.163.1 本网段的网关IP地址
DNS1=192.168.163.1 DNS服务器地址
3.保存退出:wq
4.service network restart # 重启网络服务
Linux - 配置文件
[外链图片转存中…(img-lYVSVydx-1606814261144)]