Linux终端指令
1.打印目录
pwd(打印当前目录)
2.列表信息
ls(列表当前目录内的所有文件\目录,不包括隐藏文件)
ls -a(列表当前目录内的所有文件\目录,包括隐藏文件)
ls -l(列表当前目录内的所有文件\目录的详细信息,不包括隐藏文件。可简写为ll)
ls-al(列表当前目录内的所有文件\目录的详细信息,包括隐藏文件。可简写为ll-a)
ll -a /home/user/a(列表指定目录内的所有文件\目录的详细信息,包括隐藏文件)
3.切换目录
cd /home/user/a(切换目录,绝对路径)
cd abc(切换目录,相对路径)
cd ~(切换到当前用户的主目录,即回到/root,非root用户的主目录为/home/user1)
cd ..(回到上级目录)
cd ../..(回到上级目录的上级目录)
cd /(回到根,即回到/)
pwd:print working directory(打印当前目录)
ls:list(列表)
a:all(所有)
l:long(详细)
cd:change directory(切换目录)
二.文件管理
1.创建目录
mkdir a(mkdir是新建文件夹的命令,a是一个目录名)
mkdir -p a/b/c(创建多重目录)
mkdir -p a/f/g(虽然a已经存在了,但是不会报错,直接在a目录下新建f目录,f目录下新建g目录)
2.新建文件
touch a.txt(touch是新建文件的命令,a.txt是一个文件名)
touch a.txt b.java c.txt(一次性在当前目录下,新建多个文件,文件名之间用空格分隔)
3.删除文件
rm a.txt(这种方式会询问,是否删除,y或者n)
rm -f a.txt(不询问)
rm -f b.txt c.txt(删除多个文件,不询问)
rm -f *.java(删除所有.java结尾的文件)
4.删除目录
rm -r a(删除当前目录下的a目录,以及所有a目录下的所有子目录,需要y确认)
rm -rf a(删除当前目录下的a目录,以及所有a目录下的所有子目录,无需确认)
5.文件拷贝
cp a.txt aa.txt(复制当前目录下的a.txt文件,粘贴到当前目录下并生成新的aa.txt)
cp a.txt a/aa/txt(复制当前目录下的a.txt文件,粘贴到a目录下并生成新的aa.txt)
6.目录拷贝
cp -rf a b(将a目录拷贝到b目录里面)
7.移动
mv a.txt a(将a.txt文件移动到a目录里)
mv a b(将a目录移动到b目录里)
8.文件搜索
find a -name "a.txt"(在a目录里寻找a.txt文件)
whereis ls(只能查找命令的位置,这里找的是ls命令)
which ls(也用于查找命令的位置)
9.文件的inode号
ls-i a.txt(查找指定文件的唯一索引号)
mkdir:make directory(创建目录)
p:parents(父目录)
rm:remove(删除)
r:recursion(递归)
f:force(强制)
cp:copy(复制)
mv:move(移动)
inode:index node(索引节点号)
三.软链接与硬链接
1.软链接
ln -s a.txt b.txt(给a.txt文件创建一个快捷方式b.txt,即软链接)
2.硬链接
ln a.txt b.txt(把软链接的-s去掉就是创建硬链接的语法)
ln:link(链接)
s:symbolic(符号、软)
四.文件压缩与解压缩
1.文件压缩
tar -zcvf a.tar.gz a.txt(压缩a.txt为a.tar.gz)
tar -zcvf a.tar.gz a.txt b.txt c.txt(压缩多个文件为a.tar.gz)
tar -zcvf a.tar.gz b(压缩目录为a.tar.gz)
2.查看压缩文件
tar -tf a.tar.gz(查看a.tar.gz里的文件)
3.解压文件
tar -zxvf a.tar.gz(解压a.tar.gz到当前目录下)
tar -zxvf a.tar.gz -C b(解压a.tar.gz到b目录下)
tar命令参数
z:指定是否使用gzip压缩方式压缩。(扩展名通常为:tar.gz。特点:速度最快)
j:是否需要用 bzip2 压缩方式压缩。(扩展名通常为:tar.bz2。特点:体积最小)
c:创建压缩(create)
x:解压缩
v:是否在压缩的过程中显示文件
f:指定归档文件名(file)。f参数后面必须紧跟文件名,不能在f参数后面再加其他参数。
t:查看 tarfile 里面的文件
C:指定解压到的具体目录。注意是大写C。
注意:c、x、t,这三个参数不能共存,只能出现一个。
五.文件编辑 vi & vim
1.基础编辑文件
vi a.txt(编辑a.txt文件)
:wq(保存文件指令)
:q!(强行退出不保存指令)
2.查看文件
cat a.txt (查看a.txt文件里的内容)
3.进阶编辑文件(常用)
dd(删除当前光标处一行文字指令)
o(在下一行插入新的一行)
yy(复制光标所在行到缓冲区)
p(粘贴缓冲区中的内容)
gg(光标回到文件第一行)
GG(光标回到文件最后一行)
^(光标回到当前行的行首)
$(光标回到当前行的行尾)
/关键词(按斜杠/键,可以输入想搜索的字符,搜索这个关键词位置 ,一直按n可以查找下一个关键字位置)
x(删除单个字符)
i(进入编辑模式指令)
esc(进入指令模式)
六.系统命令
1.系统当前时间
date
2.切换用户
su user1
sudo ls(sudu指使用超级管理员的身份执行命令)
3.echo命令
echo Hello World!
name = "zhangsan"
echo my name is $nameecho "line1
line2
line3"echo -e "line1\nline2\nline2"
4.sort命令
sort a.txt(按文本升序排序)
sort -r a.txt(按文本降序排序)
sort -n a.txt(按数字升序排序)
sort -rn a.txt(按数字降序排序)
5.diff命令
diff Hello.java HelloJack.java(比较这两个文件的区别)
6.重定向
ls -l > log.txt(输出重定向,将本该打印在屏幕的内容重定向到文件中打印)
ls -l >> log.txt(输出重定向,将本该打印在屏幕的内容追加到文件中打印)
sort -n < a.txt(输入重定向,可以隐藏不写)
sort -n << biaoji
100
102
90
1001
biaoji(接收用户键盘输入内容)
7.grep命令(搜索)
grap abc a.txt(在a.txt文件中搜索abc字符)
grap abc a.txt b.txt(在多个文件中搜索abc字符)
grep -r abc a(在a目录下递归搜索该目录下所有文件中的abc字符)
grep -A 2 abc a.txt(同时显示abc所在行的后2行)
grep -B 2 abc a.txt(同时显示abc所在行的前2行)
grep -C 2 abc a.txt(同时显示abc所在行的前后2行)
grep -i abc a.txt(忽略大小写搜索)
grep -v abc a.txt(找出不匹配的行)
grep -E [ 0-9] a.txt(使用正则表达式匹配)
8.管道|
ls -al | grep log(管道|的作用,可以理解 前面命令的输出 作为 后面命令的输入)
ls -al | grep log | grep txt (管道可以放多个)、
9.查看系统进程
ps -ef(e:显示当前所有进程,f:显示UID,PPID,C与STIME栏位的信息)
10.sleep命令
sleep NUMBER[SUFFIX]()
sleep 3
sleep 1m
sleep 2h
sleep 1d
sleep 1d &(在后台暂停1天)
11.kill进程
kill 进程号
kill -9 进程号(强行杀死)
killall 进程名
12.CPU、内存使用情况
top命令
实时动态显示系统资源的使用情况(CPU、内存等,降序排序)
free命令
查看内存和交换区的使用情况
uptime命令
显示系统运行时间
13.磁盘使用情况
df命令(disk free)
磁盘空间使用情况查询命令
du命令(disk usage)
磁盘空间占用查询命令
14.关机和重启
关机
shutdown -h now(正在运行的进程停止,保存当前状态,然后关闭系统)
poweroff(立即关闭系统,可能会丢失未保存的数据)
重启:reboot命令
15.ifconfig和ping命令
ifconfig
查看网卡的ip地址
ping
查看两台计算机之间是否可以正常通信
ping ip地址
ping 域名
14.curl模拟浏览器行为
curl http://www.baidu.com
15.wget命令
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.41-winx64.zip(专门下载资源的命令)
16.netstat查看网络连接和端口
netstat -a(查看所有的网络连接状态)
netstat -an(查看所有的网络连接状态,不将端口和IP地址转化为名称,而是直接显示数字格式的IP地址和端口号)
七.文件内容查看
1.cat命令
cat命令会一次性将文件的完整内容全部显示出来,不适合大文件
cat a.txt
cat -n a.txt
-n(对输出的所有行编号)
-b(对输出的所有行编号,不含空白行)
-t(将制表符显示为^I)
-e(在每行结束处显示$)
-s(当连续的空白行数量大于1时,合并为1个空白行)
cat a.txt b.txt(一次查看多个文件)
cat a.txt b.txt > c.txt(使用cat合并文件)
cat -n a.txt > b.txt(加上行号后合并到b.txt里)
cat /dev/null > a.txt(清空文件内容,目录为固定写法)
2.more命令
cat命令可以将文件的完整内容部分显示出来,适合大文件
more和cat的相同点和不同点
相同点:在开始读取文件的时候,都是一次性的将文件全部内容装载到缓存中
不同点:cat是一次性的全部输出打印。more可以进行部分打印(一屏一屏的打印)
用法
more [选项] <文件>...
常用选项
-
:每个屏幕的行数 +
:从行号开始显示文件 +/
:从匹配的位置前两行开始显示内容 -p:以清除原内容的方式进行翻页
常用操作
回车键:显示下一行
空格键:显示下一页
ctrl + b:显示上一页
=:显示行号
:f:显示文件名的同时显示行号
q:退出more命令
案例
more -5 +12 -p a.txt(从第12行开始,每五页清屏式翻页显示a.txt)
ps -ef | more -5 -p(每五页清屏式翻页显示进程信息)
3.less命令
less工具也是对文件进行分页显示的工具,比more强大,拥有搜索功能
用法
less [选项] 文件
常用选项
-g:只标志当前搜索到的关键词所在行
-I:忽略搜索时的大小写(注意是大写的I)
-m:显示类似more命令的百分比
-N:显示每行的行号
+
:从第number行开始显示
常用操作
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
y:向前滚动一行
回车键:向后滚动一行
u:向前滚动半页
d:向后滚动半页
b:向前翻一页
空格键:向后翻一页
g:滚动到第一行
G:移动到最后一行
=:显示详细信息(第几行,共多少行,内容的字节数量等)
v:使用vim编辑器进行编辑
q:退出less命令
pagedown:向下翻动一页
pageup:向上翻动一页
less +F a.txt(监控a.txt文件,ctrl+c 终止监控,F继续监控。注意只能监控机器自动写入或通过输出重定向写入的才可以被监控)
less a.txt b.txt(查看多个文件)
输入:n,跳转到b.txt
输入:p,跳转到a.txt
ps -ef |less -N(less命令结合管道一起使用)
4.head命令
head命令用于显示文件的头部内容
head [选项]... 文件...
若没写选项,则为默认10行
若指定了多个文件,程序会在每段输出的开始添加相应的文件名作为头
参数
-c:输出前几个字符
-n:指定行数
-q:不显示包含给定文件夹的文件头
案例
head -c 5 a.txt(显示a.txt的前五个字符)
head -5 a.txt(显示a.txt的前五行)
head -5q a.txt b.txt(显示这两个文件前五行,且不显示这两个文件的文件名)
5.tail命令
head命令用于显示文件的尾部内容
tail[选项]... 文件...
若没写选项,则为默认10行
若指定了多个文件,程序会在每段输出的开始添加相应的文件名作为头
参数
-c:输出最后几个字符
-f:随文件增长及时输出新增数据(文件实时动态变化监控,同 less +F)
-n:指定行数
-q:不显示包含给定文件夹的文件头
案例
tail-c 5 a.txt(显示a.txt的最后五个字符)
tail-5 a.txt(显示a.txt的最后五行)
tail-5q a.txt b.txt(显示这两个文件最后五行,且不显示这两个文件的文件名)
6.专业显示行号的命令 nl
nl a.txt:显示带行号的a.txt文件
nl -b a a.txt:所有行添加行号,包括空白行
nl -b t a.txt :给行添加行号,不包括空白行(默认行为,和直接使用 nl 一样效果)
nl -n ln a.txt:行号在自己栏位左侧显示
nl -n rn a.txt:行号在自己栏位的右侧显示
nl -n rz a.txt:显示行号,行号栏位不满时,自动补0
nl -w a.txt:行号栏位的占用的位数
7.tailf命令,专业的实时实时监控文件变化
tailf命令需要自己安装
tailf a.txt
八.Linux用户管理
1.用户组的管理
用户组的添加、修改、删除实际上就是对/etc/group文件的更新。
每个用户组四个部分组成:组名:密码标识:GID:该用户组中的用户列表
用户组的查看
groups(查看当前用户属于哪一组)
groups root(查看某个用户属于哪一组)
用户组的添加
groupadd [选项] 组名
常用选项
-g(指定新用户组的标识号,即GID)
案例
groupadd dev1
groupadd -g 101 dev2
用户组的修改
groupmod -g 102 dev2(修改组标识号为102)
groupmod -n dev3 dev2(将dev2修改为dev3)
用户组的删除
groupdel dev3(删dev3)
2.用户的管理
添加用户
useradd [选项] 用户名
常用选项
-d(指定新用户的主目录)
-g(指定新用户属于哪个主组)
-G(指定新用户属于哪个附加组)
案例
useradd lisi(添加用户lisi,默认组名:和自己的用户名一样;默认主目录:/home/用户名)
useradd -d /usr/zhangsan zhangsan(新建用户zhangsan,默认组名:和自己的用户名一样,主目录:/home/zhangsan)
useradd -d /user/wangwu -g dev1 -G test wangwu(新建用户wangwu,主组:dev1,附加组:test,主目录:/user/wangwu)
设置密码
passwd lisi
可以通过查看/etc/passwd文件,看到系统中有哪些用户,如执行cat /etc/passwd
密码会单独存放在/etc/shadow文件夹中,如执行cat /etc/shadow
切换用户
su zhangsan
修改用户
usermod [选项] 用户名
常用选项
-d(指定新用户的主目录)
-g(指定新用户属于哪一个主组)
-G(指定新用户属于哪一个附加组)
-l(指定新用户的用户名,小写的L)
案例
usermod -l zhangsi zhangsan(zhangsan修改为zhangsi)
usermod -d /usr/zhangsi -m zhangsan(修改主目录,-m参数很重要,目录不存在时,会新建该目录)
usermod -g dev1 zhangsan(修改用户所在组)
usermod -L zhangsan(锁定用户)
usermod -U zhangsan(解锁用户)
删除用户
userdel -r lisi(连同删除主目录,删除lisi用户)
3.为用户主目录之外的目录授权
Step1:创建目录
mkdir /java
Step2:给目录授权
chmod -R 775 /java(-R表示递归设置权限)
Step3:创建组
groupadd dev
Step4:把目录赋予组
chgrp -R dev /java
Step5:创建用户
useradd xiaoming
Step6:设置密码
passwd xiaoming
Step7:给用户添加组
usermod -G dev xiaoming
775是什么意思?
7(第一个7代表文件拥有者的权限)
7(第二个7代表同组人员的权限)
5(第三个5代表其他组员的权限)
7=4(读)+2(写)+1(执行)
5=4(读)+1(执行)
九.文件权限
1.查看文件权限
ls-l
第1个字符:代表文件的类型,- 代表文件,d代表目录
其实Linux中文件的类型有7种:
代表普通文件
d 代表目录
l 代表链接(软链接:快捷方式)
b 块设备(硬盘,软盘等存储设备)
c 字符设备(通常以字节流的方式访问)
p 管道文件(主要用于进程间通讯)
s 套接字文件(主要用于网络通讯)
第2,3,4个字符:代表文件创建者(U)对该文件的权限。
第5,6,7个字符:代表与文件创建者在同一组的用户(G)对该文件的权限。
第8,9,10 个字符:代表其他组人员(O)对该文件的权限。
关于文件权限的9个字符中包含四种字符,分别是:r、w、x、-,他们代表什么含义:
r:读权限
w:写权限
x:执行权限
-:无权限
2.基于UGO设置文件权限
chmod g+w Hello.java(给同组人员添加写权限)
chmod g+w, o+w Hello.java(给同组人员和其他组人员添加写权限)
chmod g-w, o-w Hello.java(删除同组人员和其他组人员写的权限)
3.基于421设置文件权限
4读2写1执行
chmod 三个数字 文件名
chmod 755 HelloWorld.java(文件拥有者的权限是rwx,同组人员是r-x,其他组人员是r-x)
chmod 700 HelloWorld.java(文件拥有者权限是rwx,同组人员无权限,其他组人员无权限)
4.chown修改文件拥有者
chown [选项]... [所有者][:[所属组]] 文件...
常用选项
-R:递归修改,包括子目录和文件
sudo chown root /home/user/a.txt (将 /home/user/a.txt文件的所有者修改为 root 用户)
sudo chown -R userA:groupA /home/user/dir/(将 /home/user/dir/
目录及其子目录和文件的所有者都修改为
userA用户,所属组修改为
groupA组)
十.软件的安装与卸载
1.软件安装方式概述
CentOS安装软件的方式主要包括:
源码安装
rpm安装(二进制安装)
yum安装(在线安装)
2.yum安装与卸载的相关命令
安装命令:yum -y install 软件名
升级命令:yum -y install 软件名
升级所有软件:yum -y install
卸载命令:yum remove 软件名
列出可安装的软件包:yum list
列出已安装的软件包:yum list installed
查询某个软件包:yum list 软件名
根据关键字搜索软件包:yum search Keyword
清除缓存:yum clean all
3.JDK的安装与配置
yum install -y java-1.8.0-openjdk-devel.x86_64
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-3.el9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin注意JAVA_HOME的位置需要搜索java(which java),不断查找java的真实位置(ls -l /xx/java)
source /etc/profile
4.Tomcat服务器的安装与配置
使用xftp传输下好的linux版本的tomcat
tar -zxvf apache-tomcat-9.0.104.tar.gz(解压)
mv apache-tomcat-9.0.104 /usr/local(移动位置)
mv apache-tomcat-9.0.104 tomcat9(改名)
vim /etc/profile
export CATALINA_HOME=/usr/local/tomcat9
:$CATALINA_HOME/bin(在PATH后面追加)
source /etc/profile
startup.sh(开启tomcat)
ifconfig(获取第一个ip地址)
systemctl stop firewalld.service(关闭防火墙)
在windows中访问192.168.116.128:8080
shutdown.sh(关闭tomcat)
5.MySQL的安装与配置
一步步安装 MySQL 8.0(CentOS 7)
① 下载 MySQL 8.0 的 repo
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
② 安装 repo 包
sudo rpm -ivh mysql80-community-release-el7-11.noarch.rpm
③ 清除旧缓存并更新仓库信息
sudo dnf clean all
sudo dnf makecache④ 安装 MySQL Server
sudo dnf install mysql-community-server
启动 & 设置 MySQL
⑤ 启动 MySQL 服务
sudo systemctl start mysqld
⑥ 设置开机自启
sudo systemctl enable mysqld
⑦ 查看初始 root 密码
安装后会自动生成 root 密码:
sudo grep 'temporary password' /var/log/mysqld.log
你会看到一行类似这样的内容:
2025-04-17TXX:XX:XX.XXXXXZ localhost mysqld: [Note] A temporary password is generated for root@localhost: abcD123!xyz
记下这串密码,后面登录要用。
⑧ 登录并修改密码
mysql -u root -p
输入上面的临时密码后,执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '333';
至此,安装数据库完成。
show variables like '%character%';(检查字符集是否为utf-8)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci如果字符集不是utf8,可以在/etc/my.cnf文件中进行配置,在[mysqld]下面添加如上配置:/etc/my.cnf是mysql的配置文件。
在MySQL8中为Java程序员创建专属的MySQL用户
create database oa;(创建一个新的数据库)
CREATE USER 'java_dev'@'%' IDENTIFIED BY 'java_DEV123';(创建一个新用户并设置密码)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, REFERENCES ON oa.* TO 'java_dev'@'%';(为该用户授予开发者专有的权限)
FLUSH PRIVILEGES;(刷新权限)
systemctl stop firewalld(关闭centos的防火墙)
- 微信
- 赶快加我聊天吧
- 赶快加我聊天吧
2025年04月27日 13:40:49 1楼
+1
2025年04月27日 13:42:59 1层
@ 亮 欢迎
2025年04月27日 13:45:40 2层
@ 三桂 点赞
2025年06月02日 21:24:50 3层
@ 亮 过年好啊亮亮
2025年04月27日 13:44:36 2楼
2