在Windows上使用VirtualBox虚拟机,并为客户机Linux建立了共享文件夹(假定其名称取为VMshare)之后,想要使用这个共享文件夹,通常需要依次执行以下步骤:
- 建立挂载点(只需建立一次,以后直接用即可)
- 挂载共享文件夹(每次重启机器以后,都得重新挂载,且命令冗长)
- 把工作目录切入共享文件夹的挂载点(每次都得临时切入,有时在挂载好共享文件夹后会不小心忘掉这一步)
为了简化用户的操作,并确保操作的正确性与完整性,我建立了一个alias如下:
alias us='sfmp=${ShareFolderMountPoint:-/mnt/share} && test -e ${sfmp} || mkdir ${sfmp} && mount -t vboxsf VMshare ${sfmp} && cd ${sfmp}'
这里的us是Use Share [folder]的简称。把这行内容追加到root用户家目录下的.bashrc文件中,即可永久生效。
若要在不注销或重启计算机的情况下立即生效,以root用户身份执行source ~/.bashrc即可。
生效以后,使用共享文件夹的步骤就可简化为
涉及的知识点:
- 变量的测试与替换 (****)
sfmp=${ShareFolderMountPoint:-/mnt/share}
若未设置环境变量ShareFolderMountPoint或环境变量ShareFolderMountPoint的值为空字符串,那么就用字符串/mnt/share把变量ShareFolderMountPoint的值替换掉;否则保持变量ShareFolderMountPoint的值不变;最后都要把变量ShareFolderMountPoint的值赋予变量sfmp,接下来将以之作为共享文件夹的挂载点。
- 文件(夹)存在性测试(****)
test -e ${sfmp}
若${sfmp}表示的文件(夹)存在,则测试结果为真(执行成功),否则为假(执行失败)。
- 创建文件夹(*)
mkdir ${sfmp}
创建${sfmp}表示的文件夹。若要创建的文件夹已经存在,则报错。
- 挂载VirtualBox虚拟机的共享文件夹(***)
mount -t vboxsf 共享文件夹名称 共享文件夹挂载点
- 切换工作目录(*)
cd 新目录
- 考虑命令相关性的连续命令执行(****)
结合本例,
command1 && command2 || command3 && command4 && command5
从左向右依次执行(可以通过添加圆括弧来分块儿,本例尚不需要这样),且遵循短路逻辑。详述如下:
若command1执行成功了,就执行command2;若command1执行失败了,就不必执行command2了;
若command2未执行或执行失败,就执行command3;若command2执行成功了,就不必执行command3了;
若command3未执行或执行成功了,就执行command4,否则结束;
若command4执行成功了,就执行command5,否则结束。