function transfer | |
if test (count $argv) -eq 0 | |
echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md" | |
return 1 | |
end | |
## get temporarily filename, output is written to this file show progress can be showed | |
set tmpfile ( mktemp -t transferXXX ) | |
## upload stdin or file | |
set file $argv[1] | |
#if tty -s; | |
#then | |
set basefile (basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g') | |
# if [ ! -e $file ]; | |
# then | |
# echo "File $file doesn't exists." | |
# return 1 | |
# fi | |
if test -d $file | |
# zip directory and transfer | |
set zipfile ( mktemp -t transferXXX.zip ) | |
# echo (dirname $file) | |
#cd (dirname $file) and echo (pwd) | |
zip -r -q - $file >> $zipfile | |
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile | |
rm -f $zipfile | |
else | |
# transfer file | |
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile | |
end | |
#else | |
# # transfer pipe | |
# curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile | |
#fi | |
## cat output link | |
cat $tmpfile | |
## cleanup | |
rm -f $tmpfile | |
end |
# | |
# Defines transfer alias and provides easy command line file and folder sharing. | |
# | |
# Authors: | |
# Remco Verhoef <remco@dutchcoders.io> | |
# | |
curl --version 2>&1 > /dev/null | |
if [ $? -ne 0 ]; then | |
echo "Could not find curl." | |
return 1 | |
fi | |
transfer() { | |
# check arguments | |
if [ $# -eq 0 ]; | |
then | |
echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md" | |
return 1 | |
fi | |
# get temporarily filename, output is written to this file show progress can be showed | |
tmpfile=$( mktemp -t transferXXX ) | |
# upload stdin or file | |
file=$1 | |
if tty -s; | |
then | |
basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g') | |
if [ ! -e $file ]; | |
then | |
echo "File $file doesn't exists." | |
return 1 | |
fi | |
if [ -d $file ]; | |
then | |
# zip directory and transfer | |
zipfile=$( mktemp -t transferXXX.zip ) | |
cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile | |
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile | |
rm -f $zipfile | |
else | |
# transfer file | |
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile | |
fi | |
else | |
# transfer pipe | |
curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile | |
fi | |
# cat output link | |
cat $tmpfile | |
# cleanup | |
rm -f $tmpfile | |
} | |
This comment has been minimized.
This comment has been minimized.
Thanks! Updated it to upload folders as well. |
This comment has been minimized.
This comment has been minimized.
This alias function works great with Zsh. Many thanks! |
This comment has been minimized.
This comment has been minimized.
I get the following error on both my RPI2 running Raspbian as well as on my Mac running OS X Yosemite: |
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
This comment has been minimized.
Thx, fixed it. |
This comment has been minimized.
This comment has been minimized.
On Mac OS X Yosemite the bash script will always create a file named I beleive line 8 should be:
|
This comment has been minimized.
This comment has been minimized.
thx, fixed |
This comment has been minimized.
This comment has been minimized.
Thanks for this! Already used here. |
This comment has been minimized.
This comment has been minimized.
Hi, I added a line on the bash version, to copy the link to clipboard... cat $tmpfile | pbcopy
cat $tmpfile |
This comment has been minimized.
This comment has been minimized.
@bitbonsai, nice idea! Remove the newline at the end: |
This comment has been minimized.
This comment has been minimized.
Is there a version of.Bat? |
This comment has been minimized.
This comment has been minimized.
Nice. However quotes are missing around $file (4 occurrences). |
This comment has been minimized.
This comment has been minimized.
need to add a "-e" to echo for bash to interpret the newlines "\n". Thank you so much for this service. You are beyond awesome. Wish I found out about it sooner! Update: You can see my suggestions in my fork: https://gist.github.com/nl5887/a511f172d3fb3cd0e42d |
This comment has been minimized.
This comment has been minimized.
I am using an older version of this alias. I tried to upload a file which its name contained brackets. I got an error because brackets have some special meaning for |
This comment has been minimized.
This comment has been minimized.
Any idea why I get: syntax error near unexpected token 'filename' After adding the alias and trying to call it with any parameter? |
This comment has been minimized.
This comment has been minimized.
why not add |
This comment has been minimized.
This comment has been minimized.
Hello! How can one properly modify this shell script to add GPG encryption functionality ? It would be really nice to have this as an option. |
This comment has been minimized.
This comment has been minimized.
on the website's version, the gist works well ;D |
This comment has been minimized.
This comment has been minimized.
Agreeing with @tallinn-code, it could be great to implement a .trshrc file ;D |
This comment has been minimized.
This comment has been minimized.
There are several double quotes missing, plus other mistakes as in usage. transfer() {
# check arguments
if [ $# -ne 1 ];
then
echo -e "Wrong arguments specified. Usage:\ntransfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
return 1
fi
# get temporary filename, output is written to this file so show progress can be showed
tmpfile="$( mktemp -t transferXXX )"
# upload stdin or file
file="$1"
if tty -s;
then
basefile="$( basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g' )"
if [ ! -e $file ];
then
echo "File $file doesn't exists."
return 1
fi
if [ -d $file ];
then
# zip directory and transfer
zipfile="$( mktemp -t transferXXX.zip )"
cd "$(dirname "$file")" && zip -r -q - "$(basename "$file")" >> "$zipfile"
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> "$tmpfile"
rm -f $zipfile
else
# transfer file
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> "$tmpfile"
fi
else
# transfer pipe
curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> "$tmpfile"
fi
# cat output link
cat "$tmpfile"
echo
# cleanup
rm -f "$tmpfile"
} |
This comment has been minimized.
This comment has been minimized.
Thanks @HacKanCuBa ! Had the same problem. |
This comment has been minimized.
This comment has been minimized.
Please consider pulling in my change: (currently no way to do a PR on gists.. :( ) |
This comment has been minimized.
This comment has been minimized.
Consider replacing the fish version with a link to https://github.com/fisherman/transfer |
This comment has been minimized.
This comment has been minimized.
Yeah, this should be a real repo, for PR's. Please, always use http://shellcheck.net/ on shell scripts. You can get it immediately in vim on Ubuntu/Debian with |
This comment has been minimized.
This comment has been minimized.
I added the following after '# cat output link' and before '# cleanup' to keep track of hem:
~Denny |
This comment has been minimized.
This comment has been minimized.
solution without temp files transfer() {
# check arguments
if [ $# -eq 0 ]; then
echo "No arguments specified." >&2
echo "Usage:" >&2
echo " transfer <file|directory>" >&2
echo " ... | transfer <file_name>" >&2
return 1
fi
# upload stdin or file
if tty -s; then
file="$1"
if [ ! -e "$file" ]; then
echo "$file: No such file or directory" >&2
return 1
fi
file_name=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
# upload file or directory
if [ -d "$file" ]; then
# transfer directory
file_name="$file_name.zip"
(cd "$file" && zip -r -q - .) | curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name" | tee /dev/null
else
# transfer file
cat "$file" | curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name" | tee /dev/null
fi
else
# transfer pipe
file_name=$1
curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name" | tee /dev/null
fi
} |
This comment has been minimized.
This comment has been minimized.
@qoomon |
This comment has been minimized.
This comment has been minimized.
not working on bash for me from alpine or ubuntu 18.04. why? |
This comment has been minimized.
This comment has been minimized.
@JackieMium
after last fi |
This comment has been minimized.
Thank you so much for taking the time to lay this out as clearly as possible. This functionality is awesome, and I definitely look forward to using it on a day-to-day basis!