shell脚本

01Shell入门01-bash Shell特性

主宰稳场 提交于 2019-12-10 10:04:58
命令和文件自动补齐 [root@hadoop04 ~]# yum -y install bash-completion 命令历史记忆功能 1.上下键 查看历史命令 2.!number 执行history中第number个记录 3.!string 执行history最近的一个以某个字符串开头的命令 4.!$ 上一条命令的最后一个参数 5.!! 上一条命令(完整的一条命令) 6.^R 搜索历史命令 别名功能 1.alias 查看当前shell中的别名 2.unalias 取消当前shell中的别名 (1)在命令前面加上\可以跳过别名,比如 alias cp='cp -i',\cp 就是执行真正的'cp',而不会执行别名'cp -i' (2)定义永久生效的别名,需要在用户家目录下的.bashrc文件中( ~username/.bashrc) 快捷键 Ctrl + 具体某个字母键 1.^R 搜索历史命令 2.^D 相当于 exit/logout,退出Shell 3.^A 光标移到到首部 4.^E 光标移到到尾部 5.^L 相当于clear,清屏 6.^U 剪切光标之前的所有 7.^K 剪切光标以及光标之后的所有 8.^Y 在光标处粘贴(由^U、^K剪切的命令可以通过这个方式粘贴) 9.^S 锁屏 10.^Q 解锁 前后台作业控制 1.& 后台运行,但是终端退出就结束了 2.nohup

Shell--基本运算符

