Linux 基本使用

Linux 背景知识

Linux 是什么

Linux 是一个操作系统 . Windows " 并列 " 的关系
有的同学可能表示 , Linux 都是世界第一大操作系统了 , 我咋还没听说过 ? , 其实你听说过 . 安卓系
统本质上就是 Linux.

Linux 发行版

Linux 严格意义来说只是一个 " 操作系统内核 ".
一个完整的操作系统 = 操作系统内核 + 配套的应用程序 .
由于 Linux 是一个完全开源免费的内核 , 因此有些公司 / 开源组织又基于 Linux 内核 , 提供了不同的配套程序. 这就构成了不同的 " 发行版 ".

关于 Linux 我们学习什么

1) 基础命令

Linux 虽然也有图形化界面 , 但是在 服务器 / 嵌入式设备上往往都是通过命令行的方式操作的 . 因此学习Linux 命令就是使用 Linux 的重要基础 .
使用命令相比于使用图形界面主要有以下好处 :
  • 节省系统资源: 运行图形界面需要让系统付出一些额外的资源开销. 尤其是对于配置比较低的 嵌入式设备, 这一点至关重要.
  • 节省网络带宽: 如果通过网络访问服务器, 使用图形界面需要传输一帧一帧的图像, 而使用命令 只需要传输简单的字符串.
  • 便于批量执行任务: 可以通过一些 "脚本" 代码 (比如 Linux Shell) 来批量执行一些任务, 完成一些简单的编程工作. (比如定时备份文件, 删除文件等).

Windows 也有命令(也就是 cmd), 只是对于普通用户来说很少使用.

2) 系统编程 & 网络编程

Linux 自身提供了一些 API, 供程序猿调用来完成一些更复杂的编程任务 ( 比如文件操作 , 多线程编程 , socket 编程等 ).
但是由于 Java 跨平台的特性 , 这部分功能已经被 Java 自身封装好了

3) 部署 JavaWeb 项目

我们自己写的 web 程序 , 要想让其他的用户能够访问 , 就需要发布到服务器上

Tips:

对于 Java 程序猿 , 关于 Linux 重点学习 基础命令 和 项目部署 即可

Linux 环境搭建

要想学习 Linux , 需要先有一个 Linux 的环境 .

环境搭建方式

主要有四种 :
1. 直接安装在物理机上 . 但是由于 Linux 桌面使用起来非常不友好 . [ 不推荐 ].
2. 使用虚拟机软件 , Linux 搭建在虚拟机上 . 但是由于当前的虚拟机软件 ( VMWare 之类的 ) 存在一些 bug , 会导致环境上出现各种莫名其妙的问题 , 比较折腾 . [ 非常不推荐 ]
3. 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能 , Windows
系统内集成了一个 Linux. 但是目前这个技术还不够成熟 . [ 暂时不推荐 ].
4. 使用云服务器 , 可以直接在 腾讯云 , 阿里云或华为云 等服务器厂商处直接购买一个云服务器 . [ 墙裂 推荐 ]
如腾讯云阿里云等为在校学生提供了优惠 , 只要通过学生认证 , 最低可以 10 块钱一个月 . 还是非常
划算的 .
使用云服务器不仅环境搭建简单 , 避免折腾 , 同时还有一个最大的好处 , 部署在云服务器上的项目可以直接 被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别 . 也就能让我们自己写的程序真的去给别人去使用.
能够在外网被访问是非常有意义的 . 这样我们以后面试的时候就可以提前部署好项目 , 现场给面试
官演示了

使用云服务器

我们以腾讯云为例 , 其他的服务器厂商也是类似 .
1. 进入官方网站 https://cloud.tencent.com/act/campus ( 直接在百度上搜 " 腾讯云校园计划 ")
2. 登陆网站 ( 可以使用 qq 或者 微信 登陆 )
3. 右侧的操作系统选择 CentOS 7.6 64 . 购买时长根据需要选择 ( 建议 1 ), 点击立即购买即可 . 这个步骤需要实名认证, 否则会提示
点击立即认证 , 按照系统提示 , 完成实名认证即可 ( 认证速度很快 ).
4. 购买完成后 , 可以在控制台中找到自己买的服务器 . 点进去能够看到服务器的 IP 地址

蓝色方框为公网 ip 地址 , 稍后我们就会使用这个 ip 登陆服务器 .
5. 设置 root 密码 : 勾选服务器 , 点击重置密码 ( 这个环节可能需要手机短信验证 ). root 密码建议设置的稍微复杂一些, 否则容易被黑客入侵 .

 

在这个环节我们最重要的是得到三个信息 :
1. 服务器的外网 IP
2. 服务器的管理员账户 ( 固定为 root)
3. 管理员账户密码 ( 在腾讯云网站上设置的 )
这三个信息是我们登陆到 Linux 上的必要条件 .

 

使用终端软件连接到 Linux

什么是终端软件

终端软件是一类工具软件 , 可以和远程的主机建立网络连接 , 从而对主机进行一些操作 .
常见的终端软件 :
XShell
Putty
MobaXTerm
Iterm2
SecureCRT
......
我们课堂上使用的是 XShell.

