Skip to content

Instantly share code, notes, and snippets.

@GanZhiXiong
Created September 17, 2021 10:09
Show Gist options
  • Save GanZhiXiong/9880a1b3abeac8ae58e4bad06751f2a8 to your computer and use it in GitHub Desktop.
Save GanZhiXiong/9880a1b3abeac8ae58e4bad06751f2a8 to your computer and use it in GitHub Desktop.
Download commands can be automatically copied to the clipboard after files are uploaded using transfer.sh.

transfer-download

With transfer-download, download commands can be automatically copied to the clipboard after files are uploaded using transfer.sh.

It was designed for 🐧 Linux or 🍎 macOS.

1. Install xclip or xsel for Linux, macOS skips this step

Install later, add pbcopy and pbpaste to .bashrc or .zshrc or its equivalent.

  • If use xclip, paste the following lines:
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
  • If use xsel, paste the following lines:
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

2. Add transfer-download shell function

  1. Open .bashrc or .zshrc or its equivalent.

  2. Add the following shell script:

    transfer() {
      curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename "$1") | pbcopy;
      echo "1) πŸ”— Download link:"
      echo "$(pbpaste)"
    
      echo "\n2) 🐧 Linux or 🍎 macOS download command:"
      linux_macos_download_command="wget $(pbpaste)"
      echo $linux_macos_download_command
    
      echo "\n3) πŸ˜“ Windows download command:"
      windows_download_command="Invoke-WebRequest -Uri "$(pbpaste)" -OutFile $(basename $1)"
      echo $windows_download_command
    
      case $2 in
        l|m)  echo $linux_macos_download_command | pbcopy
        ;;
        w)  echo $windows_download_command | pbcopy
        ;;
      esac
    }

3. Test

The transfer command has two parameters:

  1. The first parameter is the path to upload the file.

  2. The second parameter indicates which system's download command is copied. optional:

    • This parameter is empty to copy the download link.

    • l or m copy the Linux or macOS command that downloaded the file.

    • w copy the Windows command that downloaded the file.

For example, The command to download the file on Windows will be copied:

$ transfer ~/temp/a.log w
######################################################################## 100.0%
1) πŸ”— Download link:
https://transfer.sh/y0qr2c/a.log

2) 🐧 Linux or 🍎 macOS download command:
wget https://transfer.sh/y0qr2c/a.log

3) πŸ˜“ Windows download command:
Invoke-WebRequest -Uri https://transfer.sh/y0qr2c/a.log -OutFile a.log 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment