在大多数Linux发行版中,Python都会作为系统组件预装在内,deepin也不例外,Python有一个非常好用的简单服务器功能,只需要一条命令即可创建一个简易的单线程服务器。大多数情况下,通过这种方式在局域网内传输文件,让几乎任何设备都可以接受你传送的文件,只需要在浏览器中点击下载即可。
怎么实现?
建立这个服务器很简单,只需要下边这条命令:
python3 -m http.server
在你想要分享的目录打开终端,然后输入这条命令,即可以此目录为根目录创建HTTP服务器。
此时终端中应当显示下边类似的内容:
这里我们需要记住端口号。然后在同一局域网下的其他设备上,可以在浏览器访问“http://IP:端口号”来访问这个文件夹
例如:“http://192.168.1.3:8000”,访问后显示以下内容
此时就可以点击下载了。
一般来说这个端口号是不变的,大多数情况下局域网的IP也是固定的,如果在家里,可以在路由器页面中为电脑分配一个固定的IP,这样把地址加入收藏夹中,即可快速访问,无需重复输入地址。
此时,你就可以通过python在局域网下的任何设备传输文件,而且不需要接受端下载任何软件,你也不需要安装额外的任何软件。
奔着大道至简的原则,我们需要简化这个过程。
现在我们知道的具体的流程,所以,哪个步骤可以简化?
目前,我们必须右键打开终端,然后输入命令,之后回车,然后在接受端输入地址,然后才能访问传输。
如果大家不介意上边的操作,或者不觉得麻烦,可以忽略这个。(而且如果身旁有女同学还可以露露脸)
如果大家奔着能少点一下就少点一下的原则,那就继续往下看。
我们的目标是,最好只需要点一下,然后就可以用其他设备访问。
这是最终简化结果,只需要右键,点击一下即可。至于为什么我这里有两个,请往下看。
步骤一:写个脚本,化简命令
#!/bin/bash
deepin-terminal -e “python3 -m http.server” -w $1
这个脚本假如命名为"share",我们编辑好这个脚本后,把他放在/usr/bin目录下,即可在任意位置输入“share 路径”来打开服务器。
那么,就可以实现输入"share ~/Desktop"后以桌面为根目录的分享。
相对于原有的命令,是不是简洁多了。
但是还不够,傲娇的我一个命令都不想有
假设你已经完成了,那么进行下一步
步骤二:誓死不用命令行
想实现上边我截图中的效果,把东西放在右键菜单中,需要写一个类似快捷方式的东西,然后放到指定目录下。
这里的目录是:系统盘->/usr/share/deepin/dde-file-manager/oem-menuextensions
我们需要在里边新建一个扩展名为desktop的文件,例如share.desktop
然后在其中输入以下内容
[Desktop Entry]
Exec=share %U
GenericName=share
GenericName[zh_CN]=分享到局域网
MimeType=inode/directory;
Name=share
Name[zh_CN]=分享到局域网
Type=Application
X-Deepin-Vendor=user-custom
Exec那一项表示要运行的命令 %U表示当前的目录,假如说你在桌面点击右键打开,然后这个%U就是~/Desktop
这时候注销后重新登录即可使用。
一些补充:
deepin-terminal -e “python3 -m http.server” -w $1
这句命令可能有小白不太理解,因为python3 -m http.server没有图形界面,所以我们需要一个载体来控制他,deepin-terminal是深度终端,-e后边是需要运行的命令,-w是设置当前路径。
输入deepin-terminal -h可以看到完整的介绍。
这样做的好处是当你想停止时只需要按Ctrl+C或者直接关掉终端窗口即可。
另一些补充:
我右键有两个分享是因为我在之前自己做了一个程序来简化和优化这个过程。
下边是程序地址
https://gitee.com/Maicss/SendByLAN
你也可以在星火商店找到他。
spk://store/tools/sendbylan
右键点击后就会出现,如果接受端是手机,那么可以直接扫描二维码访问,电脑的话,可以输入上边显示的链接。
至此就完成了
相信有比我更“热爱极简”的某癌患者
我写了一个配置脚本,只需要用运行一下sudo ./install即可