下载安装 XShell

下载地址 : https://www.netsarang.com/en/free-for-home-school/
XShell 提供了两种授权方式 .
企业版 : 收费 .
家庭 / 教育版 : 免费 .
我们选择 家庭 / 教育 版即可 . 下载的时候需要填一下名字和邮箱 . 下载链接会被发送到填写的邮箱中.

邮箱中收到的内容形如: 

点击邮箱中的下载链接即可完成下载.

使用 XShell 登陆主机

XShell 终端下输入

 ssh 服务器外网ip地址

ip 为腾讯云后台页面中看到的 外网 IP.
如果网络畅通 , 将会提示输入用户名密码 . 输入即可正确登陆 .
备注 : 这里的用户名为 root, 密码是在最初购买服务器的时候设置的密码 .

关于XShell 下的复制粘贴

复制 : ctrl + insert ( 有些同学的 insert 需要配合 fn 来按 )
粘贴 : shift + insert
ctrl + c / ctrl + v 是不行的 .

 

Linux 常用命令

ls

语法 ls [ 选项 ] [ 目录或文件 ]
功能 :对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如: ls –d 指定目录
-k k 字节的形式表示文件的大小。 ls –alk 指定文件
-l 列出文件的详细信息。
-r 对目录反向排序。
-t 以时间排序。
-R 列出所有子目录下的文件。 ( 递归 )
举例 :
ls -l

pwd

语法 : pwd
功能 :显示用户当前所在的目录
举例 :
pwd

cd

Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法 : cd 目录名
功能 : 改变工作目录。将当前工作目录改变到指定的目录下 .
举例
cd .. : 返回上级目录
cd ~ :进入用户家目
cd - :返回最近访问目录

认识 Linux 目录结构

Linux 是一个树形目录结构 .

 

几个特殊的目录 :
  • / 称为根目录
  • . 称为当前目录
  • .. 称为当前目录的上级目录

绝对路径 vs 相对路径

形如 : /usr/share/tomcat/logs/ 以根目录开头的 , 称为绝对路径 .
形如 : ./logs . 或者 .. 开头的 , 称为相对路径 .

使用 tab 键补全

我们敲的所有的 Linux 命令 , 都可以使用 tab 键来尝试补全 , 加快效率 .

使用 ctrl + c 重新输入

cd - :返回最近访问目录 如果命令或者目录敲错了 , 可以 ctrl + c 取消当前的命令 .

touch

语法 : touch [ 选项 ]... 文件 ...
功能 : touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
举例 :
touch test.txt

cat

语法 cat [ 选项 ] [ 文件 ]
功能 : 查看目标文件的内容
常用选项
  • -n 对输出的所有行编号

 cat test.txt

mkdir

语法 mkdir [ 选项 ] dirname...
功能 :在当前目录下创建一个名为 “dirname” 的目录
常用选项
  • -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将 自动建立好那些尚不存在的目录,即一次可以建立多级目录
举例

 mkdir –p test/test1 : 递归建立多个目录

rm
语法 rm [-f-i-r-v] [dirName/dir]
功能 :删除文件或目录
常用选项
  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件
举例 :
rm test.txt

重要注意事项:

千万不要运行 rm - rf / , 尤其是在公司的生产服务器上 .

理解递归删除的过程:

cp

语法 cp [ 选项 ] 源文件或目录 目标文件或目录
功能 : 复制文件或目录
说明 : cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在
的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的
目的地并非一个已存在的目录,则会出现错误信息
常用选项
  • -f --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R --recursive递归处理,将指定目录下的文件及子目录一并处理
举例 :

 cp test1.txt test2.txt

mv

语法 : mv [ 选项 ] 源文件或目录 目标文件或目录
功能 :
1. mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。
常用选项
  • -f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
举例:
mv test1.txt test2.txt

man

Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法 : man [ 选项 ] 命令
常用选项
  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能够看到 man 手册中的若干个章节及其含义.
举例:
man ls

less

语法: less [ 参数 ] 文件
功能 :查看文件内容 . 不会立刻把所有文件内容加载到内存中 . 也能进行查找 .
选项
  • j k / 方向键: 向上向下滚动屏幕.
  • -N  显示每行的行号
  • /字符串:向下搜索字符串的功能
  • n:重复前一个搜索(与 /  ? 有关)
  • q: 退出

head

语法: head [ 参数 ]... [ 文件 ]... 
功能 head  用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
选项
  • -n<行数显示的行数

tail

