Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

news2024/12/28 22:36:59

linux概述:

Linux是一套免费使用和自由传播的操作系统


我们为什么要学,Linux?

   

 主流操作系统:

        
        linux系统版本:

            内核版:
  •  由linux核心团队开发,维护
  •  免费,开源
  •  负责控制硬件

            发行版:
  •  基于linux内核版进行扩展
  • 由各个linux厂商开发,维护
  • 有收费版本和免费版本
Linux系统发行版:
  • Ubuntu:以桌面应用为主
  • RedHat:应用最广泛、收费
  • CentOS:RedHat的社区版、免费
  • openSUSE:对个人完全免费、图形界面华丽
  • Fedora:功能完备、快速更新、免费
  • 红旗Linux:北京中科红旗软件技术有限公司开发


    系统安装:

        Linux系统的安装方式:
  •  物理机安装:直接将操作系统安装到服务器硬件上
  • 虚拟机安装:通过虚拟机软件安装

                虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。

                    常用的虚拟机软件:
  •  VMWare
  • VirtualBox
  • VMLite WorkStation
查看IP地址:

通过如下命令查看当前Linux的IP地址:ip addr

    远程连接:

 常用的SSH(Secure Shell,安全外壳协议)远程连接工具:Putty、SecureCRT、Xshell、finalShell

        

直接双击运行FinalShell的安装程序完成安装即可

finalShell连接linux:

点击左上角一个像文件的图标,新建连接:

点击ssh连接:

点击ssh连接,输入必要的连接信息:

出现的弹窗:

连接成功后的页面:


    Linux的目录介绍:

  • /是所有目录的顶点
  • 目录结构像一颗倒挂的树

        Linux系统目录:
  •   bin 存放二进制可执行文件
  •   boot 存放系统引导时使用的各种文件
  •   dev 存放设备文件
  •  etc 存放系统配置文件
  •  home 存放系统用户的文件
  •    lib 存放程序运行所需的共享库和内核模块
  •  opt 额外安装的可选应用程序包所放置的位置
  •   root 超级用户目录
  • sbin 存放二进制可执行文件,只有root用户才能访问
  •  tmp 存放临时文件
  •  usr 存放系统应用程序
  • var 存放运行时需要改变数据的文件,例如日志文件

linux常用命令:


    文件目录操作命令:

        ls

显示指定目录下的内容


            语法:

 ls [-al] [dir]

[root@localhost usr]# ls


[root@localhost usr]# ls -a

[root@localhost usr]# ls -l

[root@localhost usr]# ll


            说明:

  •   -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
  • -l 除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出

            注意:

由于我们使用ls命令时经常需要加入-l选项,所以Linux为ls -l命令提供了一种简写方式,即ll

        cd

 用于切换当前工作目录,即进入指定目录


            语法:

cd [dirName]

[root@localhost ~]# cd /usr/local/

[root@localhost ~]# cd sde
[root@localhost sde]# cd ..
[root@localhost ~]# cd sde/
[root@localhost sde]# 

cd -  返回上次所在的目录 

[root@localhost /]# cd -
/usr/local
[root@localhost local]# 

cd ~ 直接回到 /root目录

[root@localhost usr]# cd ~
[root@localhost ~]# 

pwd 查看当前所在目录

[root@localhost usr]# pwd
/usr

cd . 当前所在目录

[root@localhost usr]# cd .
[root@localhost usr]# 

cd .. 返回上一级目录

[root@localhost local]# cd ..
[root@localhost usr]# 

cd ../../ 连续退两级目录

[root@localhost local]# cd ../../
[root@localhost /]# 


            特殊说明:

  • ~ 表示用户的home目录
  • . 表示目前所在的目录
  • .. 表示目前目录位置的上级目录

            举例:

  • cd ..        切换到当前目录的上级目录
  • cd ~        切换到用户的home目录
  • cd /usr/local    切换到/usr/local目录
  • cd -        切换到上一次所在目录

        cat

 用于显示文件内容


            语法:

 cat [-n] fileName


            说明:

 -n :由1开始对所有输出的行数编号

            举例:

