linux

本文详细介绍了Linux系统的基本命令,包括目录管理、文件属性、内容查看、软硬链接、vim编辑器的使用,以及账号管理和用户组管理。此外,还涵盖了磁盘管理和进程管理,如df、du、mount、umount以及ps命令的运用。文章还讨论了shell编程,包括别名、历史命令、输入输出重定向、变量和运算符等,并提供了JDK和Tomcat的安装示例。
摘要由CSDN通过智能技术生成

一、基本命令

1. 目录管理

/ 是根目录
在这里插入图片描述

在这里插入图片描述

/www/server 目录下面就是一些和网站相关的环境,是我在宝塔部分安装的

在这里插入图片描述


绝对路径&相对路径

./  当前目录
cd /  切换到根目录
cd ..   返回上级目录

ls&cd&pwd&mkdir&rmdir&cp&rm&mv

ls
-a :列出全部目录,包括隐藏目录
-l :列出文件的属性和权限
-al :就是-a和-l组合使用

cd
分为cd 绝对路径和相对路径
绝对路径 :前面带 / 就表示从根目录开始寻找目录
在这里插入图片描述
相对路径:在这里插入图片描述
cd …/

pwd 显示当前所在的目录
在这里插入图片描述

mkdir 创建目录
创建单个在这里插入图片描述
mkdir -p 可以递归创建文件夹在这里插入图片描述

rmdir 移除空的文件夹
在这里插入图片描述
如果下面存在文件,需要先删除文件
递归删除文件夹 -p参数
在这里插入图片描述

cp 复制文件或目录
cp 源 目标在这里插入图片描述
如果目的不存在就会创造一个在这里插入图片描述
文件重复的话要选择是否覆盖
y代表覆盖
n表示不覆盖在这里插入图片描述
-r代表递归复制文件夹下面的内容

rm 移除文件或文件夹
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
在这里插入图片描述
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
尽量不要在服务器上使用 rm -rf /

mv 移动文件或目录,或者修改名称
和cp差不多,mv 源 目的
f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)在这里插入图片描述
重命名文件
在这里插入图片描述

2. 文件基本属性

使用ls -l或者ll可以查看文件的属性

在这里插入图片描述

在这里插入图片描述
【d】开头表示是文件夹
【l】开头表示是连接,类似于windows下的快捷方式。所以可以看见l开头的连接文件最后一段有一个 ->。
【-】 表示是文件

chgrp修改文件属组

chgrp [-R] 属组名 文件名

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
在这里插入图片描述

chown更改文件属主,也可以同时更改文件属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

在这里插入图片描述

chmod 修改文件的9个属性(重要)

 r:4 w:2 x:1
chmod - R 777 文件名      任何人都可读可写可操作

在这里插入图片描述

3.文件内容查看

概述
Linux系统中使用以下命令来查看文件的内容:
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

网络配置目录:/etc/sysconfig/network-scripts

默认的配置文件
在这里插入图片描述
ifconfig查看网络的配置

cat 正着查看
在这里插入图片描述
tac 倒着查看
在这里插入图片描述
nl 顺便显示行号
在这里插入图片描述
more 一页一页地显示内容,空格翻页
在这里插入图片描述
在这里插入图片描述
less 一页一页翻动,和more比较可以向前翻动
具体向前或者向后翻就是pgup和pgdn。按q退出。
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
N表示向上寻找,n表示向下寻找
=======
head [-n number] 文件
tail [-n number] 文件在这里插入图片描述

4. 软链接&硬链接

硬链接

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除

软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

软/硬链接本质上还是inode号不同

命令
ln 创建硬链接
ln -s 创建软链接
touch 创建文件
echo 输入字符串

测试

[root@kuangshen /]# cd /home
[root@kuangshen home]# touch f1 # 创建一个测试文件f1
[root@kuangshen home]# ls
f1
[root@kuangshen home]# ln f1 f2 # 创建f1的一个硬连接文件f2
[root@kuangshen home]# ln -s f1 f3 # 创建f1的一个符号连接文件f3
[root@kuangshen home]# ls -li # -i参数显示文件的inode节点信息
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f1
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f2
397248 lrwxrwxrwx 1 root root 2 Mar 13 00:50 f3 -> f1

从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 397247,然而符号连接文件的 inode 节点不同。