语法: tail [ 必要参数 ] [ 选择参数 ] [ 文件
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
  • -f 循环读取
  • -n<行数显示行数
举例 :有一个文件共有 100 行内容,请取出第 50 行内容
# 方法 1
head -n50 test > tmp # 将前 50 行装入临时文件 tmp
tail -n1 tmp # 得到中间行
# 方法 2
head -n50 test | tail -n1

关于重定向

Linux 的很多指令 , cat head tail 等都是默认输出到 " 标准输出 " , 也就是显示器上的 . 可以通过
> 这样的符号把本来要输出到标准输出上的内容写到特定文件中 . 这样的操作称为 " 重定向 ".
重定向有三种方式 :
1. 标准输入重定向 (<)
# 先构造一个文件 , 里面添加一些内容 .
cat < test.txt
2. 标准输出重定向 (>)
cat test.txt > test2.txt
3. 标准错误重定向 (2>), 注意 2 > 之间不能有空格 .
# 尝试删除一个不存在的文件
rm aaa > test.txt
# 输出结果 , 这个提示并没有被重定向到 test.txt 文件中 .
rm: cannot remove ‘aaa’: No such file or directory
# 正确做法
rm aaa 2> test.txt
标准输入 , 标准输出 , 标准错误是三个特殊的文件 , 每个进程在启动的时候都会默认打开 . 分别对应
到键盘 , 显示器 , 显示器这样的设备 .
Java , 分别对应到 System.in , System.out , System.err

关于管道

管道是一种古老的 " 进程间通信 " 方式 . Linux 指令中可以使用 | 作为管道标记 .
意思是将前一个指令标准输出的内容 , 作为第二个指令的标准输入内容 .

date

date 指定格式显示时间: date +"%Y - %m - %d %H:%M:%S"
date 用法: date [OPTION]... [+FORMAT]
1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记
  • %H : 小时(00..23)
  • %M : 分钟(00..59)
  • %S : (00..61)
  • %X : 相当于 %H:%M:%S
  • %d : (01..31)
  • %m : 月份 (01..12)
  • %Y : 完整年份 (0000..9999)
  • %F : 相当于 %Y-%m-%d
2. 时间戳
时间 -> 时间戳: date +%s
时间戳 -> 时间: date -d@1508749502
Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time Unix timestamp )是从 1970 1 1
UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。

vim

vim 是一个知名的文本编辑器 . 前面学习的 cat, less, head, tail 等命令只能查看文本 , 不能编辑文本 . 使用 vim 就可以进行编辑了 .
vim 就相当于 Windows 的记事本 . 只不过功能比记事本强大一些 .
1) 创建文件 / 打开文件
vim [ 文件名 ]
2) 进入插入模式
vim 打开文件后默认是 普通模式 . 普通模式下键盘的按键表示一些特殊功能的快捷键 . ( 例如按下 j 并不是输入字母 "j", 而是表示光标往下移动一行 ). 需要进入插入模式才能进行文本编辑 .
使用 i 键可以进入到 插入模式 . ( 左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了 .
3) 保存
在插入模式下不能保存文件 , 需要先回到 普通模式 . 按下 Esc 回到普通模式 .
在普通模式下输入 :w , 再按下回车 , 即可保存文件 .
4) 退出
在插入模式下不能退出 , 需要先回到 普通模式 .
在普通模式下输入 :q , 再按下回车 , 即可退出 .
也可以直接使用 :wq 同时执行保存和退出 .

 grep

语法: grep [ 参数 ]... [ 文件 ]... 
功能 :用于查找文件中是否包含指定字符串 , 并显示对应的行 .
选项
  • -n<行数显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件
举例 :

 grep "hello" Hello.java

ps

语法: ps [ 参数 ]...
功能 :用于查看当前系统上运行的进程
选项
  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分
举例 :
ps aux # 显示系统上所有的进程
ps aux | grep " 进程名 "
ps aux | grep " 进程 id"

netstat

语法: netstat [ 参数 ]...
功能 :查看系统上的网络状态 .
选项
  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称
举例 :
netstat -anp
netstat -anp | grep " 进程名 "
netstat -anp | grep " 端口号 "

Linux 权限

用户操作

Linux 下有两种用户:超级用户( root )、普通用户。
  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
我们的服务器买好了 , 默认是 root 用户 . 但是 root 用户权力比较大 , 一旦使用不当可能会造成严重后果 ,(例如 rm -rf /). 因此我们真正在公司中不会直接使用 root 用户来操作服务器 .

1. 创建用户

命令 useradd [ 用户名 ]
功能 创建新的用户
示例:
useradd test

2. 配置密码

命令 passwd [ 用户名 ]
功能 设置或修改用户密码
示例:
passwd test
注意 , 输入密码的时候 , 在控制台中不会有提示 . 但实际上已经输入进去了 .

3. 切换用户

命令 su [ 用户名 ]
功能 :切换用户。
例如,要从 root 用户切换到普通用户 user ,则使用 su user
要从普通用户 user 切换到 root 用户则使用 su root root 可以省略),此时系统会提示输入 root 用户的口令。

三种角色

访问一个文件的人可能分成三种类别 .
  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others

文件类型和访问权限

命令 ll 显示了一个文件的详细信息 . 解读如下图 :

a) 文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
b) 基本权限
  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “-” 表示不具有该项权限

修改文件权限

功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限
chmod 命令权限值的格式
① 用户表示符 +/-= 权限字符
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
实例:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
②三位 8 进制数字
实例:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

 类似的还有 chgrp, chown 命令.

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值