1 |
rabit |
1.1 |
#!/bin/sh |
2 |
|
|
#--------------------------------------------------------------------- |
3 |
|
|
N='ff' |
4 |
|
|
C='rabit@netfrag.org, 08.10.2004' |
5 |
|
|
F="$N - Follow file" |
6 |
joko |
1.2 |
I='$Id: ff,v 1.1 2004/10/15 10:51:04 rabit Exp $' |
7 |
rabit |
1.1 |
#--------------------------------------------------------------------- |
8 |
|
|
|
9 |
|
|
# If unset, set the per-user file list to a good default: |
10 |
|
|
[ -z "$FFFILES" ] && FFFILES=$HOME'/.ff_files' |
11 |
|
|
|
12 |
|
|
E='echo -e' |
13 |
|
|
YW="\033[1;33m" |
14 |
|
|
GY="\033[0;37m" |
15 |
|
|
B1="\033[1m" |
16 |
|
|
B0="\033[0m" |
17 |
|
|
|
18 |
|
|
function CheckFileList { |
19 |
|
|
if [ -e "$FFFILES" ]; then |
20 |
|
|
FileListExists=1 |
21 |
|
|
else |
22 |
|
|
$E " Error: '"$B1$FFFILES$B0"' does not exist yet. First add a file." |
23 |
|
|
$E " Try '$B1$N --help$B0' for information on usage." |
24 |
|
|
$E 'Aborting.' |
25 |
|
|
fi |
26 |
|
|
return |
27 |
|
|
} |
28 |
|
|
function CountFiles { |
29 |
|
|
FileCount=`cat $FFFILES | wc -w` |
30 |
|
|
return |
31 |
|
|
} |
32 |
|
|
|
33 |
|
|
$E "$YW$F$GY ($C)\n($I)" |
34 |
|
|
p1=$1 |
35 |
|
|
case "$p1" in |
36 |
|
|
(-a) |
37 |
|
|
if [ -e $2 ]; then |
38 |
|
|
$E "- Adding file '"$B1$2$B0"'..." |
39 |
|
|
echo $2 >> $FFFILES |
40 |
|
|
CountFiles |
41 |
|
|
$E " File index is '"$B1$FileCount$B0"'" |
42 |
|
|
$E 'Done.' |
43 |
|
|
else |
44 |
|
|
$E " Error: '"$B1$2$B0"' does not exist." |
45 |
|
|
$E 'Aborting.' |
46 |
|
|
fi |
47 |
|
|
exit |
48 |
|
|
;; |
49 |
|
|
(-h|--help) |
50 |
|
|
# Just overrun this casing and show help. |
51 |
|
|
;; |
52 |
|
|
(-l) |
53 |
|
|
CheckFileList; [ -z $FileListExists ] && exit |
54 |
|
|
$E "- Listing files in '"$B1$FFFILES$B0"'..." |
55 |
|
|
while read FileName; do |
56 |
|
|
((Index++)) |
57 |
|
|
$E ' '$B1$Index$B0": '"$B1$FileName$B0"'" |
58 |
|
|
done < $FFFILES |
59 |
|
|
$E 'Done.' |
60 |
joko |
1.2 |
exit |
61 |
|
|
;; |
62 |
|
|
(-i) |
63 |
|
|
iselect=`which iselect` |
64 |
|
|
if [ -z $iselect ]; then |
65 |
|
|
echo "ERROR: iselect is not installed" |
66 |
|
|
exit |
67 |
|
|
fi |
68 |
|
|
sel=`cat $FFFILES | $iselect -a -c -n "Select file to tail"` |
69 |
|
|
if [ ! -z $sel ]; then |
70 |
|
|
tail -f $sel |
71 |
|
|
fi |
72 |
rabit |
1.1 |
exit |
73 |
|
|
;; |
74 |
|
|
(?*) |
75 |
|
|
CheckFileList; [ -z $FileListExists ] && exit |
76 |
|
|
CountFiles |
77 |
|
|
if ((p1>0)) && ((p1<=FileCount)); then |
78 |
|
|
FileName=`head -n $p1 $FFFILES | tail -n 1` |
79 |
|
|
$E "- Following '"$B1$FileName$B0"' (press CTRL-C to stop)..." |
80 |
|
|
echo |
81 |
|
|
tail -f $FileName |
82 |
|
|
else |
83 |
|
|
$E ' Error: '$B1'<number>'$B0' must be in the range of 1 - '$FileCount'.' |
84 |
|
|
$E 'Aborting.' |
85 |
|
|
fi |
86 |
|
|
exit |
87 |
|
|
;; |
88 |
|
|
esac |
89 |
|
|
|
90 |
|
|
$E $B1'Usage:'$B0 |
91 |
|
|
$E " $B1$N -l$B0" |
92 |
|
|
$E " List all files from '"$B1$FFFILES$B0"' with indices." |
93 |
|
|
$E ' '$B1$N' <number>'$B0 |
94 |
|
|
$E ' Tail and follow the file with index '$B1'<number>'$B0'.' |
95 |
|
|
$E ' '$B1$N' -a <filename>'$B0 |
96 |
|
|
$E " Add a file to '"$B1$FFFILES$B0"'. "$B1'<filename>'$B0' must exist.' |
97 |
|
|
$E ' '$B1$N' [-h|--help]'$B0 |
98 |
|
|
$E ' Get this brief help.' |
99 |
|
|
$E "The variable '${B1}FFFILES$B0' set overrides the file list default file name." |
100 |
|
|
$E "(for example: '${B1}export FFFILES=\$HOME/fff.txt$B0'.)" |
101 |
|
|
# EOF |