Java云同桌学习系列(十九)——Linux系统
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为“云同桌”。
每月预计保持更新数量三章起,每章都会从整体框架入手,介绍章节所涉及的重要知识点及相关练习题,并会设置推荐学习时间,每篇博客涉及到的点都会在开篇目录进行总览。(博客中所有高亮部分表示是面试题进阶考点)
阔别两个星期,博主也对前面所学的技术进行了一个实践,完成了自己的毕业设计项目,不知道各位小伙伴下去有没有练练手呢?接下来我们就要进行框架的学习了,所谓磨刀不误砍柴功,在此之前,还需要大概三、四章的内容学习几个额外的知识点。
Linux系统
- 1.Linux系统发展与概述
- 2. Linux系统的安装
- 3. Linux系统目录结构
- 4. ==Linux系统常用命令==
- 5. ==Linux文件权限==
- 6. Shell脚本编程
- 6.1 运行shell脚本
- 6.2 shell脚本变量
- 6.3 Shell数组
- 6.4 shell接收外部参数
- 6.5 shell运算符
- 6.6 常用命令
- 6.7 流程控制
- 6.8 shell函数
- 7.Xshell与SecureFXPortable工具
- 8. Ubuntu18.0.4 配置静态IP地址
学习时间:四天
学习建议:大多数Java项目的运行环境都是Linux系统,包括由于Linux系统的特性,服务器所用的系统也都是Linux系统,因此,学会Linux系统是非常必要的。
1.Linux系统发展与概述
当前主流的操作系统,主要是两大分支:Windows系统和Unix系统
而Unix系统又逐渐发展为两大分支,一个便是大名鼎鼎的苹果的操作系统——Mac系统,而对于我等贫穷人民来说,更受欢迎的另一个免费、开源、稳定可移植性高的类Unix系统——Linux系统
也正是因为上述的特点,Linux的发展极快,已经成为了IT行业的主流操作系统,大多数服务器的主要需求便是:安全性、稳定性、高效性
如果是window是很难这些要求的,所以一般企业级用户会选择unix和linux。
对于我们作为应用程序开发者来选择OS:开发的时候可能会用到window或者unix,但是在部署的时候大多数都是unix.所以就需要对unix有一定的了解。
2. Linux系统的安装
如果你有钱,可以购买苹果电脑来使用Unix系统,这是最方便简单的步骤
如果你没钱(譬如博主),就比较麻烦了,需要通过在Windows系统上安装虚拟机然后通过发行版镜像来使用Linux
- 安装VMware虚拟机
- Linux发行版镜像下载(博主使用的是Ubuntu)
- Linux系统安装图文讲解
3. Linux系统目录结构
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。
文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
开发人员首要关注的目录为:
配置目录/etc:软件安装后配置文件选择放入的地址。
软件安装目录/opt:部署的API程序一般放在这个目录。
此外:
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
4. Linux系统常用命令
建议查看更加详细的菜鸟编程-linux系统
命令 | 描述 |
---|---|
pwd | 查看当前所在路径 |
ls -l | 查看目录内容详细信息 |
mkdir | 创建新文件夹目录 |
cd | 切换目录 |
touch | 创建新文件 |
cat | 查看文件内容 |
more | 分页查看文件内容,空格换页 |
cp | 复制文件 |
rm | 删除文件 |
uname -a | 显示详细系统信息 |
top | 查看当前进程耗时与占用,每3秒刷新一次,ctrl+c中断退出 |
ps -aux | 查看当前进程快照 |
kill -9 进程PID | 强制杀死该PID对应的进程 |
grep | 关键字查询,可以使用管道|来结合其他命令使用,如查看java进程:ps -aux | grep java |
du -sh | 查看文件大小 |
df -lh | 查看磁盘使用情况 |
ifconfig | 查看或配置网卡信息 |
netstat -anp | grep 端口号 | 查看某个端口的占用情况 |
命令 --help | 命令参数提示 |
sudo 命令 | 临时管理员身份执行命令 |
su | 切换为管理员root身份 |
gedit | 使用Ubuntu自带的编辑器 |
向文件写入内容:
echo “内容” >文件名
输出流覆盖写入文件aa.txt
echo "内容" >> 文件名
输出流追加写入文件aa.txt使用Vi编辑器:
vi 文件名
vi编辑器命令 描述 dd 删除光标所在当前行 ndd 删除从光标所在行向下的n行内容 yy 复制当前行 nyy 复制多行 p 黏贴复制的内容 u 反悔 相当于windows系统下的ctrl+z $ 光标到行位最后一个字符 0 光标到行首第一个字符 a 进入编辑模式,光标定位到当前位置的下一个字符位 o 进入编辑模式, 光标定位到当前位置的下一行 A 进入编辑模式, 光标直接定位到行尾 O 进入编辑模式, 光标定位到当前位置的上一行 I 进入编辑模式, 光标定位到当前行第一个非空的字符位 查看端口相关netstat
常用参数:
-a或--all:显示所有连线中的Socket;-l或--listening:显示监控中的服务器的Socket;-n或--numeric:直接使用ip地址,而不通过域名服务器;-p或--programs:显示正在使用Socket的程序识别码和程序名称;-t或--tcp:显示TCP传输协议的连线状况;
打包与拆包
tar - cxzjvf <打包后的文件> <欲打包的目录>
c :创建的一个归档文件x :拆包z :以gzip 格式压缩 j :以bzip2格式压缩v :显示打包或者拆包的文件信息f : 后面紧接一个 归档文件打包及压缩:tar -czvf 打包后的文件名.gz 打包后的路径拆包及解压缩: tar -xzvf 待解压的文件名.gz
安装文件命令
yum(用于Fedora 和 RedHat):
yum [options] [command] [package ...]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。
apt(用于 Debian 和 Ubuntu ):
apt [options] [command] [package ...]
options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。
5. Linux文件权限
① 字母选项方式chmod u // u代表设置主的权限chmod g // g代表设置组的权限chmod o // o 代表设置其他用户权限chmod a // 设置所有用户的权限
权限操作符: + 增加权限 - 撤销权限 = 赋予新的权限,会覆盖掉之前
② 采用数字的方式操作我们将每一个权限为看成二进制的1或0,对应权限为有权限为 1,没有为0。r-- 换算为10进制为 4-w- 换算为10进制为 2--x 换算为10进制为 1
比如: 给一个文件设置权限 rw-r—r—可以写为 chmod 644 filename
6. Shell脚本编程
推荐阅读:菜鸟编程-linux教程
Shell 是一种命令语言,也是一种程序设计语言。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
本次我们学的是Bourne Again Shell(/bin/bash),也是就Bash,Bash 也是大多数Linux 系统默认的 Shell。
6.1 运行shell脚本
作为可执行程序
chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本
注意,要写成 ./test.sh,而不是 test.sh
作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh/bin/php test.php
6.2 shell脚本变量
定义变量时,可以直接进行定义
test=“this is a test”
使用变量时,需要在定义好的变量前用美元$符号表示,以及用{}包裹
echo ${test}
只读变量:(类似与java的常量)使变量不可以被改变
readonly test
删除变量:被删除的变量不可以再使用,只读变量不可被删除
unset variable_name
字符串变量创建:
- 单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 双引号:双引号里可以有变量,双引号里可以出现转义字符
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
输出结果为:
hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !
6.3 Shell数组
Bash中只支持一维数组,数组中可以存放多个值
array_name=(value1 value2 ... valuen)
同样,读取数组中的元素可以通过下标
${array_name[index]}
6.4 shell接收外部参数
在执行shell脚本程序时,可以顺便传递外部的参数
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与 ∗ 相 同 , 但 是 使 用 时 加 引 号 , 并 在 引 号 中 返 回 每 个 参 数 。 如 " *相同,但是使用时加引号,并在引号中返回每个参数。如" ∗相同,但是使用时加引号,并在引号中返回每个参数。如"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
6.5 shell运算符
大多数运算符都是常用的运算符,但存在一些特殊的运算符需要了解一下
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 |
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
= | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n “$a” ] 返回 true。 |
$ | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
6.6 常用命令
read:从标准输入流中读取一行,并把输入行的每个字段的值指定给 shell 变量
echo:输出命令
echo -e :可以开启转义
echo -e "OK! \n" # -e 开启转义 echo "It is a test" # 输出: #OK! # #It is a testecho -e "OK! \c" # -e 开启转义 \c 不换行 echo "It is a test" #输出: #OK! It is a test
输出命令的显示结果
echo `date` # 注意此处是反引号,而不是单引号 # 输出: #Thu Jul 24 10:08:46 CST 2014
test:用于检查某个条件是否成立
num1=100 num2=100 if test $[num1] -eq $[num2] thenecho '两个数相等!' elseecho '两个数不相等!' fi # 输出: #两个数相等!
可用于对文件类型的判断
参数 说明 -e 文件名 如果文件存在则为真 -r 文件名 如果文件存在且可读则为真 -w 文件名 如果文件存在且可写则为真 -x 文件名 如果文件存在且可执行则为真 -s 文件名 如果文件存在且至少有一个字符则为真 -d 文件名 如果文件存在且为目录则为真 -f 文件名 如果文件存在且为普通文件则为真 -c 文件名 如果文件存在且为字符型特殊文件则为真 -b 文件名 如果文件存在且为块特殊文件则为真
6.7 流程控制
- if…else
if condition
thencommand1 command2...commandN
elsecommand
fi
- for循环
for var in item1 item2 ... itemN
docommand1command2...commandN
done
- while循环
while condition
docommand
done
- case多分支选择语句
case 值 in
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac
6.8 shell函数
函数的使用非常简单
demoFun(){echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
对于带有返回值的函数,需要通过$?
来指代返回的数据
demoFun(){echo "这是我的第一个 shell 函数!"return 5
}
echo "-----函数开始执行-----"
demoFun
echo $?
echo "-----函数执行完毕-----"
7.Xshell与SecureFXPortable工具
Xshell 如遇问题请查看
Xshell是一个强大的安全终端模拟软件,Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。同样,也可以用于连接我们的虚拟的linux系统
找到Linux虚拟机的ip,新建一个Xshell会话,将主机地址设置为虚拟机的IP地址,即可实现连接,便可实现在Windows系统界面操作linux虚拟机,不用在主机与虚拟机之间来回进行切换
如下图所示可以在Xshell中正常使用linux命令则连接成功
SecureFXPortable 如遇问题请查看
SecureFXPortable是一个可以方便的与服务器交互文件的工具,也是类似与Xshell一样根据ip地址进行连接,连接成功后可以把Windows本地文件很方便的传输给虚拟机Linux
8. Ubuntu18.0.4 配置静态IP地址
首先,本次例子环境使用的是VMware15以及Ubuntu18.0.4
找到Windows主机的虚拟机网卡VMnet8,配置IP地址及网关、DNS解析器
将虚拟机网络连接模式改为NAT模式
修改/etc/netplan/01-network-manager-all.yaml文件,在其中配置自定义的IP地址,以及对应上面的网关、DNS
network:version: 2ethernets:ens33:dhcp4: noaddresses: [192.168.188.131/24] #自定义ipgateway4: 192.168.188.2 #网关nameservers:addresses: [8.8.8.8,114.114.114.114] #DNS解析器地址
执行netplan apply使其生效即可
之后就可以ifconfig、ping外网进行测试了
作者寄语:坚持就是胜利,相信学到这里的小伙伴也都是意志坚韧之辈,戒骄戒躁,每个章节打好基础,才能在之后的框架学习中得心应手。
Java云同桌学习系列(十九)——Linux系统相关推荐
- Java云同桌学习系列(十五)——MySQL数据库
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...
- java云同桌学习系列(十四)——JavaScript语言
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以随着我的步伐一起进步,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...
- java云同桌学习系列(十)——网络编程
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...
- java云同桌学习系列(七)——集合
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...
- Java云同桌学习系列(十三)——前端技术之HTML与CSS
本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以跟随我的步伐一起学习,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...
- Linux学习系列十九:如何高效的阅读Linux源码
1.引言 如何阅读代码还要单独写一篇文章?难道不是随便用一个IDE就可以了吗?回到上一篇文章里介绍的那个问题,需要修改uboot里board_mmc_init函数里的writel(0x66666666 ...
- Java学习系列(十九)Java面向对象之数据库编程
JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范. Java数据 ...
- 【Python学习系列十九】基于scikit-learn库进行特征选择
场景:特征选择在模型训练前是非常有意义的,实际上就是先期对特征相关性进行分析. 参考:http://blog.csdn.net/fjssharpsword/article/details/735503 ...
- Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定
本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲 ...
最新文章
- 网络工程师_想要记录下来的一些题_1
- “上海名媛群”事件,我来说几句
- 红帽论坛北京站召开 设立亚太开放创新实验室
- Visio中插入mathtype公式,解决直线交叉弯曲的问题
- 解决Visual Studio “无法导入以下密钥文件”的错误
- 如何运用DDD - 实体
- YII2 服务器验证码不显示
- oracle 对应的JDBC驱动 版本
- 年初新立Flag,新华三解决方案部做了点儿啥?
- 【电信增值业务学习笔记】3 语音类增值业务
- 应对“反洗钱”,银丰新融反洗钱自主监测系统为机构保驾护航
- Superior Scheduler:带你了解FusionInsight MRS的超级调度器
- 盘点:移动服务 #AzureChat
- jQuery学习(九)—常用的包裹方法
- [Erlang 0127] Term sharing in Erlang/OTP 上篇
- 网页打开摄像头_只要5分钟,快速掌握摄像头课件直播技巧
- android 平板root,安卓平板电脑怎么root 安卓平板一键root方法_硬件教程
- 独立站运营成败,7个细节不可忽视
- 从中序与后序遍历序列构造二叉树
- pytest接口自动化测试框架 | 为什么要做pytest插件的二次开发
热门文章
- 祝福大家新年快乐,身体健康,工作顺利,万事如意!
- jsp页面读取txt乱码
- php车秘,2020秘趣导航自动收录网站导航源码原版 自动审核|批量检查友链有效性...
- Vue项目启动时卡在98% after emitting CopyPlugin
- React + Ant Design Pro项目实现keep-alive页签
- N-Tiers设计系列(二):三层式应用系统架构
- 计算机毕业设计java的婚恋交友动态网站
- okGo框架的使用,下载列表显示
- 分享几个好用的WP插件,让你的网站牛逼起来
- html怎么画正方形的斜线,html – 斜线的样式