# echo 字符串输出 >> f1 输出到 f1文件
[root@kuangshen home]# echo "I am f1 file" >>f1
[root@kuangshen home]# cat f1
I am f1 file
[root@kuangshen home]# cat f2
I am f1 file
[root@kuangshen home]# cat f3
I am f1 file
[root@kuangshen home]# rm -f f1
[root@kuangshen home]# cat f2
I am f1 file
[root@kuangshen home]# cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效;

5. vim

在这里插入图片描述

三种使用模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:
我们刚进vim的时候就是命令模式,输入的字符会被当做命令。

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

输入模式:
按 ESC退出输入模式,重新回到命令模式。

底线命令模式
基本命令:

  • q 退出程序
  • w 保存文件

6. 账号管理

useradd 选项 用户名

useradd 选项 用户名 

选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-m 使用者目录如不存在则自动建立。在home目录下创建一个用户名名称的目录
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

[root@zhaoyulong /]# useradd -m zyldemo1

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow,/etc/group等。
在这里插入图片描述

userdel 选项 用户名

删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

常用的选项是 -r,它的作用是把用户的主目录一起删除。

[root@zhaoyulong zyldemo1]# userdel -r zyldemo1

usermod 选项 用户名

常用的选项包括 -c, -d, -m, -g, -G, -s, -u以及-o等 ,这些选项的意义与 useradd 命令中的选项
一样,可以为用户指定新的资源值。

切换账号

[root@zhaoyulong home]# su zyldemo1
[zyldemo1@zhaoyulong home]$

passwd 用户名 可以修改密码
exit可以回到root用户状态

[zyldemo1@zhaoyulong home]$ passwd zyldemo1
passwd: Only root can specify a user name.
[zyldemo1@zhaoyulong home]$ exit
exit
[root@zhaoyulong home]# passwd zyldemo1
Changing password for user zyldemo1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@zhaoyulong home]# su zyldemo1
[zyldemo1@zhaoyulong home]$ 

冻结账户

[root@zhaoyulong zyldemo1]# passwd -l zyldemo1

这样zyldemo1就无法登录了。

解冻

[root@zhaoyulong zyldemo1]# passwd -u zyldemo1

7. 用户组管理

groupadd 选项 用户组

可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

新建一个用户组,可以在/etc/group里面查看
[root@zhaoyulong home]# groupadd group1
[root@zhaoyulong home]# cat /etc/group

在这里插入图片描述

指定新建的用户组的id
[root@zhaoyulong home]# groupadd -g 1024 group2

groupdel 用户组

[root@zhaoyulong home]# groupdel group2

groupmod 选项 用户组

-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

[root@zhaoyulong home]# groupmod -g 1005 -n newgroup group1

切换组

如果一个用户同时属于多个用户组

这一点可以在创建用户的时候通过G选项来设置所属的组。

那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

配置文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

/etc/passwd
每一行就是一个用户的信息

用户名:口令(登录密码):用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow
保存每一个用户的密码,密码被MD5加密过了。不可逆。
/etc/group

保存用户组的信息

组名:口令:组标识号:组内用户列表

8. 磁盘管理

df

du

mount

unmount

9.进程管理

简介

1、在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。
3、 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操
作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

ps

查看系统中正在进行的各种进程的信息。

语法

ps –选项

可以通过ps -help 或者man ps来查看帮助文档。

选项
-a:显示当前终端的所有进程信息
-u:以用户的形式显示进程信息
-x:显示后台进程运行的参数


测试

ps -aux|grep mysql

grep是过滤

-ef可以查看父进程,但是一般还是用进程树

ps -ef|grep mysql

进程树
基本语法:
pstree [选项] ,可以更加直观的来看进程信息
常用选项:
-p :显示进程的PID
-u :显示进程的所属用户

[root@zhaoyulong home]# pstree -pu

二、文件管理

inode讲解

三、shell编程

1.概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写一个例子

分号可以让我们在一行输入多个命令
在这里插入图片描述
编写
在这里插入图片描述
执行:
注意要修改hello.sh文件的权限
还有就是执行方法有两种

在这里插入图片描述
在这里插入图片描述

bash的基本功能

在这里插入图片描述

别名

命名的别名其实就是其他命令的缩写,为了偷懒

输入allias查看已存在别名
在这里插入图片描述

定义别名

语法:alias 别名=原命令
alias 别名=原命令 选项 参数

说明:别名的内容可以包括命令,选项,参数
但是这是的别名是临时的

取消别名 unalias 别名