无人久伴 提交于 2019-12-10 08:31:55
Shell基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加( 注意使用的是反引号 ` 而不是单引号 ' ): #!/bin/bash val = ` expr 2 + 2 ` echo "两数之和为 : $val " 执行脚本,输出结果如下所示: 两数之和为 : 4 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 算数运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 -10。 * 乘法 `expr $a * $b` 结果为 200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $b % $a` 结果为 0。 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等

.bashrc和 .profile

蹲街弑〆低调 提交于 2019-12-10 07:28:39
Bash下每个用户都可以配置两个初始文件:.bash_profile和.bashrc ~/.bash_profile --------------The personal initialization file, executed for login shells ~/.bashrc --------------The individual per-interactive-shell startup file 每次bash作为login shell启动时会执行.bash_profile。 主要有有以下几种情形: 每次登录到服务器时默认启动的shell “su -l [USER]”时进入的shell l(link) “bash --login”进入的shell 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc 常见的有: “su [USER]”进入的shell 直接运行“bash”命令进入的shell。 注意 在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的 bash不是interactive shell。 bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,但它不是普通的shell。 一般

shell按行读取文件的方法

萝らか妹 提交于 2019-12-10 05:01:39
写法一: ---------------------------------------------------------------------------- #!/bin/bash while read line do echo $line done < filename(待读取的文件) ---------------------------------------------------------------------------- 写法二: ---------------------------------------------------------------------------- #!/bin/bash cat filename(待读取的文件) | while read line do echo $line done ---------------------------------------------------------------------------- 写法三: ---------------------------------------------------------------------------- for line in `cat filename(待读取的文件)` do echo $line done ----------

Linux网络服务与shell脚本——Linux网络设置与基础服务

╄→гoц情女王★ 提交于 2019-12-10 04:30:11
第一章 Linux网络设置与基础服务 一、查看及测试网络 1、查看网络配置 (1)ifconfig命令 ① 查看活动的网络接口卡 : ifconfig ② 查看指定网络接口信息 : ifconfig eht0 ③ ether:网络接口的物理地址 ④ inet:IP地址 ⑤ broadcast:广播地址 ⑥ netmask:子网掩码 (2)Ip/ethtool命令 ① ip link : 查看网络接口的数据链路层信息 ② ip address : 查看网络层信息 ③ ehttool eth0 : 查看指定接口的速率、模式等信息 (3) route 命令 ① 查看路由表信息 ② -n : 将路由记录中的地址显示为数字形式 ③ default:对应行为默认网关 (4) netstat 命令 ① -a : 显示当前主机中所哟偶偶活动的网络连接信息 ② -n : 以数字形式显示相关主机地址、端口等信息 ③ -r:显示路由表信息 ④ -l:显示处于监听(Listening)状态的网络连接及端口信息 ⑤ -t : 查看TCP协议相关信息 ⑥ -u : 查看UDP协议相关信息 ⑦ -p : 显示与网络连接相关的进程号、进程名(需要root权限) 2、测试网络连接 (1) ping 命令测试网络连通性 (2) traceroute 命令跟踪数据包的路由途径【tracert(windows)】

<LINUX >bash shell 入门 --linux学习笔记

核能气质少年 提交于 2019-12-10 02:38:37
首先说下我个人对于shell的理解,我觉得shell是一种通过各种控制语句将linux命令进行集合实现批处理的一种脚本语言. shell编程入门其实很简单,语法知识并不多,但是高级shell编程就很难,因为shell是用户和linux之间的桥梁,要编写高质量的shell脚本,就需要用户对linux有很全面的认识. 这里我们只分析shell脚本的语法知识,如想透彻的学习linux还需多努力. shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤: 1.创建一个包含命令和控制结构的文件 2.修改这个文件的权限使它可以执行,使用chmod u+x 3.执行 ./example 或者sh exmaple 如下为一个简单的shell脚本,显示当前目录路径,和子文件 demo.sh #!/bin/sh #we use pwd to print the directory path /bin/pwd #we use ls to print the children directories /bin/ls 变量 shell变量有两种 1.临时变量 只在当前文件中起作用。包括用户自定义变量和位置变量 2.永久变量 永久变量又叫环境变量,其值不随脚本的结束而消失 设置变量的时候直接使用变量名加赋值即可如date=`date`

Load HDFS数据到Hive出现Shell错误

匆匆过客 提交于 2019-12-10 01:20:13
写shell脚本 从HDFS导数到Hive,报错如下: mismatched input '<EOF>' expecting DATA near 'load' in load statement shell代码如下: #!/bin/bash do_date=$1 APP=gmall hive=/opt/module/hive/bin/hive sql=" load data inpath '/origin_data/$APP/db/user_info/$do_date' OVERWRITE into table $APP.ods_user_info partition(dt='$do_date'); " $hive -e $sql 出错的原因是最后一个$sql需要加双引号"",否则后面无法将$sql解析成的值( /origin_data/gmall/db/user_info/2019-12-08 OVERWRITE into table gmall.ods_user_info partition(dt='2019-12-08') )识别为字符串 改为 $hive -e " $sql"。 注意shell中单引号和双引号的区别:!!! 单引号:输出时会将引号内的内容原样输出。 双引号:会先把变量、命令、转义字符解析出结果,即使双引号里有单引号引起来的变量,也会把变量解析成值

Linux学习

风流意气都作罢 提交于 2019-12-10 00:49:22
文章目录 Shell Shell功能 命令解释过程 命令查找过程 Shell环境变量 变量定义和引用 Shell变量的作用域 环境变量 工作环境设置文件 正则表达式 输入/输出重定向与管道 重定向 管道 Shell脚本 Shell Shell功能 命令解释过程 Shell判断命令为 内置命令 ,则将命令直接解释为系统功能调用并转交给内核执行。 Shell判断命令为 外部命令或实用程序 ,则会先 在硬盘中查找该命令并将其调入内存 ,再将命令解释为系统功能调用并转交给内核执行。 命令查找过程 用户给出命令路径,Shell沿着路径查找。 用户未给出命令路径,Shell在 环境变量PATH 所制定的路径中 依次查找 。 Shell环境变量 变量定义和引用 变量替换:$ name=string(等号两侧不要有空格) 在定义变量时,若string中包含空格、制表符和换行符,则string必须用’string’或者"string"的形式。双引号内允许变量替换,而单引号内则不可以。 Shell变量的作用域 可以使用export内置命令将局部变量设置为全局变量 显示当前Shell的PID: $ echo $$ 环境变量 不同类型的Shell的环境变量有不同的设置方法,以下为bash 设置环境变量: $ set 环境变量=变量的值 不加任何参数直接使用set命令可以显示出用户当前所有环境变量的设置。

解决 cnpm : 无法加载文件 cnpm.ps1

倖福魔咒の 提交于 2019-12-09 22:37:08
安装 cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 在使用 power shell 运行 cnpm 时报以下错误: cnpm : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。所在位置 行:1 字符: 1 cnpm install amfe-flexible 解决方法: 1、以管理员身份运行 power shell 2、输入 set-ExecutionPolicy RemoteSigned ,然后输入A 回车 来源: CSDN 作者: 随遇而安、1314 链接: https://blog.csdn.net/LonewoIf/article/details/103465543

Crontab调用shell脚本函数中变量为空

穿精又带淫゛_ 提交于 2019-12-09 22:13:58
问题: 在写一个任务脚本shell,Crontab运行后发现函数中的变量为空。 但是不使用Crontab,直接执行shell可以运行,变量有值。 解决方案: 原因是Crontab运行时的环境与脚本的环境不一致,在脚本中加上刷新环境变量的就好了。如下: check函数就出现了上面描述的问题。 我们在 #!/bin/bash 后面加上 . /etc/profile 即可。 来源: CSDN 作者: 杨鑫newlfe 链接: https://blog.csdn.net/u012965373/article/details/103465242