Linux+Shell基础入门总结

1、Linux文件处理常用命令

grep  -ri“xxx” 文件名(查找文件内包含的文本)

find  .  -name  文件名(查找文件)

vi 文件名   或 touch 文件名   或 >文件名(新建文件的三种方式)

rm -f  文件名(删除文件)

rm -rf  目录(删除文件夹)

2、vi命令 

vi命令模式:一般模式、指令模式、编辑模式

一般模式>>

移动跳转:  跳到文本开头/结尾 >> gg G、[[ ]]、 :0  :9999    

                   跳到行头/尾>> ^$   

                  上下左右移动>>j k h l 

复制粘贴: y yy yw y^ y$ yG   p

删除: x  dd  cw

撤回:u(undo)

指令模式>>

搜索: /xxx 自上而下    ?xxx  自下而上

                   n :下一个  N:上一个

:1,$s/word1/word2/g  替换

:set  nu   显示行号

:set ic  忽略大小写

:set fileencoding 显示文件编码

编辑模式>>

i,o,a(插入)、R(取代)

3、shell - 基础

(1)执行规则

第一行 #!/bin/bash 在宣告这个 script 使用的 shell 命令,如果没有这个标识就不是个shell脚本;

除了第一行的『 #! 』是用来宣告 shell 的之外,其他的 # 都是『注解』用途;

命令的运行是从上而下、从左而右的分析与运行;

命令、选项与参数间的多个空白都会被忽略掉,空白行将被忽略掉;

变量与等号之间不能有空格;

如果读取到一个 Enter 符号 (CR) ,就尝试开始运行该行命令;如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行;

(2)符号

单引号(' '):所见即所得,即原样打印,不会对变量解析

双引号(" "):所见非所得,会对变量解析后再输出(常用于框住某个范围,比如内部有空格场景时)

反引号(` ` piao号):命令替换,通常用于把命令输出结果传给变量中(功能同$( ))

反斜杠(\):转义字符

(3)参数

${param} 或 $param 参数使用

$0 命令本身

$1 第一个参数 。。。$9第9个参数,后面的参数要???

$# 参数的总个数

$*  获取所有的参数

$?  获取上一命令执行结果,0-成功,1及其他-失败

(4)时间 date

​>>date + "%Y-%m-%d %H:%M:%S"

>>2019-10-18 17:00:00

>>date -d 1day + "%Y-%m-%d %H:%M:%S"(增加一天)

>>date -d -1day + "%Y-%m-%d %H:%M:%S"(减去一天)

>>date -d  "-1day -1hour -1min" + "%Y-%m-%d %H:%M:%S"(减去一天一小时一分钟)

(5)数据运算

数学计算要用’[ ]’括起来并且外头要带一个’$’

>>a=1

>>b=1

>>sum=$[$a+$b]

(6)和用户交互---read命令

>>read a(read -p "Please input a number:" a)

>>read b

>>sum=$[$a+$b]

(7)逻辑判断

>>第一种:if

if 判断语句; then
command
fi

>>第二种:if else

if 判断语句 ; then
command
else
command
fi

>>第三种:if elseif else

if 判断语句一 ; then
command
elif 判断语句二; then
command
else
command
fi

在判断数值大小可以用  >, < , =  &&,  || ,但是要在( )中使用,除了可以用”(( ))”的形式外,还可以使用”[ ]”,但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)。

shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:

-e :判断文件或目录是否存在
-d :判断是不是目录,并是否存在
-f :判断是否是普通文件,并存在
-r :判断文档是否有读权限
-w :判断是否有写权限
-x :判断是否可执行

使用if判断时,具体格式为: if [ -e filename ] ; then

(8)循环

>>for 循环

for 变量名 in 循环的条件; do
command
done

>>while 循环

while 条件; do
command
done

(9)函数

function 函数名() {

command

}

4、shell - 数据流重定向

标准输入  (stdin) :代码为 0 ,使用 < 或 << ;

标准输出  (stdout):代码为 1 ,使用 > 或 >> ;

标准错误输出(stderr):代码为 2 ,使用 2>(中间无空格) 或 2>> ;

垃圾桶黑洞装置:/dev/null

启动应用(后台模式运行)>> nohup ./start.sh >./logs/start.log 2>&1 &

例:清空文件内容>> echo > insert_olc_trading_day_info.sh 或 echo ""> insert_olc_trading_day_info.sh

标准输出到test.sh,错误输出到test2.sh>> cat  insert_olc_trading_day_info.sh>test.sh 2>test2.sh

标准输出到test.sh,错误输出也重定向到test.sh>> cat  insert_olc_trading_day_info.sh>test.sh 2>&1

将异常吞掉不做任何处理>>cat  insert_olc_trading_day_info.sh>/dev/null

5、其他常用:

pstree                                   #查看系统结构

history                                   #查看历史执行记录

set                                        #查看所有变量(环境变量+自定义变量)     

unset                                    #删除变量

export HADOOP_USER_NAME=hadoop          #定义环境变量

du --max-depth=1 -h                                  #查看文件夹大小

df -h 文件目录                                            #分析磁盘使用情况

free -m / top                                               #查看当前内存使用情况

ls -l | wc -l                                                   #统计目录中文件个数

-- 权限管理(/etc/sudoers)

sudo shell命令  #使用root用户执行命令

sudo u              #切换到root账户,不改变当前路径和环境变量

sudo chmod +x insert_info.sh          #增加文件(执行)权限

sudo chown user1 insert_info.sh      #将文件权限赋给用户

sudo chown -R user1 /hadoop/new_dir/insert             #将目录权限赋给用户

zip -r xxx.zip xxx  / unzip xxx.zip                                 #zip压缩打包 / 解压

sudo netstat -nltp | grep 2185                                     # 查看端口占用情况

scp -r /var/soft/xxx_2.12-2.4.0  hadoop@10.10.10.10:/var/soft             #远程拷贝

ln -s /var/soft/xxx-server-0.230 xxx                                                        #创建软链接

iconv -f gbk -t utf8 my_test.csv -o my_test_utf8.csv                               #文件格式转为utf-8

sed -i "s/mapreduce.job.queuename=ph_dw_queue/mapreduce.job.queuename=${hivevar:queue_name}/g" `grep mapreduce.job.queuename=ph_dw_queue -rl ./`                                   #批量替换

-- 文件排序

ls -lrt  按时间升序

ls  -lt 按时间降序

ls -slr 按文件大小升序

ls -sl 按文件大小降序

--集群间ssh免密登录

/etc/ssh/..

/home/hadoop/.ssh/..

ssh-keygen -q -t rsa -N  ""  -f  /home/hadoop/.ssh/id_rsa

-- rpm&yum

yum源配置--> /etc/yum.repo.d/..

yum list

yum makecache

-- 定时任务

crontab -l

crontab -e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值