ファイルを知っている人に渡す時にはどうやって行っていますか。チャットでファイル添付したり、メールを使ったり、様々な方法があるかと思います。しかしいずれも一長一短だったりします。 そこで使ってみたいのがtransfer.shです。コマンドラインでファイルを送信、共有するためのサービスです。

transfer.shの使い方

例えば .bash_profile に以下のように記述します。

transfer() { if [ $# -eq 0 ]; then echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi 
tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; }; alias transfer=transfer 

こうすると transfer コマンドが使えるようになります。そしてファイルを指定して実行します。

$ transfer README.md 
######################################################################## 100.0%
https://transfer.sh/ZiHyQ/readme.md

そうするとこのようにURLが出ますので、これを相手に送れば良いだけです。テキストファイルはこのようにファイルの内容が表示されます。

transferを定義していなかったとしてもcurlでも送ることができます。

$ curl --upload-file ./README.md https://transfer.sh/mg-readme.md
https://transfer.sh/17uCTa/mg-readme.md

transfer.shはサーバのローカルファイルとして保存またはS3上にファイルが保存できるようになっています。URLは分かりづらいものが生成されますが、それでもURLが分かれば誰でもアクセスできます。機密ファイルは送らないのが良いでしょう。

transfer.shはGo製のオープンソース・ソフトウェア(MIT License)です。

transfer.sh - Easy and fast file sharing from the command-line. dutchcoders/transfer.sh