diff --git a/_posts/2014-01-14-about-zshrc.html b/_posts/2014-01-14-about-zshrc.html
index e0b5279..bbc4652 100644
--- a/_posts/2014-01-14-about-zshrc.html
+++ b/_posts/2014-01-14-about-zshrc.html
@@ -267,8 +267,6 @@ alias du='show_which du && du -k --total --human-readable'
# change less and zless to vimpager
alias less='vimpager'
alias zless='vimpager'
-# more interactive rm
-alias rm='show_which rm && rm -I'
{% endhighlight %}
Here are ls aliases (see man ls):
@@ -424,6 +422,42 @@ su () {
}
{% endhighlight %}
+Function that replaces original rm
command. If you type rm
it will be equivalent moving to trash an you can easily restore a file:
+{% highlight bash %}
+rm () {
+ # error check
+ [ $# -eq 0 ] && { echo "Files are not set!"; return 1 }
+ # set trash path
+ TRASHDIR="$HOME/.local/share/Trash"
+ TRASHFILE="${TRASHDIR}/files"
+ TRASHINFO="${TRASHDIR}/info"
+ for DIRECTORY in "${TRASHDIR}" "${TRASHFILE}" "${TRASHINFO}"; do
+ if [ -e "${DIRECTORY}" ]; then
+ [ -d "${DIRECTORY}" ] || { echo "'${DIRECTORY}' is a file"; return 1 }
+ else
+ mkdir -p -m755 "${DIRECTORY}"
+ fi
+ done
+ # confirm
+ CONFIRM=""
+ echo -n "You realy want to remove '$@'? [y/n] "; read -k1 CONFIRM; echo
+ [[ ! $CONFIRM =~ [yY] ]] && return 1
+ # move
+ for FILE in "$@"; do
+ DESTFILE="$(basename ${FILE})"
+ SUFFIX='';
+ ITER=0;
+ while [ -e "${TRASHFILE}/${DESTFILE}${SUFFIX}" ]; do
+ SUFFIX="_${ITER}";
+ ITER=$(expr ${ITER} + 1)
+ done
+ echo "Remove '${FILE}'"
+ mv "${FILE}" "${TRASHFILE}/${DESTFILE}${SUFFIX}"
+ echo "[Trash Info]\nPath=$(realpath ${FILE})\nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)" > "${TRASHINFO}/${DESTFILE}${SUFFIX}.trashinfo"
+ done
+}
+{% endhighlight %}
+
Functions with automatic rehash after installing/removing packages are:
{% highlight bash %}
pacman () {
diff --git a/about.html b/about.html
index a74365b..ff90ddc 100644
--- a/about.html
+++ b/about.html
@@ -11,7 +11,7 @@ title: About me
{{ page.title }}
GitHub Profile
- TU Profile on archlinux.org
+ TU Profile on archlinux.org
Some of my publications
PGP signature: 0x31361F01
diff --git a/ru/_posts/2014-01-14-about-zshrc.html b/ru/_posts/2014-01-14-about-zshrc.html
index f71f5c1..acfca42 100644
--- a/ru/_posts/2014-01-14-about-zshrc.html
+++ b/ru/_posts/2014-01-14-about-zshrc.html
@@ -267,8 +267,6 @@ alias du='show_which du && du -k --total --human-readable'
# замена less и zless на vimpager
alias less='vimpager'
alias zless='vimpager'
-# более интерактивный rm
-alias rm='show_which rm && rm -I'
{% endhighlight %}
ls аллиасы (смотри man ls):
@@ -424,6 +422,42 @@ su () {
}
{% endhighlight %}
+Функция, которая заменяет оригиналькую команду rm
. Если Вы наберете rm
, это будет эквивалентно перемещению в корзину, также, Вы можете легко восстановить удаленный файл:
+{% highlight bash %}
+rm () {
+ # error check
+ [ $# -eq 0 ] && { echo "Files are not set!"; return 1 }
+ # set trash path
+ TRASHDIR="$HOME/.local/share/Trash"
+ TRASHFILE="${TRASHDIR}/files"
+ TRASHINFO="${TRASHDIR}/info"
+ for DIRECTORY in "${TRASHDIR}" "${TRASHFILE}" "${TRASHINFO}"; do
+ if [ -e "${DIRECTORY}" ]; then
+ [ -d "${DIRECTORY}" ] || { echo "'${DIRECTORY}' is a file"; return 1 }
+ else
+ mkdir -p -m755 "${DIRECTORY}"
+ fi
+ done
+ # confirm
+ CONFIRM=""
+ echo -n "You realy want to remove '$@'? [y/n] "; read -k1 CONFIRM; echo
+ [[ ! $CONFIRM =~ [yY] ]] && return 1
+ # move
+ for FILE in "$@"; do
+ DESTFILE="$(basename ${FILE})"
+ SUFFIX='';
+ ITER=0;
+ while [ -e "${TRASHFILE}/${DESTFILE}${SUFFIX}" ]; do
+ SUFFIX="_${ITER}";
+ ITER=$(expr ${ITER} + 1)
+ done
+ echo "Remove '${FILE}'"
+ mv "${FILE}" "${TRASHFILE}/${DESTFILE}${SUFFIX}"
+ echo "[Trash Info]\nPath=$(realpath ${FILE})\nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)" > "${TRASHINFO}/${DESTFILE}${SUFFIX}.trashinfo"
+ done
+}
+{% endhighlight %}
+
Функция для автоматических обновлений путей после установки пакето:
{% highlight bash %}
pacman () {
diff --git a/ru/about.html b/ru/about.html
index 41f743b..12e595f 100644
--- a/ru/about.html
+++ b/ru/about.html
@@ -12,7 +12,7 @@ title: Обо мне
{{ page.title }}
Профиль на GitHub
- Профиль TU на archlinux.org
+ Профиль TU на archlinux.org
Некоторые из моих публикаций
PGP: 0x31361F01