关于 Linux 的常用命令

目录

  • 前言
    • 什么是 Linux
    • 获得 Linux 环境
    • 为什么使用命令控制
    • 关于 XShell 下的复制粘贴
  • Linux 常用命令
    • ls (罗列文件)
    • cd (切换目录)
    • pwd (显示当前路径)
    • touch (创建一个空文件)
    • cat (读取文件内容)
    • man (查看用户手册)
    • echo (回显)
    • vim (文件编辑器)
    • mkdir (创建目录)
    • rm (删除目录/文件)
    • cp (复制)
    • mv (移动)
    • grep (字符串匹配)
    • ps (查看进程)
    • netstat (查看网络状态)

前言

什么是 Linux

Linux 是一个操作系统, 和 Windows 是 “并列” 的关系, 其实手机上的安卓系统就是 Linux.
我们日常使用的电脑都是 Windows 为主, 也有 mac 的.
Linux 的市场份额是比 Windows 更多的.

Linux 使用场景 :

  1. 服务器
  2. 嵌入式设备
  3. 移动端(手机)Android

Linux 准确来说是一个 “统称”, 或者可以认为是一个 “操作系统内核”.
一个完整的操作系统 = 操作系统内核 + 配套应用程序

于是有很多企业/组织, 基于 Linux 内核搭载不同的应用程序, 从而诞生了很多不同的 “操作系统”. 如下 :
关于 Linux 的常用命令_第1张图片
我们使用的是基于 redhat 的社区免费版本 Centos

获得 Linux 环境

学习 Linux 首先得有一个 Linux 环境.
推荐大家买个云服务器, 最近阿里也在搞活动, 送几个月呢, 我这里使用的也是阿里送的云服务器.

买完服务器后就得到三个重要信息 :

  1. 服务器的外网 ip
  2. 服务器的管理员账号 (固定为 root)
  3. 管理员账户密码 (在阿里云网站上设置)

上述三个信息是我们登录 Linux 的关键.

接下来就是使用终端软件来连接 Linux 了, 常见的终端软件有 :
XShell, Putty, MobaXTerm, Iterm2 等等, 我这里使用的是 XShell.

下载好 XShell 后就可以与云服务器建立连接了.

  1. 点击文件
  2. 新建
  3. 输入一个名称, 然后输入服务器的外网 ip.
  4. 点击连接. 之后就是输入用户名和密码了.

连接成功后就是这样了 :
在这里插入图片描述
解释一下含义 :

root 是当前用户名
@ 是分隔符
iZ2vch4gaxbeiyox9kxkanZ 是主机名
~ 表示当前所在目录 (~ 在Linux中有特殊含义, 表示 home 目录, 是用户存放数据的目录)
#表示当前身份是管理员 ($ 表示普通用户)

为啥 ~ 表示 home 目录呢 ?
这个是因为早期键盘的 ~键 和 home键 是同一个按键.

为什么使用命令控制

为什么使用 Linux 是使用命令进行操作的呢 ?
既然和 Windows 并列, 那为啥不像 Windows 一样使用图形化的界面 ?

首先, Linux 是有图形化界面的, 但是我们实际工作中一般都不会使用.

图形化优势 : 简单易上手.
Linux 图形化界面是比较糟糕的, 非常简陋, bug多.

命令行优势 : 高效, 准确, 是生产力工具.

  1. 带宽占用非常低
  2. 系统资源占用也非常低
  3. 命令行适合使用脚本来实现批量的重复性的操作.

关于 XShell 下的复制粘贴

复制: ctrl + insert (笔记本的 insert 需要配合 fn 来按)
粘贴: shift + insert

ctrl + c / ctrl + v 是不行的.

按 crtl + l 是清屏.

Linux 常用命令

ls (罗列文件)

list 列出当前 目录 / 指定目录 包含哪些文件.(类似于双击目录)
在这里插入图片描述
可看到我这里在 home 目录下有三个文件, 其中蓝色代表目录, 白色代表普通文件.
该目录下, 本来是没有文件的, 都是自己创建的.

ls 后面跟上一个具体目录, 就可以查看指定目录的内容.
在这里插入图片描述
这里 / 表示根目录, 对比 Windows 就是 “此电脑”, 云服务器上任何一个文件都是从属于根目录的.

在这里插入图片描述
此处效果和直接敲 ls 是一样的, 因为 root 用户的 home 目录就是 /root, 也就是我们以 root 身份登录后, 默认所在目录. /root 目录就是 root 用户的 ~ 目录.

使用 ls -l 就可以看到目录中的细节了.
在这里插入图片描述
因为我们使用 ls -l 操作很频繁, 所以 Linux 提供了 ll 操作, 相当于 ls -l.
在这里插入图片描述

-l 叫做 “命令行参数”, 当然还有其他命令行参数 :
关于 Linux 的常用命令_第2张图片
参数和参数在之间至少用一个空格来分割. (除了 -l, 其他命令行参数都用的较少)

cd (切换目录)

change directory 的缩写, 也就是切换目录.
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件.

cd 后面跟上要切换的目录路径 (绝对路径和相对路径都可)
Linux 中, 绝对路径是 / 开头的, 相对路径是以 ./ , …/ 开头的, 其中./ 可以省略.

在这里插入图片描述
可以看到, 当前目录由 ~, 变为了 /

注意下面操作下的目录变化 :
关于 Linux 的常用命令_第3张图片
如果直接 cd 后面不接什么, 则是直接回到 home 目录.

cd 和 ls 整个 Linux中最常用的两个命令.

pwd (显示当前路径)

pwd 是防止用户迷路的, 有时候用户 cd 太多了, 把自己也绕晕了, 这时候敲 pwd 显示当前完整路径.

就像点击 Windows 文件上的路径一样.
关于 Linux 的常用命令_第4张图片
在这里插入图片描述

touch (创建一个空文件)

创建一个 333.txt 文件 :
关于 Linux 的常用命令_第5张图片

可以看到该文件大小为0, 是个空文件.
关于 Linux 的常用命令_第6张图片

cat (读取文件内容)

cat 对简单短小的文件读取效果好, 如果文件大了, 很长, 那 cat 就不方便.
如果文件大小为零, 即使 cat 了, 也不会有内容.

关于 Linux 的常用命令_第7张图片
有时候输入的文件名很长, 就可以打出前几个字母, 然后按 tab 就可以补全了.

man (查看用户手册)

如果我们想具体了解某个命令的用法, 就可敲 man 指令, 如 : man cat
输入回车后, 就会跳转到用户手册, 退出按 q.

echo (回显)

echo 意思是回显, 我们可以在命令中输入要显示的内容, 然后回车就会显示出该内容.
在这里插入图片描述
当然, 我们也可以用来写文件 :
在这里插入图片描述
这里要注意, 每次写文件的时候, 都会清空原有内容.
在这里插入图片描述

总结 : echo 和 cat 这样的命令, 只是适合对简单文件进行操作.
如果文件复杂, 或者文件编辑需求复杂, 那就不适合了.
其实 echo 和 cat 指令很有用, 比如 : 当我们使用脚本批量处理很多简单操作的时候.

vim (文件编辑器)

如果是针对复杂文件, 进行复杂编辑, 那么就可以用到 vim 了.
vim 是 Linux 自带的文本编辑器, 相当于 Windows 的记事本.

这里只介绍 vim 的三种基本用法 :

  1. 打开文件
  2. 编辑文件
  3. 保存退出
  1. 打开文件 : 使用 vim 加文件名 / 文件路径.
  2. 编辑文件

打开 : hello.txt 文件 :
关于 Linux 的常用命令_第8张图片
回车后就会跳转到编辑画面, 这个时候 vim 处在普通模式, 此时键盘按键都是快捷键, 我们得切换到插入模式, 才是输入文本.
按 i, 即可进入插入模式, 这个模式就类似于记事本了.

  1. 保存退出 : 写完后, 按 Esc 键退出插入模式, 再输入 :w 就是保存, 再输入 :q 就是退出了, 当然可以一起输入 :wq, 保存并退出.

通过 cat 可以看到刚刚输入的内容 :
在这里插入图片描述

mkdir (创建目录)

mk -> make
dir -> directory
相当于 Windows 中, 鼠标右键, 新建目录.

rm (删除目录/文件)

