Shell
Locutus
一切源于对计算机的热爱
展开
-
管道、xargs和-exec的介绍与区别
shell转载 2022-10-18 17:59:12 · 2334 阅读 · 0 评论 -
logrotate简介
对于大多数应用程序来说,日志文件是极其重要的工具。logrotate是一个日志文件管理工具,用于分割日志文件,删除旧的日志文件,创建新的日志文件,起到“转储”作用,节省磁盘空间。1. logrotate简介Linux默认自带logrotate,配置文件是/etc/logrotate.conf。/etc/logrotate.d是一个目录,其中所有文件都会被读入/etc/logrotate.conf中执行,我们可以在/etc/logrotate.d目录里放置自定义的配置文件,用来覆盖/etc/logrota原创 2021-12-31 14:19:02 · 5087 阅读 · 0 评论 -
$@和$*的作用和区别
脚本通过命令行传参时,$@和$* 都可以接收多个参数,是否有区别呢?#!/bin/bashfunction test_args() { echo "不加双引号的时候\$*和\$@输出对比" echo "------------\$*输出------------" echo $* echo "------------\$@输出-----------" echo $@ echo echo echo "使用双引号的时候\$*和\$@输出对比"转载 2021-11-11 15:50:43 · 725 阅读 · 0 评论 -
sed用法
https://www.cnblogs.com/Tempted/p/13938203.html转载 2021-08-30 23:49:13 · 131 阅读 · 0 评论 -
sed输出指定行
# sed -n 8p file #print line 8# sed -n -e 1p -e 8p file #print line 1 and line 8# sed -n 1,8p file #print line 1 to line 8# sed -n -e 1,8p -e 20p file #print line 1-8 and line 20-n:取消默认输出。sed命令会默认把输入行打印到屏幕上,所以如果想精准的控制输出,就需要使用参数-n。-e:进行多项编辑转载 2021-07-07 09:48:45 · 4684 阅读 · 1 评论 -
awk输出指定列
// 打印所有列# awk '{print $0}' file // 打印第一列# awk '{print $1}' file // 打印第一和第三列# awk '{print $1, $3}' file // 打印第三列和第一列,注意先后顺序# cat file | awk '{print $3, $1}' // 打印第三列和最后一列# cat file | awk '{p转载 2021-07-05 15:42:21 · 3824 阅读 · 0 评论 -
grep查询多个关键字的命令
查询多个关键字# grep -E "字符串1|字符串2|字符串3"或者# egrep "字符串1|字符串2|字符串3"转载 2021-05-08 11:16:07 · 1564 阅读 · 0 评论 -
shell中#*,##*,#*,##*,%*,%%*的含义及用法
变量替换假设我们定义了一个变量file=/dir1/dir2/dir3/my.file.txt,使用${ }分别替换,得到不同的变量值:file=${file#*/},删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txtfile=${file##*/},删掉最后一个 / 及其左边的字符串:my.file.txtfile=${file#*.},删...转载 2020-01-16 18:38:26 · 5447 阅读 · 0 评论 -
shell中eval的用法
eval cmd其中,cmd是在终端上键入的一条普通命令行。然而,当在cmd前面放上eval时,其结果是shell在执行cmd之前扫描它两次。如:eval用于回显简单变量#!/bin/bashNAME=VALUEBANKecho $NAMEeval echo $NAME# VALUEBANK# VALUEBANKeval用于执行含有字符串的变量首先,我们...原创 2020-01-06 01:04:17 · 1636 阅读 · 0 评论 -
shell命令行工具设计原则
随着时间的流逝,人们开发出了一套设计与编写软件工具的原则。在本书用来解决问题的程序中,你将会看到这些原则的应用示例。好的软件工具应该具备下列特点:一次做好一件事在很多方面,这都是最重要的原则。若程序只做一件事,那么无论是设计、编写、调试、维护,以及生成文件都会容易得多。举例来说,对于用来查找文件中是否有符合样式的grep程序,不应该指望用它来执行算术运算。这个原则的结果,自然就是会不断产...转载 2020-01-03 19:30:24 · 451 阅读 · 0 评论 -
shell脚本:shellCmd >/dev/null 2>&1
我们经常能在shell脚本中发现shellCmd >/dev/null 2>&1这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了shellCmd 2>&1 >/dev/null,出了一点小问题之后,我才开始去了解这段命令背后的“玄机”。1. shell重定向简介一段程序会处理外部的输入,然后把运算结果输出到...转载 2019-12-02 22:40:31 · 351 阅读 · 0 评论 -
shell脚本:shell_dir=$(cd "$(dirname "$0")";pwd)
#!/bin/bash# 定位脚本所在当前目录BIN_FOLDER=$(cd "$(dirname "$0")";pwd)echo $BIN_FOLDER# 定位脚本所在父目录PROJECT_FOLDER=$(cd "$(dirname "$BIN_FOLDER")";pwd)echo $PROJECT_FOLDER# 定位脚本所在父目录下的某文件PYTHON_BIN=$PR...转载 2019-12-02 13:42:01 · 4373 阅读 · 2 评论 -
shell脚本开头#!/usr/bin/env bash,#!/usr/bin/bash,#!/bin/bash的比较
辨析#!/usr/bin/env bash:在不同的系统上提供了一些灵活性通过#!/usr/bin/env bash运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;通过#!/usr/bin/env bash运行程序另一个好处是,它会根据你的环境寻找并运行默认的版本,提供灵活性。不好的地方是,有可能在一个多用户的...原创 2019-11-26 18:21:02 · 14935 阅读 · 1 评论 -
shell脚本:shell_dir=$(cd `dirname $0`; pwd)
在shell脚本中,获取当前脚本所在绝对目录,赋给全局变量:#!/bin/bashshell_dir=$(cd `dirname $0`; pwd)其中,dirname $0,获取当前脚本所在绝对目录cd `dirname $0`,进入这个目录(切换当前工作目录)pwd,显示切换后脚本所在的工作目录注:命令中“`”不是英文的单引号,而是英文输入法下的“~”同一个按键下面的...原创 2019-11-22 17:22:23 · 2391 阅读 · 0 评论 -
shell利用case.....esac判断
用倒序的字母单词和正序的单词配对,比如if语句,结束时用fi来配对 esac和case配对,是多路分支的语句,类似于C中的switch/case语句,大致形式如下:case $参数变量 in“变量值1”) # 变量值用双引号括起来,关键字用小括号括起来 程序段1 # 对应的逻辑 ;; # 每个类别结尾使用两个连续的分号来处理“变量值2”)转载 2018-01-09 18:41:29 · 727 阅读 · 0 评论 -
Shell编程中的用户输入处理(1):处理用户输入的两种方式
1. 处理用户输入的两种方式一般而言,用户传递两种类型的输入给shell命令,即选项、参数。其中选项通常定义命令的行为,而参数用于向命令传递特定数据。1.1 在命令启动时,用户传递数据# ls -a c*1.2 在命令启动之后(命令运行时),用户传递数据,即运行时输入# cat123123qwerqwer原创 2018-01-10 21:40:07 · 747 阅读 · 0 评论 -
Shell编程中的用户输入处理(2):处理命令行参数(选项、参数)
2. 命令行参数(选项、参数)2.1 读取命令行参数读取参数时,注意以下几点:用空格分割各个参数位置参数$position:$0、$1、$2...,其中$0:0号位置参数是调用shell脚本的程序名;$1、$2、$3 ~ $9:命令行传递的位置参数;${10}...:对于多于10个(含)的位置参数,要添加{}引用例1:命令行位置参数少于10个,脚本param1如下# !/原创 2018-01-10 21:42:16 · 2263 阅读 · 0 评论 -
Shell编程中的用户输入处理(3):在shell脚本中,处理命令行参数
3. 在shell脚本中,处理命令行参数3.1 检查输入参数使用条件判断,检查输入参数个数# !/bin/bash # 指定shell类型if [ $# -lt 2 ] # $#获取输入个数,选项-lt表示less thanthen echo "please input at least 2 param" fi默原创 2018-01-10 21:47:21 · 9439 阅读 · 0 评论 -
Shell编程中的用户输入处理(4):在shell脚本中,使用read命令获取命令行输入
4. 在shell脚本中,使用read命令获取命令行输入shell-read命令选项:-p(指定提示语句),-n(限定字符个数),-t(设置等待时间),-s(不显示)4.1 基本读取read命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。在得到输入之后,read命令把输入数据放入一个标准变量中。下面是read命令的基本形式:# !/bin/bash原创 2018-01-10 21:51:04 · 43668 阅读 · 1 评论 -
Bash脚本中的set命令
服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 1. 简介我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。$ bash script.sh上面代码中,script.sh是在一个新的...转载 2018-03-07 01:28:16 · 1039 阅读 · 0 评论 -
linux 下 `dirname $0`
1. 倒引号`、双引号"" 、单引号’’`,被倒引号括起来的内容, 表示里面执行的是命令。比如 `dirname $0`, 就表示需要执行dirname $0这个命令。“” ,被双引号括起来的内容, 里面出现$ (美元号)表示取变量名, `(倒引号)表示执行命令,\(转义号)表示转义,其余的才表示字符串。‘’, 被单引号括起来的内容,里面所有的都表示串, 包括上面所说的 三个特殊字符。...原创 2018-12-11 18:28:27 · 1136 阅读 · 0 评论 -
shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory
https://www.cnblogs.com/zyb-pp/p/6429448.html转载 2019-04-10 18:35:41 · 335 阅读 · 0 评论 -
Shell中退出状态码的学习整理
https://blog.csdn.net/stonecome11/article/details/47110925转载 2019-05-14 13:29:42 · 476 阅读 · 1 评论 -
shell脚本if判断语句报错[: too many arguments的两种原因
https://blog.csdn.net/huangjin0507/article/details/45060433/转载 2019-05-14 18:14:57 · 22321 阅读 · 0 评论 -
linux shell中"2>&1"含义
shell中的2>&1# ls 2>1不会报没有文件2的错误,并且会在当前目录下输出一个空文件1。# ls xxx 2>1# more 1ls: xxx: No such file or directory没有xxx这个文件的错误会输出到文件1。# ls xxx 2>&1ls: xxx: No such file or directo...原创 2019-08-01 17:44:59 · 248 阅读 · 0 评论 -
shell多行注释详解
我们写shell脚本时,经常需要注释多行,但在每一行前输入#有些麻烦。基于 shell命令的灵活性,我们可以使用下面的方法。1. 采用HERE DOCUMENT特性格式:'COMMENT'...COMMENT例子:#!/bin/bashecho "Say Something"<<COMMENT注释行1注释行2...注释行nCOMMENT2.转载 2018-01-08 20:51:14 · 4870 阅读 · 0 评论