Shell脚本基本命令

shell脚本运行方式

$sh script.sh
$sh /home/path/script.sh
$chmod a+x script.sh ; $./script.sh

echo的三种使用方式

echo hello world 不能包含一些特殊关键字,如分号;

echo "hello word" 不能包含一些特殊字符,比如!

echo ‘hello word" 包含‘$var‘变量不能被求值

echo默认会将一个换行符追加到输出后,如果想禁止,可以使用-n这个选项

如果想要使某些转义字符生效,则可以使用-e这个选项,如

echo "\ta\tb" 会输出 \ta\tb

echo -e "\ta\tb" 则会输出 a b

显示某些进程的环境变量

[[email protected] ~]$ pgrep bash
3182
[[email protected] ~]$ cat /proc/3182/environ
USER=hadoopLOGNAME=hadoopHOME=/home/hadoopPATH=/usr/local/bin:/bin:/usr/binMAIL=/var/mail/hadoopSHELL=/bin/bashSSH_CLIENT=192.168.1.1 5649 22SSH_CONNECTION=192.168.1.1 5649 192.168.1.10 22SSH_TTY=/dev/pts/0TERM=vt100SELINUX_ROLE_REQUESTED=SELINUX_LEVEL_REQUESTED=SELINUX_USE_CURRENT_RANGE=

算术运算

使用 let、(())、[]执行基本的算术运算。

如let a = b+c; let a++;let a--;

也可以使用[], a=$[b+c];  a=$[$b+5]

也可以使用(()),不过都需要在变量前加上$

删除变量:unset

tee

tee命令:以stdin作为输入,将其输入到某个文件中,并原样输出

显示变量

set 显示当前shell的变量,包括当前用户环境变量和自己定义的变量

env 显示当前用户环境变量

export 显示当前导出成用户变量的shell变量

关联数组即 Map

[[email protected] ~]$ declare -A map_array
[[email protected] ~]$ map_array[index1]=val1
[[email protected] ~]$ map_array[index2]=val2
[[email protected] ~]$ echo ${map_array[*]}
val1 val2
[[email protected] ~]$ echo ${!map_array[*]}
index1 index2

cat

作用:读取、显示、拼接文件内容。

将AB两个文件内容一块输出 [[email protected] ~]$ cat A B

将输入文本与A一块显示 [[email protected] ~]$ echo "Hello" | cat - A

压缩空白行 cat -s  A

将制表符显示为^|  cat -T A

显示文本行号 cat -n A

find

作用:查找路径及子路径下所有的文件和文件夹

查找script目录下所有的文件

[[email protected] ~]$ find script/
script/
script/timing.log
script/output.session

根据文件名或正则表达式匹配搜索

[[email protected] ~]$ find script/ -name "t*" #必须用引号括起来
[[email protected] ~]$ find script/ -iname "t*" #忽略文件名的大小写

可以用OR连接多个条件

[[email protected] ~]$ find script/ \( -name "t*" -o -name "out*" \)#注意空格
script/timing.log
script/output.session

可以使用参数指定查找深度

-maxdepth 1 #指定查找的最大深度

-mindepth 1 #指定查找的最小深度,即只列出1层以上的文件列表

根据文件类型搜索

-type d #只列出文件夹  -type f #只列出普通文件

此外还可以根据时间和文件大小,还可以使用-delete删除找到的文件。

-exec 可以对查出的每一个文件分别进行处理,如将文件所有者root改为hadoop:

 [[email protected] temp]$ sudo find . -type f -user root -exec chown hadoop {} \;

xargs

作用:将标准输入转换成命令行参数或者将单行或多行文本转换成命令行参数

[[email protected] ~]$ cat A | xargs #将A文件多行数据转换成单行输入,即将换行符替换为空格
[[email protected] ~]$ cat A | xargs -n 3#将A文件多行数据重新分割并按3个进行分组
[[email protected] ~]$ cat A | xargs -d i #指定分隔符为 i

小提示:xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的, 因此文件名 file 1.log 被解释成了两个记录 file 和 1.log, 不幸的是 rm 找不到这两个文件.为了解决此类问题, 让 find命令在打印出一个文件名之后接着输出一个 NULL 字符 (‘‘) 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符. 这就是 find 的 -print0 和 xargs 的 -0 的来历吧.

sort和uniq

[[email protected] ~]$sort A #对A文件进行升序排序
[[email protected] ~]$sort -r A #对A文件进行逆序排序
[[email protected] ~]$sort -n A #对A文件按数字进行排序
[[email protected] ~]$sort -k 2 A #根据第二列进行排序

uniq总是和sort一起使用,可以消除重复的行

时间: 2024-10-08 06:24:29

Shell脚本基本命令的相关文章

shell脚本语言基本命令

shell脚本语言基本命令脚本:可运行,不需要编译 #vi 1.sh[编写:i(顶格)或o(换一行)]#! /bin/bash##this is a test shell script##Written by yuanting 2018-09-26echo "123456789"touch 2121.txtdate:wq 或 :x#ll 1.sh#bash 1.sh #运行#./1.sh #运行#chmod 777 1.sh #ll 1.sh #./1.sh#ls #sh -x 1.s

Shell脚本编程基础——Linux基本命令(11)

1.Shell脚本基础 (1)shell脚本 包含一些命令或声明,并符合一定格式的文本文件 格式要求:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl (2)格式要求 脚本代码开头约定: 1.第一行一般为调用使用的语言 2.程序名,避免更改文件名为无法找到正确的文件 3.版本号 4.更改后的时间 5.作者相关信息 6.该程序的作用,及注意事项 7.最后是各版本的更新简要说明(也可以不写) 其实最重要的是第一行,其他行也可以不写,但

shell脚本前奏

一.正则表达式: 正则表达式(Regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式.即一种匹配模式 常用正则表达式: 1. .代表任意单个字符,如:/l..e/,le中间可以是任意两个字符. 2. ^:以...开始的行 3. $:以....结束的行   "^$"就表示空行 4. [...]:匹配括号中的字符之一 "^"如果出现在[]的起始位置,表示否定,在其他位置是普通字符.(即匹配不在此括号中的任

shell脚本扩展

一.正则表达式: 正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk.sed等

shell脚本(正则表达+sed+awk)

一. 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk

linux shell 脚本攻略001

shell 脚本通常是以#!/bin/bash开始的文本文件.#!被置于解释器路径之前. 以bash为解释器进行解释所有命令行的命令. 有两种运行脚本的方式,一种是将脚本作为sh的命令行参数,另一种是将脚本作为具有可执行权限的可执行文件.将脚本作为命令行参数的运行方式如下: sh aa.sh :假定脚本文件就在当前路径下.否则写全路径执行.也可以通过修改脚本文件的权限来执行脚本chmod a+x aa.sh ./aa.sh就可以执行. 脚本中使用#代表注释. 终端打印: echo是用于终端打印的

【转载】用shell脚本监控进程是否存在 不存在则启动的实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 ---------

自动化运维工程师必备的shell脚本知识

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一.正则表达式: 正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表达式就是处理字符串的方法,它是以行为单位来进

Shell脚本基础介绍

shell基础简介: 编写脚本通常使用某种基于解释器的编程语言.而shell脚本不过就是一些文件,我们能将一系列需要执行的命令写入其中,然后通过shell来执行这些脚本. 进入Linux系统(Ubuntu),打开终端Terminal,"$"表示普通用户,"#"表示超级用户.其实此时打开的即为shell终端.注意:Redhat/CentOS系统默认安装的shell是bash,它是sh的增强版,Ubuntu默认安装的shell是dash.通过执行:$ ll  /bin/