remove 删除文件 / 删除目录
使用 rm -r 是递归删除, 即删除该目录下的所有子文件和子目录.
关于 Linux 的常用命令_第9张图片
可以看到, 使用 rm -r 删除要逐个文件询问是否删除, 遇到大文件就很麻烦.
我们可以使用 rm -rf 进行强制删除, 不会询问了.

关于 Linux 的常用命令_第10张图片
我们也可以使用通配符 * 来删除当前目录所有文件.
关于 Linux 的常用命令_第11张图片

注意 : rm 操作很危险 !!!
在 Linux 中, 没有回收站这个概念, 删除了就没有了.
如果我们把根目录删了就完了, 就是这个命令 : rm -rf / , 这个命令一出, 系统都跑不起来了.
如果误敲了, 只能重装系统了.
虽然大家都知道, 但还是会神不知鬼不觉的敲了.
具体啥场景下会敲错呢 ?

情况一 :
我现在要删除一个文件 :
关于 Linux 的常用命令_第12张图片
这样删是没问题的, 但就怕多敲了一个空格 : rm -rf / root/777
可以看到在第一个 / 后面跟了一个空格, 这时候 Linux 就认为你要删除两个目录 :
一个是 /
一个是 ./root/777 (./ 省略了)
这就真寄了.

情况二(更隐秘) :
编写 xshell 脚本的时候, 可能需要定义一个变量, 比如 : DIR=hello.txt
当我删除这个变量的时候就是 : rm -rf /$DIR, 注意 这个时候如果变量未定义, 那么 $DIR 就相当于空字符串了, 命令也就相当于 : rm -rf /

cp (复制)

copy 复制.
cp 要复制文件 目标目录
关于 Linux 的常用命令_第13张图片
还可以通过 cp 进行重命名, 当然它不是自己重命名, 而是复制一份, 并将复制的改个名字 :
关于 Linux 的常用命令_第14张图片

注意 : 如果拷贝的文件已经存在, 则会将原有文件覆盖.

当然 cp 还可以复制目录, 复制目录时, 加上 -r ( r 表示递归, 将所有子目录子文件都复制)

mv (移动)

类似于 cp, 也是这种形式 : mv 要移动的文件 目标目录
当命令是这种形式时 : mv hello.txt world.txt
就是单纯的重命名了, 可以理解为边移动, 边改名.
Linux 中, 没有单独的命令进行重命名, 就是通过 mv 来完成的. (mv 也可以移动目录, 不需要加 -r)
mv 操作是非常快的, 文件路径只是一个属性, 修改路径就是修改这个文件的属性, 很快的.

Linux 中, 没有回收站, 经常用来模拟回收站, 想删除某个东西, 并不是直接 rm, 而是将其移动到一个单独目录中.

grep (字符串匹配)

快速搜索某个文件中, 是否包含某个特定字符串.
关于 Linux 的常用命令_第15张图片
加上 -n 可以显示字符串出现在该文件哪一行, -n 也可以放 grep 后面.

grep 也可以在多个文件中进行搜索.
关于 Linux 的常用命令_第16张图片
" * " 表示当前目录下所有文件.
-R 表示递归搜索, 如果该目录下还有目录, 就会进入子目录搜索.

grep 不仅仅可以搜索文件内容, 还可以和其它命令联动.

ps (查看进程)

ps 用于查看当前系统上运行的进程, 可与 grep 联动.
ps aux 列出系统中所有进程.
ps aux | grep “进程名” 查看某个进程. grep 起到筛选的作用.
在这里插入图片描述
前面 3690818 是身份标识 pid, 后面的字符串是 mysql 对应的服务器进程, 注意, 每次敲的命令本身也是一个进程, 对照上图, 就是 root 对应的进程.

ps aux | grep “进程id” 根据 pid 来查询进程.
在这里插入图片描述

netstat (查看网络状态)

netstat 查看系统上的网络状态.
netstat -anp , 显示所有.
一般我们都是关注其中一部分信息, 搭配 grep 来查询.
在这里插入图片描述
:::3306 是本端的 ip 和端口, ::: 是 ipv6 的写法.
::: * 是对端 ip 和端口
3690818 是进程的 pid

面试常考 :
通过 ps 来查看某个进程的 pid.
通过 netstat 查看某个进程绑定的端口号.

你可能感兴趣的:(JavaEE,linux,服务器,java,网络)