|
1 |
|
2 ############# |
|
3 # Functions # |
|
4 ############# |
|
5 |
|
6 # Commande tres pratique pour formatter un fichier .man |
|
7 # exemple : mf prog.1 |
|
8 function mf() { tbl $* | nroff -mandoc | less -s } |
|
9 |
|
10 # ,,(), ,,,() for quickly changing $CWD {{{1 |
|
11 # http://www.shell-fu.org/lister.php?id=769 |
|
12 |
|
13 # Go up n levels: |
|
14 # ,, 3 |
|
15 function ,, (){ |
|
16 local arg=${1:-1}; |
|
17 local dir="" |
|
18 while [ $arg -gt 0 ]; do |
|
19 dir="../$dir" |
|
20 arg=$(($arg - 1)); |
|
21 done |
|
22 cd $dir >&/dev/null |
|
23 } |
|
24 |
|
25 # Go up to a named dir |
|
26 # ,,, usr |
|
27 function ,,, (){ |
|
28 if [ -z "$1" ]; then |
|
29 return |
|
30 fi |
|
31 local maxlvl=16 |
|
32 local dir=$1 |
|
33 while [ $maxlvl -gt 0 ]; do |
|
34 dir="../$dir" |
|
35 maxlvl=$(($maxlvl - 1)); |
|
36 if [ -d "$dir" ]; then |
|
37 cd $dir >&/dev/null |
|
38 fi |
|
39 done |
|
40 } |
|
41 |
|
42 |
|
43 # Customized version from Frank Terbeck' scripts |
|
44 # http://bewatermyfriend.org/p/2011/013/ |
|
45 # "." will display the current working directory |
|
46 # ".." will get you 1 directory up, |
|
47 # "..." will get you 2 directories up, etc. |
|
48 function ft_accept_line_cd_up() { |
|
49 setopt local_options extended_glob |
|
50 local -a cmdline |
|
51 cmdline=( ${(z)BUFFER} ) |
|
52 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == "." ]] ; then |
|
53 BUFFER="pwd" |
|
54 zle ".$WIDGET" |
|
55 return |
|
56 fi |
|
57 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then |
|
58 BUFFER='cd ' |
|
59 for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do |
|
60 BUFFER="${BUFFER}../" |
|
61 done |
|
62 BUFFER=${BUFFER%/} |
|
63 fi |
|
64 zle ".$WIDGET" |
|
65 } |
|
66 zle -N accept-line ft_accept_line_cd_up |
|
67 |
|
68 # 2nd part, completion support... |
|
69 function ft_complete_with_dots() { |
|
70 setopt local_options extended_glob |
|
71 local -a cmdline |
|
72 cmdline=( ${(z)BUFFER} ) |
|
73 if (( ${#cmdline} == 1 )) && [[ ${cmdline[1]} == ..## ]] ; then |
|
74 BUFFER='cd ' |
|
75 for (( i = 2; i <= ${#${cmdline[1]}}; i++ )); do |
|
76 BUFFER="${BUFFER}../" |
|
77 done |
|
78 CURSOR=${#BUFFER} |
|
79 fi |
|
80 zle ".$WIDGET" |
|
81 } |
|
82 # Disabling for now as I don't know how to fallback to automatic correction... |
|
83 #zle -N expand-or-complete ft_complete_with_dots |
|
84 |
|
85 |
|
86 # genpass() |
|
87 # Generates a tough password of a given length |
|
88 # Borrowed (and slightly modifed) from Seth House github repository. |
|
89 |
|
90 function genpass() { |
|
91 if [ ! "$1" ]; then |
|
92 echo "Usage: $0 20" |
|
93 echo "For a random, 20-character password." |
|
94 return 1 |
|
95 fi |
|
96 dd if=/dev/urandom count=1 2>/dev/null | tr -cd 'A-Za-z0-9' | cut -c-$1 |
|
97 } |