野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

一个非常省事的命令: cdtmp

好久好久之前,看 sorrycc 的视频的时候,发现他用了一个很 tricky 的命令:cdtmp,执行命令后 shell 就会跳到 /tmp/sorrycc-xxxxxx 文件夹下,觉得十分好用。

自己也用了蛮久了,真的十分好用,有很多场景都需要用到:

想写一个验证想法的小 case,或者验证一下某个函数的用处,或者 clone 一下某个仓库查看一下相关内容。直接 cdtmp 打开一个临时文件夹,在里面直接做你想做的事情,而且完全不需要担心这些文件后续的清理问题,Windows 来说使用清理软件清理垃圾时一般都会删除临时文件,Linux 下也有相应的清除 tmp 目录的逻辑和方法。

简单介绍一下这个命令,给出 zsh 中的实现以及一个 Windows 下 PowerShell 里的同样功能的函数。

命令的作用就是:在系统的临时目录创建一个文件夹然后跳转过去。

zsh#

sorrycc 提到的 cdtmp

cdtmp,进入到一个随机创建的临时目录,简单好用,http://frantic.im/cdtmp
-- https://github.com/sorrycc/zaobao/issues/2

原文 中给出了 zsh 中的实现的链接。

把下面这行代码添加到你的 .zshrc 文件即可:

alias cdtmp='cd `mktemp -d /tmp/artin-XXXXXX`'

这条命令会在系统临时目录下创建一个名为 artin-XXXXXX 的文件夹,然后跳转过去。

PowerShell#

我使用的是 PowerShell Core 7,如果你无法使用的话可以自己改改。

在 PowerShell 中单靠 Set-Alias 就没法实现这样的效果了(或者实现比较复杂),但可以写成一个函数,也非常简单,可以直接在 PowerShell 中执行。

不过 PowerShell 只有 New-TemporaryFile 这个方法,不能直接一个命令创建文件夹。

所以我们要使用常规一点的方法来实现,也就是拼接要创建的 temp 文件夹名,然后跳转过去。

function cdtmp {
    $parent = [System.IO.Path]::GetTempPath()
    $name = 'artin-' + $([System.IO.Path]::GetRandomFileName()).Split(".")[0]
    New-Item -ItemType Directory -Path (Join-Path $parent $name)
    cd (Join-Path $parent $name)
}

直接把这段代码放入 $PROFILE 文件中就好了。

参考链接#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。