永久别名
用vim写到/.bashrc 里面
在这里插入图片描述
在这里插入图片描述

一个小问题:
vim突然退出Found a swap file by the name “.hello.sh.swp”

使用ll -a 发现一个.hello.sh.swp文件,把他删除就ok
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

历史命令

在这里插入图片描述

输入输出重定向

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多命令顺序执行

在这里插入图片描述

特殊符号

在这里插入图片描述
在这里插入图片描述

3. shell变量

在这里插入图片描述

用户自定义变量

在这里插入图片描述
在这里插入图片描述

[root@zhaoyulong shelltest]# name="zyl"   设置自定义变量
[root@zhaoyulong shelltest]# set       查看自定义和系统变量
[root@zhaoyulong shelltest]# unset name    删除变量

只读变量 readonly

[root@zhaoyulong shelltest]# baidu="www.baidu.com" 自定义变量
[root@zhaoyulong shelltest]# readonly baidu       转换为只读变量
[root@zhaoyulong shelltest]# baidu="122"         修改这个变量
-bash: baidu: readonly variable

shell字符串

单引号引用和双引号引用的区别

在这里插入图片描述
在这里插入图片描述
字符串拼接
在这里插入图片描述

环境变量

环境变量还分为系统级环境变量和用户级环境变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
环境变量和用户自定义变量的区别
在这里插入图片描述

设置&查看环境变量

在这里插入图片描述
在这里插入图片描述

常用环境变量
在这里插入图片描述
在这里插入图片描述

添加环境变量路径
在这里插入图片描述

修改命令行的样式
在这里插入图片描述

位置参数变量

参数的意思就是执行文件的时候后面添加的参数列表。
在这里插入图片描述

例子

在这里插入图片描述
在这里插入图片描述
$* $@的区别
在这里插入图片描述

预定义变量

主要是Bash中已经定好的变量,名称不能自定义,作用也是固定的。
在这里插入图片描述

例子

在这里插入图片描述
在这里插入图片描述

4. shell运算符

declare就是声明变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数值运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算数运算符

在这里插入图片描述
在这里插入图片描述

``和$()的用处

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关系运算符

在这里插入图片描述
在这里插入图片描述

布尔运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

字符串运算符

在这里插入图片描述
在这里插入图片描述

文件测试运算符

在这里插入图片描述

在这里插入图片描述

5. shell流程控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装环境

安装软件有三种方法:rpm,解压缩,yum

安装的命令

在这里插入图片描述

JDK安装

在这里插入图片描述
不是ivk是inh
在这里插入图片描述
配置环境变量
/etc/profile文件后面追加就ok
在这里插入图片描述

export JAVA_HOME=/usr/java/jdk1.8.0_291-amd64
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME%/jre/lib
export PATH=$PATH:$JAVA_HOME/bin;$JAVA_HOME/jre/bin:$PATH


java环境是安装在了/usr/java目录下
在这里插入图片描述
source /etc/profile 使配置文件生效
在这里插入图片描述

tomcat安装

  1. 下载tomcat压缩包
  2. 解压缩 tar -vxzf apache-tomcat-9.0.46.tar.gz
    在这里插入图片描述
  3. 启动Tomcat测试
    在这里插入图片描述
启动   ./startup.sh
关闭   ./shutdown.sh

如果防火墙开了8080端口并且阿里云安全组也开放了8080端口,就可以联网访问了。

防火墙有关指令

# 查看firewall状态
systemctl status firewalld

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop


# 查看firewall规则
# 查看全部信息
firewall-cmd --list-all
# 查看端口信息
firewall-cmd --list-ports

# 开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重启防火墙,不重启的话开启的端口不会生效
systemctl restart firewalld.service

--zone # 作用域
--add-port=80/tcp  # 添加端口,格式:端口号/协议
--permanent  # 永久生效,没有这个参数的话重启就失效了

在这里插入图片描述
要重启防火墙之后开启的端口才可以生效
在这里插入图片描述
防火墙出现如下报错

[zzfzbx@zhaoyulong ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

May 21 06:59:00 zhaoyulong systemd[1]: Starting firewalld - dynamic firewall daemon...
May 21 06:59:00 zhaoyulong firewalld[1490]: ERROR: Exception DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.21" is not al...tion file
May 21 06:59:00 zhaoyulong systemd[1]: Started firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[zzfzbx@zhaoyulong ~]# 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值