ํฐ๋ฏธ๋ ํ ๐คฉ fcopy, fcut, fpaste
Source: Dev.to
์๊ฐ
์ ์ ๊ฐ์ด ํฐ๋ฏธ๋์ ์ฌ๋ํ๋ค๋ฉด fcopy, fcut, fpaste ๋ฅผ ์ฌ์ฉํด ๋ณด์ธ์. ํ์ผ ํ์๊ธฐ์์ ๋ณต์ฌํ๋ ๋์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค:
fcopy some/file/
fcopy other/file/image.png
๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ ํฐ๋ฏธ๋์ ์ด๊ณ ์คํํฉ๋๋ค:
fpaste
ํจ์
fcopy
fcopy() {
if [ "$#" -eq 0 ]; then
echo "fcopy: nothing to copy"
return 1
fi
tmp="$(mktemp)"
printf 'copy\n' > "$tmp"
for item in "$@"; do
if [ -e "$item" ]; then
abs="$(realpath "$item")"
printf '%s\n' "$abs" >> "$tmp"
echo "copied to clipboard: $abs"
else
echo "fcopy: not found: $item" >&2
fi
done
mv "$tmp" ~/.fileclip
}
fcut
fcut() {
if [ "$#" -eq 0 ]; then
echo "fcut: nothing to cut"
return 1
fi
tmp="$(mktemp)"
printf 'move\n' > "$tmp"
for item in "$@"; do
if [ -e "$item" ]; then
abs="$(realpath "$item")"
printf '%s\n' "$abs" >> "$tmp"
echo "cut to clipboard: $abs"
else
echo "fcut: not found: $item" >&2
fi
done
mv "$tmp" ~/.fileclip
}
fpaste
fpaste() {
[ -f ~/.fileclip ] || { echo "fpaste: file clipboard is empty"; return 1; }
mode="$(head -n1 ~/.fileclip)"
count=0
while IFS= read -r src; do
[ -n "$src" ] || continue
if [ ! -e "$src" ]; then
echo "fpaste: source no longer exists: $src" >&2
continue
fi
if [ "$mode" = "move" ]; then
if mv -- "$src" .; then
echo "moved: $src -> $PWD/"
count=$((count + 1))
else
echo "fpaste: failed to move: $src" >&2
fi
else
if cp -a -- "$src" .; then
echo "pasted: $src -> $PWD/"
count=$((count + 1))
else
echo "fpaste: failed to paste: $src" >&2
fi
fi
done
}
์ฌ์ฉ ์์ฝ
fcopyโ ์ง์ ํ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌํฉ๋๋ค.fcutโ ์ง์ ํ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ํด๋ฆฝ๋ณด๋์ ์ด๋ํฉ๋๋ค(์๋ผ๋ด๊ธฐ ์์ ).fpasteโ ํด๋ฆฝ๋ณด๋์ ์๋ ํญ๋ชฉ์ ํ์ฌ ๋๋ ํฐ๋ฆฌ๋ก ๋ถ์ฌ๋ฃ์ต๋๋ค. ํด๋ฆฝ๋ณด๋๊ฐfcut์ผ๋ก ์์ฑ๋ ๊ฒฝ์ฐ ํญ๋ชฉ์ด ์ด๋๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ณต์ฌ๋ฉ๋๋ค.
์ด ํจ์๋ค์ ์ ์ค์ ํ์ผ(์: ~/.bashrc ๋๋ ~/.zshrc)์ ์ถ๊ฐํ๊ณ ์์ ๋ค์ ๋ก๋ํ์ธ์.