hadoop.sh
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  1. #!/usr/bin/env bash
  2. # Licensed to the Apache Software Foundation (ASF) under one or more
  3. # contributor license agreements.  See the NOTICE file distributed with
  4. # this work for additional information regarding copyright ownership.
  5. # The ASF licenses this file to You under the Apache License, Version 2.0
  6. # (the "License"); you may not use this file except in compliance with
  7. # the License.  You may obtain a copy of the License at
  8. #
  9. #     http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. # Provides tab completion for the main hadoop script.
  17. #
  18. # On debian-based systems, place in /etc/bash_completion.d/ and either restart
  19. # Bash or source the script manually (. /etc/bash_completion.d/hadoop.sh).
  20. _hadoop() {
  21.   local script cur prev temp
  22.   COMPREPLY=()
  23.   cur=${COMP_WORDS[COMP_CWORD]}
  24.   prev=${COMP_WORDS[COMP_CWORD-1]}  
  25.   script=${COMP_WORDS[0]}  
  26.   
  27.   # Bash lets you tab complete things even if the script doesn't
  28.   # exist (or isn't executable). Check to make sure it is, as we
  29.   # need to execute it to get options/info
  30.   if [ -f "$script" -a -x "$script" ]; then
  31.     case $COMP_CWORD in
  32.     1)
  33.       # Completing the first argument (the command).
  34.       temp=`$script | grep -n "^s*or"`;
  35.       temp=`$script | head -n $((${temp%%:*} - 1)) | awk '/^ / {print $1}' | sort | uniq`;
  36.       COMPREPLY=(`compgen -W "${temp}" -- ${cur}`);
  37.       return 0;;
  38.     2)
  39.       # Completing the second arg (first arg to the command)
  40.       # The output of commands isn't hugely consistent, so certain
  41.       # names are hardcoded and parsed differently. Some aren't
  42.       # handled at all (mostly ones without args).
  43.       case ${COMP_WORDS[1]} in
  44.       dfs | dfsadmin | fs | job | pipes)
  45.         # One option per line, enclosed in square brackets
  46.         temp=`$script ${COMP_WORDS[1]} 2>&1 | awk '/^[ t]*[/ {gsub("[[\]]", ""); print $1}'`;
  47.         COMPREPLY=(`compgen -W "${temp}" -- ${cur}`);
  48.         return 0;;
  49.       jar)
  50.         # Any (jar) file
  51.         COMPREPLY=(`compgen -A file -- ${cur}`);
  52.         return 0;;
  53.       namenode)
  54.         # All options specified in one line,
  55.         # enclosed in [] and separated with |
  56.         temp=`$script ${COMP_WORDS[1]} -help 2>&1 | grep Usage: | cut -d '[' -f 2- | awk '{gsub("] \| \[|]", " "); print $0}'`;
  57.         COMPREPLY=(`compgen -W "${temp}" -- ${cur}`);
  58.         return 0;;
  59.       *)
  60.         # Other commands - no idea
  61.         return 1;;
  62.       esac;;
  63.     *)
  64.       # Additional args
  65.       
  66.       case ${COMP_WORDS[1]} in
  67.       dfs | fs)
  68.         # DFS/FS subcommand completion
  69.         # Pull the list of options, grep for the one the user is trying to use,
  70.         # and then select the description of the relevant argument
  71.         temp=$((${COMP_CWORD} - 1));
  72.         temp=`$script ${COMP_WORDS[1]} 2>&1 | grep -- "${COMP_WORDS[2]} " | awk '{gsub("[[ \]]", ""); print $0}' | cut -d '<' -f ${temp}`;
  73.         if [ ${#temp} -lt 1 ]; then
  74.           # No match
  75.           return 1;
  76.         fi;
  77.         temp=${temp:0:$((${#temp} - 1))};
  78.         # Now do completion based on the argument
  79.         case $temp in
  80.         path | src | dst)
  81.           # DFS path completion
  82.           temp=`$script ${COMP_WORDS[1]} -ls "${cur}*" 2>&1 | grep -vE '^Found ' | cut -f 1 | awk '{gsub("^.* ", ""); print $0;}'`
  83.           COMPREPLY=(`compgen -W "${temp}" -- ${cur}`);
  84.           return 0;;
  85.         localsrc | localdst)
  86.           # Local path completion
  87.           COMPREPLY=(`compgen -A file -- ${cur}`);
  88.           return 0;;
  89.         *)
  90.           # Other arguments - no idea
  91.           return 1;;
  92.         esac;;
  93.       *)
  94.         # Other subcommands - no idea
  95.         return 1;;
  96.       esac;
  97.     esac;
  98.   fi;
  99. }
  100. complete -F _hadoop hadoop