rkdora's Blog

コマンドを作ってみた(trash, untrash)

コマンドとは

lsとか、cdとか、catとか、ターミナル上でよく使うもの

OS

Mac
(untrashにて、Linuxと動作の異なるコマンドsedを利用)

前準備

.profileに以下を書く。
export PATH="$HOME/bin:$PATH"
その後、source .profile
vi ~/bin/コマンド名
プログラムを書いた後、
chmod +x コマンド名

trash

機能

trash ファイルとすると、対象のファイルを.trash/に移動する。
その際、trashを実行した日付をファイル名の先頭につける。

動き

f:id:rkdora:20190611140346p:plain

コード

#!/bin/sh

d=`date +%F`
trash=$HOME/.trash
mkdir -p $trash
mv $1 $trash/$d-$1
touch $trash/$d-$1

untrash

機能

一番最近trashをしたファイルを現在のディレクトリに移動させる。その際、ファイル名から日付を削除する。

動き

f:id:rkdora:20190611141351p:plain

コード

pwd=`pwd`
cd $HOME/.trash/
tra=`ls -rt1 | tail -1`
org=`echo $tra | sed -E 's/^.{11}//'`
mv $tra $pwd/$org

Macでは、sed-Eをつける必要があるらしい。
^は先頭から
.は全ての文字
^.{11}で、先頭から11文字
s/^.{11}//で、先頭から11文字を消す(先頭から11文字は日付)


=をくっつけるのよく忘れる