cat /etc/profile        查看/etc目录下的profile文件内容

        

[root@localhost ~]# cat 1.txt 
11111111111
2222222222
333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999
0000000000

[root@localhost ~]# 

显示行号:

[root@localhost ~]# cat -n 1.txt 
     1  11111111111
     2  2222222222
     3  333333333
     4  4444444444
     5  5555555555
     6  6666666666
     7  7777777777
     8  8888888888
     9  9999999999
    10  0000000000
    11  
[root@localhost ~]# 
clear:清屏:

[root@localhost ~]# clear

more

 以分页的形式显示文件内容


            语法:

more fileName


            操作说明:

  •  回车键:向下滚动一行
  • 空格键:向下滚动一屏
  • b:返回上一屏
  • q或者 Ctrl+c :退出more

[root@bogon ~]# more tlias.log 

可以看到是以分页的形式,展示的tlias.log日志。

我按下回车键,向下滚动一行。

我按下空格键,向下滚动一屏。

我按下 b 键,返回上一屏。

我按下 q 或者 ctrl + c 退出:

这个是 ctrl + c:


            举例:

more /etc/profile    以分页方式显示/etc目录下的profile文件内容

        tail

 查看文件末尾的内容


            语法:

 tail [-f] fileName


            说明:

-f :动态读取文件末尾内容并显示,通常用于日志文件的内容输出

[root@bogon ~]# tail tlias.log 

查看后几行的:

[root@bogon ~]# tail -5 tlias.log 

            举例:

  • tail /etc/profile    显示/etc目录下的profile文件末尾10行的内容
  • tail -20 /etc/profile    显示/etc目录下的profile文件末尾20行的内容
  • tail -f /sde/my.log    动态读取/sde目录下的my.log文件末尾内容并显示

        mkdir

创建目录


            语法:

  mkdir [-p] dirName


            说明:

 -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建
          

示例1: 

[root@bogon ~]# mkdir sde1

 

示例2:

[root@bogon ~]# mkdir sde2/sde3

加上 -p

[root@bogon ~]# mkdir -p sde2/sde3

[root@bogon ~]# cd sde2/sde3

 举例:

  • mkdir sde在当前目录下,建立一个名为sde的子目录
  • mkdir -p sde/test     在工作目录下的sde目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个

        rmdir

删除空目录


            语法:

  rmdir [-p] dirName


            说明:

 -p:当子目录被删除后使父目录为空目录的话,则一并删除

[root@bogon ~]# rmdir sde

加上 -p 删除:

[root@bogon ~]# rmdir -p  sde2/sde3

[root@bogon ~]# rmdir sde1*

            举例:

  • rmdir sde       删除名为sde的空目录
  • rmdir -p sde/test  删除sde目录中名为test的子目录,若test目录删除后sde目录变为空目录,则也被删除
  • rmdir sde*       删除名称以sde开始的空目录
        rm

删除文件或者目录


            语法:

 rm [-rf] name

使用 rm 删除文件夹,里面要是存在的有文件或者文件夹,就会删除失败。

[root@bogon ~]# rm sde1

使用 -r 递归删除:

[root@bogon ~]# rm -r sde1
rm:是否进入目录"sde1"? y
rm:是否删除目录 "sde1/sde22"?y
rm:是否删除目录 "sde1"?y
[root@bogon ~]# 

看效果:

 -f  不询问删除:

[root@bogon ~]# rm -rf sde2
[root@bogon ~]# 

效果: 


            说明:

 -r:将目录及目录中所有文件(目录)逐一删除,即递归删除
-f:无需确认,直接删除

            举例:

  •  rm -r itcast/    删除名为itcast的目录和目录中所有文件,删除前需确认
  • rm -rf itcast/   无需确认,直接删除名为itcast的目录和目录中所有文件
  • rm -f hello.txt  无需确认,直接删除hello.txt文件

    拷贝移动目录:

        cp

 用于复制文件或目录


            语法:

 cp [-r] source dest

 复制到另一个目录 

