浏览代码

Added updating and recent files

master
= 3 年前
父节点
当前提交
7921683dd7
共有 1 个文件被更改,包括 39 次插入19 次删除
  1. +39
    -19
      mru

+ 39
- 19
mru 查看文件

@@ -8,8 +8,10 @@ XDG_CACHE_HOME="$HOME/.cache"

init() {
mkdir -p $XDG_CACHE_HOME/mru
file=XDG_CACHE_HOME/mru/$1
create_new "$1"
mv "$file.new" "$file"
touch $XDG_CACHE_HOME/mru/$file.recent
}

get_cache_path() {
@@ -27,19 +29,37 @@ create_new() {
-path '*Backups/my-plugins*' -o -path '*.sw[po]' \) -printf \
'%TY-%Tm-%Td\t%TT\t%p\n' | sort -r > $file'.new'
}

update() {
clean
file=$XDG_CACHE_HOME/mru/$1
name="$1"
if [ -z "$1" ]; then
name='home'
fi
if [ -z "$1" ]; then name='home'; fi

create_new "$name"
mv "$file.new" "$file"
rm_recent "$1"
}

# This remove duplicates by deleting files in recent from the main file
rm_recent() {
file=$XDG_CACHE_HOME/mru/$1
if [ -z "$1" ]; then file=$XDG_CACHE_HOME/mru/home; fi
while read line
do
l=$(printf "$line" | cut -f3)
if [ ! -z $l ]; then sed -i "\|.*\t.*\t$l|d" $file; fi
done <$file.recent
}

output() {
if [ -z "$1" ]; then
cat $XDG_CACHE_HOME/mru/home; else cat "$XDG_CACHE_HOME/mru/$1";
file1="$XDG_CACHE_HOME/mru/home.recent"; file2="$XDG_CACHE_HOME/mru/home"
else
file1="$XDG_CACHE_HOME/mru/$1.recent"; file2="$XDG_CACHE_HOME/mru/$1"
fi

cat $file1; printf "\n"; cat $file2
}

list() {
@@ -48,25 +68,26 @@ list() {

insert() {
if [ -z "$1" ]; then printf "No path given\n" 1>&2; exit; fi
cache_name=${1+'home'}
cache_name=$2
if [ -z "$2" ]; then cache_name=home; fi
cache_path=$(get_cache_path "$cache_name")

file_path=$(realpath "$1")

if [ -e "$file_path" ]; then
# sed "0,\|.*\t.*\t$file_path|s|||" $XDG_CACHE_HOME/mru/$cache_name
sed -e "0,\|.*\t.*\t$file_path|d" -e "1s;^;$(date '+%Y-%m-%d%t%T')\t$file_path\n;" <$XDG_CACHE_HOME/mru/$cache_name \
>$XDG_CACHE_HOME/mru/$cache_name.insert$$
mv $XDG_CACHE_HOME/mru/$cache_name.insert$$ $XDG_CACHE_HOME/mru/$cache_name
else
sed "0,\|.*\t.*\t$file_path|d" <$XDG_CACHE_HOME/mru/$cache_name \
>$XDG_CACHE_HOME/mru/$cache_name.insert$$
mv $XDG_CACHE_HOME/mru/$cache_name.insert$$ $XDG_CACHE_HOME/mru/$cache_name
sed -i -e "0,\|.*\t.*\t$file_path|d" $XDG_CACHE_HOME/mru/$cache_name.recent
if [ -s $XDG_CACHE_HOME/mru/$cache_name.recent ]; then
echo "sed starts$(date '+%Y-%m-%d%t%T')\t$file_path\n"
sed -i "1i$(date '+%Y-%m-%d%t%T')\t$file_path" $XDG_CACHE_HOME/mru/$cache_name.recent
echo 'sed ends'
else
printf "$(date '+%Y-%m-%d%t%T')\t$file_path" >$XDG_CACHE_HOME/mru/$cache_name.recent
fi
fi

if [ ! -z $file_path ]; then
sed -i "0,\|.*\t.*\t$file_path|d" $XDG_CACHE_HOME/mru/$cache_name
fi
}

clean() {
rm $XDG_CACHE_HOME/mru/*.{insert,new}*
}

case "$1" in
@@ -75,5 +96,4 @@ case "$1" in
output) output "$2";;
list) list "$2";;
insert) insert "$2" "$3";;
clean) clean;;
esac

正在加载...
取消
保存