We believe that writing is about content, about what you want to say – not about fancy formatting.
我们坚信写作写的是内容,所思所想,而不是花样格式。
— Ulysses for Mac
注:一些内置命令 只能用 help x 以查看x命令的帮助
if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi
Linux内置变量的访问方式:
( 可能命令行没效果,但是写脚本时有用 )
$?
命令的返回值存储变量 即返回刚刚执行命令的结果 0-成功 1-失败
$#
获取命令 的参数个数
rm -r b ( b 是文件夹名 ) —— $# = 2 ( 2个参数为 -r 和 b )
用法举例:
if [ $# -lt 1 ] —— 如果参数个数小于1
if [ $# -gt 1 ] —— 如果参数个数大于1
$n
获取第几个参数
$0 —— 获取命令本身
$1 —— 获取第一个参数 如 rm -r bin --> $1=-r
用法举例:
if [ " $1 " = " --conf " ]
$@
得到所有参数
rm -r b —— $@ --> -r b
shift
向左移动参数 左边的参数被覆盖
( 脚本里面 我们每次 $1 但是每次shift 这样可以循环处理所有参数 )
if [ -e xxx ] —— 如果xxx参数存在
判断是不是目录:
if [ -d ] —— 错误写法 需要空格
if [ -d xxx ] —— 正确写法
命令组合
a && b
a成功后再执行b
a || b
a执行失败再执行b
a ; b
a执行完后执行b 没有成功、失败的约束条件
( a ; b )
组合命令 只在当前目录执行 不切换目录
NetCat 瑞士军刀
TCP/IP
传输控制协议 网路协议
Java 中 Socket 编程
ServerSocket 服务器端 要有listener 监听器 创建监听器时要给出端口port
Socket 客户端要向端口发起连接
netcat 模拟tcp udp 网络通信
可实现端口的扫描
语法
服务端 nc -l port ( 指定监听的端口号 )
客户端 nc ip port ( 指定服务器的ip和监听端口号 )
man nc
命令行中 nc -l 8888 直接回车 --> 前台运行
我们要了解进程后台作业 和 停止和终止的区别!
- 停止是放到后台运行 jobs可以查看到
- 终止是完全杀死 jobs查看不到了
命令行中 nc -l 8888 & ( 在本机启动ServerSocket 进程 )回车
则不在前台运行 :
客户端 nc ip port ( 指定服务器的ip和监听端口号 )
启动客户端 连接到服务器端口8888 ( 本机ip 为localhost )
在命令行 输入 nc localhost 8888 : ( 下一行等待输入 )
输入完hello 回车:
此时服务器端已经有效果了 只不过是服务器端作业在后端运行
( 此时前台作业是客户端 )
再 ctrl + z 把客户端也放到后端
此时 1 是服务器端 ; 2 是客户端
再 fg %1 把服务器端调到前台:
( 按两下回车 显示出 从客户端传来的hello )
终止所有:
netcat 字符聊天
按ctrl + alt + F6 进入一个新终端:
开启服务器端:
按ctrl + alt + F5 进入一个新终端:
开启客户端:
在客户端 输入:
ctrl + alt + F6 切换到 服务器端:
( 已经可以看到从客户端传来的东西 )
( 也可以从服务端传给客户端东西...... )
字符聊天时 ctrl + d 断开连接
( 断开一方 另一个自动断开 )
在windows中ping 虚拟机中的ubuntu 的局域网的ip地址可以ping通:
在虚拟机中也可以ping通windows主机:
在虚拟机中开启服务器 在主机上开启客户端 , 两个可以通信:
netcat 传输文件
服务端 nc -l 1234 > readme.txt 重定向接收数据到文件
客户端 nc localhost 1234 < readme.txt 重定向输入
服务端:
文件成功从客户端传给服务端
netcat 端口扫描
nc ip -z port1 - portn ( 指定需要扫描的主机ip和端口区间 )
-v 详细信息 ; -w 连接超时 ; -z 端口扫描
比如 nc -v -w 2 ip -z 2000-4000 ( 2 标识2秒 ip可以换成主机名称 )
failed 标识 端口没有启用...
命令前后台执行切换
1 启动命令时放到前台 nc -l 8888
2 启动命令时直接放到后台 nc -l 8888 &
3 将当前进程暂放入后台 变成作业( job )
- ctrl + z 将当前进程暂放入后台
- jobs 查看后台运行的所有作业
4 将后台job激活 在后台运行 $ > bg %n
- n 是作业的标识号
5 将后台作业切换到前台运行 $ > fg %n
世界上所有的追求都是因为热爱
一枚爱编码 爱生活 爱分享的IT信徒
—— hongXkeX