[root@bogon ~]# cp 1.txt  sde1/
[root@bogon ~]# cd sde1
[root@bogon sde1]# ll
总用量 4
-rw-r--r--. 1 root root 145 12月 28 15:57 1.txt
drwxr-xr-x. 2 root root   6 12月 28 15:56 sde2
[root@bogon sde1]# 

在当前目录下,改名复制。

[root@bogon sde1]# cp 1.txt ./66.txt
[root@bogon sde1]# ll
总用量 8
-rw-r--r--. 1 root root 145 12月 28 15:57 1.txt
-rw-r--r--. 1 root root 145 12月 28 15:59 66.txt
drwxr-xr-x. 2 root root   6 12月 28 15:56 sde2
[root@bogon sde1]# 

演示:cp -r  sde1/ ./daoen

[root@bogon ~]# cp -r sde1 ./daoen
[root@bogon ~]# cd daoen
[root@bogon daoen]# ll
总用量 0
drwxr-xr-x. 3 root root 45 12月 28 17:40 sde1
[root@bogon daoen]# cd sde1
[root@bogon sde1]# ll
总用量 8
-rw-r--r--. 1 root root 145 12月 28 17:40 1.txt
-rw-r--r--. 1 root root 145 12月 28 17:40 66.txt
drwxr-xr-x. 3 root root  21 12月 28 17:40 sde2
[root@bogon sde1]# cd sde2
[root@bogon sde2]# ll
总用量 0
drwxr-xr-x. 2 root root 6 12月 28 17:40 888.txt
[root@bogon sde2]# 

