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 lssudu指使用超级管理员的身份执行命令)

3.echo命令

  • echo Hello World!

  • name = "zhangsan"
    echo my name is $name
  • echo "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 -efe:显示当前所有进程,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模拟浏览器行为

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的防火墙)


通过学习 杜聚宾老师 Linux 公开视频总结归纳

  • 微信
  • 赶快加我聊天吧
  • QQ
  • 赶快加我聊天吧
  • weinxin
三桂

发表评论 取消回复 您未登录,登录后才能评论,前往登录

    • avatar

      +1

        • avatar 三桂 博主
          回复 2025年04月27日 13:42:59   1层

          @ 亮 欢迎

          • avatar
            回复 2025年04月27日 13:45:40   2层

            @ 三桂 点赞

            • avatar
              回复 2025年06月02日 21:24:50   3层

              @ 亮 过年好啊亮亮

            • avatar

              2