工作中有很多經常使用到的命令,擴展開就是一大串。用函數式縮寫的形式可以完成快速開發(偷懶)。
注意要source .bashrc
#hive search 注意 有參數時候必須有路徑!
hs(){
# ${!#} 獲取最後一個參數
output="$*"
# 去除最後一個參數
nfdown=`echo $output | awk '{for(i=1;i<=NF-1;i++) printf $i" "}'`
HIVE_HOME="/hdfs/hivename/"
# !#爲第0個參數時替換爲空
hdfs dfs ${nfdown:--ls} $HIVE_HOME/${!#/$0/}
}
部分使用方法提出來,作爲筆記。
awk 中 print 默認有換行 |
NF FS 、OFS、RS 、ORS |
${nfdown:--ls}當nfdown變量爲空時,用-ls替代 | |
${!#} 獲取最後一個參數 | $# 獲取參數個數 ${$#} 獲取最後一個參數失敗(不能在花括號內使用美元符,必須將美元符換成感嘆號) |
${!#/$0/} 當最後一個參數爲第零個參數時,使用空字符串取代 | ${str/str1/str2} 將str中str1字符串取代爲str2 |
優化後(不能使用hdfs的find功能):
# 基於hdfs dfs 查詢hive倉庫
# hive search
hs(){
HIVE_HOME="/warehouse/tablespace/managed/hive"
# 最後一個參數 存在 - 時判斷未輸入路徑 否則進入下邊判斷
if [[ ${!#} == "-"* ]];then
hdfs dfs ${@:--ls} $HIVE_HOME
else
nfdown=`echo $* | awk '{for(i=1;i<=NF-1;i++) printf $i" "}'`
# !#爲第0個參數時替換爲空
hdfs dfs ${nfdown:--ls} $HIVE_HOME/${!#/$0/}
fi
}