演示带 /* 的

[root@bogon ~]# cp -r sde1/* ./daoen
[root@bogon ~]# ll
总用量 2264
-rw-r--r--. 1 root root     145 12月 28 15:19 1.txt
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      45 12月 28 17:48 daoen
drwxr-xr-x. 3 root root      45 12月 28 15:59 sde1
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# cd daoen
[root@bogon daoen]# ll
总用量 8
-rw-r--r--. 1 root root 145 12月 28 17:48 1.txt
-rw-r--r--. 1 root root 145 12月 28 17:48 66.txt
drwxr-xr-x. 3 root root  21 12月 28 17:48 sde2
[root@bogon daoen]# 


            说明:

 -r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件

            

举例:

  •  cp hello.txt sde/            将hello.txt复制到itcast目录中
  • cp hello.txt ./hi.txt           将hello.txt复制到当前目录,并改名为hi.txt
  • cp -r itcast/ ./sde/        将sde目录和目录下所有文件复制到sde66目录下
  • cp -r itcast/* ./sde/       将sde目录下所有文件复制到sde66目录下

        

mv

为文件或目录改名、或将文件或目录移动到其它位置


            语法:

 mv source dest

演示改名:

[root@bogon ~]# ll
总用量 2264
-rw-r--r--. 1 root root     145 12月 28 15:19 1.txt
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      45 12月 28 15:59 sde1
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# mv 1.txt 666.txt
[root@bogon ~]# ll
总用量 2264
-rw-r--r--. 1 root root     145 12月 28 15:19 666.txt
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      45 12月 28 15:59 sde1
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

演示移动:

[root@bogon ~]# mv 666.txt sde1/
[root@bogon ~]# ll
总用量 2260
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde1
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# cd sde1
[root@bogon sde1]# ll
总用量 12
-rw-r--r--. 1 root root 145 12月 28 15:57 1.txt
-rw-r--r--. 1 root root 145 12月 28 15:19 666.txt
-rw-r--r--. 1 root root 145 12月 28 15:59 66.txt
drwxr-xr-x. 3 root root  21 12月 28 16:06 sde2
[root@bogon sde1]# 

移动到不存在的文件夹,就是改名字。

[root@bogon ~]# mv sde1 sde6
[root@bogon ~]# ll
总用量 2260
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

移动到一个已经存在的目录:

[root@bogon ~]# ll
总用量 2260
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 2 root root       6 12月 28 18:15 sde
drwxr-xr-x. 3 root root      18 12月 28 15:56 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# mv sde sde2
[root@bogon ~]# ll
总用量 2260
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 4 root root      29 12月 28 18:15 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# cd sde2
[root@bogon sde2]# ll
总用量 0
drwxr-xr-x. 2 root root 6 12月 28 18:15 sde
drwxr-xr-x. 2 root root 6 12月 28 15:56 sde3
[root@bogon sde2]# 


            举例:

  •                 mv hello.txt hi.txt        将hello.txt改名为hi.txt
  • mv hi.txt sde/        将文件hi.txt移动到sde目录中
  • mv hi.txt sde/hello.txt    将hi.txt移动到sde目录中,并改名为hello.txt
  • mv sde/ sde1/        如果sde1目录不存在,将sde目录改名为sde1
  • mv sde/ sde1/        如果sde1目录存在,将sde目录移动到sde1目录中

    打包压缩命令:
tar:

文件进行打包、解包、压缩、解压


        语法:

 tar [-zcxvf] fileName [files]

  •  包文件后缀为.tar表示只是完成了打包,并压缩
  •  包文件后缀为.tar.gz表示打包的同时还进行压缩

        说明:

  • -z:z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
  •  -c:c代表的是create,即创建新的包文件
  •  -x:x代表的是extract,实现从包文件中还原文件
  • -v:v代表的是verbose,显示命令的执行过程
  •  -f:f代表的是file,用于指定包文件的名称

演示打包不压缩:

[root@bogon ~]# tar -cvf sde.tar sde2
sde2/
sde2/sde3/
sde2/sde/
[root@bogon ~]# ll
总用量 2272
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 4 root root      29 12月 28 18:15 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root   10240 12月 28 18:54 sde.tar
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

解压:

[root@bogon ~]# ll
总用量 2272
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root   10240 12月 28 18:54 sde.tar
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# tar -xvf sde.tar
sde2/
sde2/sde3/
sde2/sde/
[root@bogon ~]# ll
总用量 2272
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
drwxr-xr-x. 4 root root      29 12月 28 18:15 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root   10240 12月 28 18:54 sde.tar
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

演示将一个目录中的文件,全部打包。

[root@bogon sde2]# ll
总用量 0
drwxr-xr-x. 2 root root 6 12月 28 18:15 sde
drwxr-xr-x. 2 root root 6 12月 28 15:56 sde3
[root@bogon sde2]# tar -cvf all.tar ./*
./sde/
./sde3/
[root@bogon sde2]# ll
总用量 12
-rw-r--r--. 1 root root 10240 12月 28 19:00 all.tar
drwxr-xr-x. 2 root root     6 12月 28 18:15 sde
drwxr-xr-x. 2 root root     6 12月 28 15:56 sde3
[root@bogon sde2]# 

进行解压操作:

[root@bogon sde2]# ll
总用量 12
-rw-r--r--. 1 root root 10240 12月 28 19:00 all.tar
[root@bogon sde2]# tar -xvf all.tar
./sde/
./sde3/
[root@bogon sde2]# ll
总用量 12
-rw-r--r--. 1 root root 10240 12月 28 19:00 all.tar
drwxr-xr-x. 2 root root     6 12月 28 18:15 sde
drwxr-xr-x. 2 root root     6 12月 28 15:56 sde3
[root@bogon sde2]# 

压缩并打包:

[root@bogon ~]# tar -zcvf daoen.tar.gz sde2
sde2/
sde2/all.tar
sde2/sde/
sde2/sde3/
[root@bogon ~]# ll
总用量 2264
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
-rw-r--r--. 1 root root     228 12月 28 19:04 daoen.tar.gz
drwxr-xr-x. 4 root root      44 12月 28 19:02 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

解压缩:

[root@bogon ~]# tar -zxvf daoen.tar.gz 
sde2/
sde2/all.tar
sde2/sde/
sde2/sde3/
[root@bogon ~]# ll
总用量 2264
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
-rw-r--r--. 1 root root     228 12月 28 19:04 daoen.tar.gz
drwxr-xr-x. 4 root root      44 12月 28 19:02 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# 

-rw-r--r--. 1 root root     228 12月 28 19:04 daoen.tar.gz
drwxr-xr-x. 4 root root      44 12月 28 19:02 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# tar -zxvf daoen.tar.gz -C /usr/local
sde2/
sde2/all.tar
sde2/sde/
sde2/sde3/
[root@bogon ~]# cd /usr/local
[root@bogon local]# ll
总用量 0
drwxr-xr-x.  2 root root  65 12月 27 17:25 appjar
drwxr-xr-x.  2 root root   6 4月  11 2018 bin
drwxr-xr-x.  2 root root   6 4月  11 2018 etc
drwxr-xr-x.  2 root root   6 4月  11 2018 games
drwxr-xr-x.  2 root root   6 4月  11 2018 include
drwxr-xr-x.  9 root root 136 12月 27 13:39 jdk-21.0.1
drwxr-xr-x.  2 root root   6 4月  11 2018 lib
drwxr-xr-x.  2 root root   6 4月  11 2018 lib64
drwxr-xr-x.  2 root root   6 4月  11 2018 libexec
drwxr-xr-x. 10 root root 141 12月 27 14:30 mysql
drwxr-xr-x. 11 root root 151 12月 27 15:58 nginx
drwxr-xr-x.  2 root root   6 4月  11 2018 sbin
drwxr-xr-x.  4 root root  44 12月 28 19:02 sde2
drwxr-xr-x.  5 root root  49 12月 14 04:28 share
drwxr-xr-x.  2 root root   6 4月  11 2018 src
[root@bogon local]# 
    文本编辑命令:
vi/vim:

 vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本

        语法:

 vi fileName(要编辑的文件名)

        说明:

  • 1、vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。
  • 2、要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:

        yum install vim

      

 vim:
            作用:

对文件内容进行编辑,vim其实就是一个文本编辑器

            语法:

vim fileName

 

 三个模式介绍:

从命令行模式,到低行模式 是 按的 Shift + : 

命令行模式的快捷键:

  • gg 定位到文本内容的第一行
  • G 定位到文本内容的最后一行
  • dd 删除光标所在行的数据
  • ndd 删除当前光标所在行及之后的n行数据
  • u 撤销操作
  • i或a或o 进入插入模式

操作演示:

刚刚执行的是 vim 1.txt 然后点击了回车,先是进入到了命令行模式:

我按一下 i a o 这三个其中一个,进入插入模式:

然后我们就可以输入内容了:

进入低行模式:我按的是 Shift + :

对文件进行保存:

也可以输入 x 退出并保存:

测试:

看看新内容是否在:

插入操作的,快捷操作的演示(命令行模式):

gg

G

dd

ndd 例如:2dd(一次直接删除 2行)5dd(一次直接删除5行)

u


      低行模式的快捷操作:

                  
            

:wq 保存并退出

:q! 不保存退出

:set nu 显示行号

:set nonu 取消行号显示

:n 定位到低n行,如 : 10 就是定位到第 10 行            
                

    低行模式,快捷操作演示:

q! 

看效果:

set nu 

set nonu

: n

查找命令:

        find:

在指定目录下查找文件


            语法:

 find dirName -option fileName

[root@bogon ~]# ll
总用量 2268
-rw-r--r--. 1 root root     100 12月 28 19:51 1.txt
-rw-------. 1 root root    1257 12月 14 04:31 anaconda-ks.cfg
-rw-r--r--. 1 root root     228 12月 28 19:04 daoen.tar.gz
drwxr-xr-x. 2 root root       6 12月 28 20:11 hello.java
drwxr-xr-x. 4 root root      44 12月 28 19:02 sde2
drwxr-xr-x. 3 root root      60 12月 28 18:02 sde6
-rw-r--r--. 1 root root 2307208 12月 27 09:57 tlias.log
[root@bogon ~]# find . -name *.java
./hello.java
[root@bogon ~]# 

[root@bogon ~]# cd /
[root@bogon /]# find /root/sde2/ -name *.java
/root/sde2/1.java
/root/sde2/2.java
[root@bogon /]# 

            举例:

  • find . –name *.java        在当前目录及其子目录下查找.java结尾文件
  • find /itcast -name *.java    在/itcast目录及其子目录下查找.java结尾的文件

        grep:

从指定文件中查找指定的文本内容


            语法:

 grep word fileName

指定精准查找:

[root@bogon ~]# grep Exception tlias.log 

可以发现,找到的都标红了。

忽略大小写的查找:

查找结果:


            举例:

  • grep Hello HelloWorld.java    查找HelloWorld.java文件中出现的Hello字符串的位置
  • grep hello *.java        查找当前目录中所有.java结尾的文件中包含hello字符串的位置

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【 C语言 】| C程序百例 - 绘制余弦曲线

【 C语言 】| C程序百例 - 绘制余弦曲线 时间:2023年12月29日12:56:29 文章目录 【 C语言 】| C程序百例 - 绘制余弦曲线1.要求2.问题分析与算法设计3.程序3-1.源码3-2.makefile 4.运行 1.要求 在屏幕上用"*"显示0~360的余弦曲线cos(x)曲线。 2.问题分析与…

【C++】vector 基本使用(详解)

目录 一,vector 的介绍 二,vector 的定义 1,vector() 2,vector(size_type n, const value_type& val value_type()) 3,vector (const vector& x) 4,vector (InputIte…

播放海康摄像头直播流使用笔记

1、将海康摄像头绑定到萤石云平台&#xff0c;并查看直播流 2、项目中使用 1、安装hls cnpm i hls.js 2、封装组件&#xff08;在components文件夹下新建bodyCapture文件夹下index.vue&#xff09; <template><el-dialogtitle"遗体抓拍"class"bo…

git 常用基本命令, reset 回退撤销commit,解决gitignore无效,忽略记录或未记录远程仓库的文件,删除远程仓库文件

git 基本命令 reset 撤销commit https://blog.csdn.net/a704397849/article/details/135220091 idea 中 rest 撤销commit过程如下&#xff1a; Git -> Rest Head… 在To Commit中的HEAD后面加上^&#xff0c;点击Reset即可撤回最近一次的尚未push的commit Reset Type 有三…

Unity 旋转跟随

Unity 使用任意一个局部轴指向目标 效果&#xff1a; 主要用于在编辑器中可视化对象的朝向&#xff0c;同时提供了选择不同轴向的功能。在运行时&#xff0c;物体将根据所选择的轴向朝向目标&#xff0c;并在 Scene 视图中绘制一个带箭头的圆环。 定义轴向枚举&#xff1a;…

学python用哪本书比较好,学python应该买什么书

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;学python用哪本书比较好&#xff0c;学python应该买什么书&#xff0c;今天让我们一起来看看吧&#xff01; 文章目录 一、Python 基础 01-《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》02-《P…

右键添加 idea 打开功能

1.开始运行regedit 2.找到: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell _3.开始设置 一、右键shell目录新建项Idea二、右键Idea新建command三、选择Idea 右侧空白出新建字符串 名字为Icon 值填入idea的运行程序地址 四、选择command 默认项填入idea的运行程序地址…

javascript之跳转页面的几种方法?

文章目录 前言代码演示及解释使用location.href属性使用location.assign()方法使用location.replace()方法使用window.open()方法使用document.URL方法 总结 前言 本章学习的是JavaScript中的跳转页面的几种方法 代码演示及解释 使用location.href属性 可以直接将一个新的URL…

LabVIEW的便携式车辆振动测试分析

随着计算机和软件技术的发展&#xff0c;虚拟仪器正逐渐成为机械工业测试领域的主流。在现代机械工程中&#xff0c;特别是车辆振动测试&#xff0c;传统的测试方法不仅设备繁杂、成本高昂&#xff0c;而且操作复杂。为解决这些问题&#xff0c;开发了一款基于美国国家仪器公司…

PostgreSQL 数据库归档最近被问及的问题问题 与 4 毋 处世学

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共1790人左右 1 2 3 4 5&#xff0…

跑项目报错Cannot find module ‘@babel/preset-env/lib/utils‘

换了电脑之后新电脑 npm install 安装包之后&#xff0c;npm run serve 运行项目出错 &#x1f447;&#x1f447;&#x1f447; npm run serve 运行项目报错 Cannot find module babel/preset-env/lib/utils 根据报错提示查看报错的包路径 可以确定安装的依赖包没有问题&#…

elasticsearch系列四:集群常规运维

概述 在使用es中如果遇到了集群不可写入或者部分索引状态unassigned&#xff0c;明明写入了很多数据但是查不到等等系列问题该怎么办呢&#xff1f;咱们今天一起看下常用运维命令。 案例 起初我们es性能还跟得上&#xff0c;随着业务发展壮大&#xff0c;发现查询性能越来越不…

【第十二课】KMP算法(acwing-831 / c++代码 / 思路 / 视频+博客讲解推荐)

目录 暴力做法 代码如下 KMP算法 不同的next求法-----视频讲解/博客推荐 视频推荐 博客推荐 课本上的方法- prefix的方法- 求next数组思路---next数组存放前缀表的方式 s和p匹配思路 代码如下 暴力做法 遍历s主串中每一个元素&#xff0c;如果该元素等于模板串p中…

SeaTunnel流处理同步MySQL数据至ClickHouse

ClickHouse是一种OLAP类型的列式数据库管理系统&#xff0c;ClickHouse完美的实现了OLAP和列式数据库的优势&#xff0c;因此在大数据量的分析处理应用中ClickHouse表现很优秀。 SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。用户只需要配置…

你的 VSCode 上 还没有 GitHub Copilot ?看这里

GitHub Copilot 是由 OpenAI 和 GitHub 开发的 AI 工具。其目的是通过自动完成代码来帮助开发人员使用集成开发环境 &#xff08;IDE&#xff09;&#xff0c;如 Visual Studio Code。它目前仅作为技术预览版提供&#xff0c;因此只有已加入候补名单的用户才能访问它。对于使用…

OpenAI: InstructGPT的简介

OpenAI: InstructGPT paper: 2022.3 Training Language Model to follow instructions with human feedback Model: (1.3B, 6B, 175B) GPT3 一言以蔽之&#xff1a;你们还在刷Benchamrk?我们已经换玩法了&#xff01;更好的AI才是目标 这里把InstructGPT拆成两个部分&#…

Arduino stm32 USB CDC虚拟串口使用示例

Arduino stm32 USB CDC虚拟串口使用示例 &#x1f4cd;相关篇《STM32F401RCT6基于Arduino框架点灯程序》&#x1f516;本开发环境基于VSCode PIO&#x1f33f;验证芯片&#xff1a;STM32F401RC⌛USB CDC引脚&#xff1a; PA11、 PA12&#x1f527;platformio.ini配置信息&…

线程基础知识(三)

前言 之前两篇文章介绍了线程的基本概念和锁的基本知识&#xff0c;本文主要是学习同步机制&#xff0c;包括使用synchronized关键字、ReentrantLock等&#xff0c;了解锁的种类&#xff0c;死锁、竞争条件等并发编程中常见的问题。 一、关键字synchronized synchronied关键…

android studio 将含有jni c++ 的library项目封装成jar并调用

请参考博客&#xff1a;android studio 4.1.1 将library项目封装成aar 并调用_android studio 4.1 aar release-CSDN博客 一 . 简单叙述 android studio 中可以创建Module 的两种属性&#xff0c;可以在build.gradle 中查看&#xff1a; 1. application属性&#xff1a;可以独…

2023我的编程之路

你的编程学习经历和成长过程&#xff1a; 在我探索编程世界的旅程中&#xff0c;我深刻地认识到&#xff0c;编程不仅仅是一种技术&#xff0c; 是一种思维方式&#xff0c; 一种解决问题的方法。希望通过分享我的编程学习体验&#xff0c;能够启发更多的人看到编程的魅力和价值…