9月底离职到上海某厂做大数据分析,目前从事大数据报表开发、监控以及需求分析。
去之前对上海充满无限向往,可以感受大上海的繁华了~结果TMD连续上班7天每天10点左右下班,wtffffff。国庆回家休息,最怕朋友问我上海好不好玩。
国庆结束回上海上班,想着会轻松一点,结果下班从10点变成11点了,fuck。。。
言归正传,这次写文章的目的是记录一下hive&linux工作中常用的操作,也算是复习一下。
LINUX基本操作
vim快速操作 - Linux程 - 博客园
#一、cat操作命令
cat主要有三大功能:
1.一次显示整个文件 $cat filename
2.从键盘创建一个文件 $cat > filename 只能创建新文件,不能编辑已有文件
3.将几个文件合并为一个文件 $cat file1 file2 > file
#cat具体命令格式:cat [-AbeEnstTuv] [--help] [--version] fileName
-n :由1开始对所有输出的行数编号
-b :和-n相似,只不过对于空白行不编号
-s :当遇到有连续两行以上的空白行,就代换为一行的空白行
范例:
cat -n linuxfile1 > linuxfile2 #把linuxfile1的档案内容加上行号后输入linuxfile2这个档案里
cat -b linuxfile1 linuxfile2 >> linuxfile3 #把linuxfile1和linuxfile2的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3里。
cat /dev/null > /etc/test.txt #此为清空/etc/test.txt档案内容
#二、linux中各种引号的含义及使用方法
``:反引号,获取执行命令的结果
'': 去掉所有符号的特殊含义
"": 不去掉符号的特殊含义
#三、touch操作命令
1.一次创建单个或多个文件
touch filename1 filename2 filename3
2.强制避免使用touch命令创建新文件
touch -c filename
#四、mutt操作命令
mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<邮件文件>][-F<配置文件>][-H<邮件草稿>][-i<文件>][-m<类型>][-s<主题>][邮件地址]
参数:
-a<文件> 在邮件中加上附加文件。
-b<地址> 指定密件副本的收信人地址。
-c<地址> 指定副本的收信人地址。
-f<邮件文件> 指定要载入的邮件文件。
-F<配置文件> 指定mutt程序的设置文件,而不读取预设的.muttrc文件。
-h 显示帮助。
-H<邮件草稿> 将指定的邮件草稿送出。
-i<文件> 将指定文件插入邮件内文中。
-m<类型> 指定预设的邮件信箱类型。
-n 不要去读取程序培植文件(/etc/Muttrc)。
-p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。
-R 以只读的方式开启邮件文件。
-s<主题> 指定邮件的主题。
-v 显示mutt的版本信息以及当初编译此文件时所给予的参数。
-x 模拟mailx的编辑方式。
-z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。
#五、linux中各种括号的使用
1.单小括号()
命令组,在括号中的命令列表将会作为一个子shell来运行。
括号中多个命令之间用分号隔开
2.双小括号(())
在双括号结构中,所有表达式可以像c++一样,如:c++
在双括号结构中,所有变量可以不加入$前缀
双括号可以进行逻辑运算,四则运算
3.$()和``的比较
在bash中,$()和``都是用来作命令替换的
虽然在操作上两者都是达到相应的效果,但是建议使用$(),理由如下:
``很容易与"搞混,而$()比较直观
$()的弊端是并非所有类unix都支持这种方式
4.${}变量替换
一般情况下,$var和${var}是没有区别的,但是${}会比较精确的界定变量名称的范围
举例:
A = linux
echo ${A}B
linuxB
先赋值一个变量为一个路径:
file = /dir1/dir2/dir3/my.file.txt
echo ${file#*/} dir1/dir2/dir3/my.file.txt 拿掉第一条/及其左边的字符串
echo ${file##*/} my.file.txt 拿掉最后一条/及其左边的字符串
echo ${file#*.} file.txt 拿掉第一个.及其左边的字符串
echo ${file##*.} txt 拿掉最后一个.及其左边的字符串
echo ${file%/*} /dir1/dir2/dir3 拿掉最后一条/及其右边的字符串
echo ${file%%/*} 空值 拿掉第一条/及其右边的字符串
echo ${file%.*} /dir1/dir2/dir3/my.file 拿掉最后一个.及其右边的字符串
echo ${file%%.*} /dir1/dir2/dir3/my 拿掉第一个.及其右边的字符串
# 是去掉左边(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配;两个符号是最大匹配
*是用来匹配不要的字符,也就是想要去掉的那部分
还有指定字符分隔号,与*配合,决定取哪部分
取子串及替换
echo ${file:0:5} /dir1 提取最左边的5个字节
echo ${file:5:5} /dir2 提取左起第五个字节右边连续五个字节
echo ${file/dir/path} /path1/dir2/dir3/my.file.txt 将第一个dir替换成path
echo ${file//dir/path} /path1/path2/path3/my.file.txt 将所有dir替换成path
echo ${#file} 27 获取变量长度
替换结构
${var:-string} 若变量var为空,则在命令行中用string替换
${var:=string} 若变量var为空,则string会赋值给var
${var:+string} 若变量var不为空,则在命令行中用string替换
${var:?string} 若变量var不为空,则作用变量的值来替换string;若变量var为空,则把string输出到标准错误中,并从脚本退出。可以利用此特性来检查是否设置了变量的值。
tips:在上面替换结构中string不一定是常值,可用另外一个变量的值或者一种命令输出
匹配模式替换结构
${variable%pattern} shell在variable中查找,看它是否匹配给定的模式pattern结尾,
如果是,就从命令行把variable中的内容去掉右边最短的匹配模式
${variable%%pattern}:shell在variable中查找,看它是否匹配给定的模式pattern结尾,
如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
${variable#pattern}:shell在variable中查找,看它是否匹配给定的模式pattern开始,
如果是,就从命令行把variable中的内容去掉左边最短的匹配模式
${variable##pattern}:shell在variable中查找,看它是否匹配给定的模式pattern结尾,
如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
5.单中括号[]
可以使用比较运算符==和!=,用于字符串比较不可用于整数比较
6.双中括号[[]]
[[ ]] 结构比[ ]结构更加通用
使用[[]]条件判断结构,而不是[],能够防止脚本中的许多逻辑错误。比如&&、||、<和>
能够正常存在于[[]]条件判断结构中,但是在[]中会报错
HIVE操作使用指南-个人版
1.变量篇
#定义变量方法
这个比较基础,一般用=来赋值变量
#引用变量方法
#使用${}方式引用变量
2.日期格式篇
#日期格式 date <+时间日期格式> +和格式之间没有空格
date +"%Y-%m-%d" 输出结果:2019-9-26 #当前日期
date -d "+1 day ago" +"%Y-%m-%d" 输出结果:2019-9-25 #前一天日期
date -d "-1 day ago" +"%Y-%m-%d" 输出结果:2019-9-27 #后一天日期
#计算一组命令花费多少时间
start=$(date +"%d") #以时间戳类型保存当前时间作为起始时间
//执行需要计算的命令
end=$(date +"%d") #以时间戳类型保存当前时间作为结束时间
difference=$((end-start)) #相减结果就是命令执行完需要的时间
举例:
day=`date +%Y-%m-%d` 输出结果:2019-9-26
lastday=`date -d "${day} 1 day ago" +%Y-%m-%d` 输出结果:2019-9-25
最近沉迷S9无法自拔,每天晚上8点看到凌晨2点,黑眼圈都起来了。于是网购了男士护肤品,给点心理安慰吧。
one punch man真真真好看,要向埼玉老师学习,努力锻炼直到头秃hhhhh