Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2837|回复: 5
打印 上一主题 下一主题

shell常用脚本命令

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-1-21 23:05:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jimu 于 2016-1-21 23:39 编辑

-----------------------1-----------------------
如在shell中执行命令 ./update.sh
update.sh中的内容
  1. . $(dirname "$0")/common.sh
复制代码
$0 表示当前运行的命令(即: ./update.sh)
dirname 用于取指定路径所在的目录 ,如 dirname /home/firemail   结果为 /home

$(命令) 返回该命令的结果

即上面整行的意思就是  运行当前上当下的 common.sh 文件。


-----------------------2----------------------
pushd popd

Pushd是Windows操作系统cmd下的一个命令.
作用:保存当前目录以供 POPD 命令使用,然后改到指定的目录。
用法: PUSHD [path | ..]
path 指定要成为当前目录的目录。


回复

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
沙发
发表于 2018-3-1 16:32:16 | 只看该作者
算术运算
方法一:let 算术运算表达式
let C=$A+$B 这里变量A和B前面的$可以省略
方法二:$[算术运算表达式]
C=$[$A+$B]
方法三:$((算术运算表达式))
C=$(($A+$B))
方法四:expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用,遇到乘法的*号还要转义
C=`expr $A + $B`
方法五:expr $[算术运算表达式],遇到乘法*号不用转义。
  1. #!/bin/bash
  2. line=5
  3. remain=$[$line-3]
  4. remain2=`expr $line - 3`
  5. let remain3=$line-3
  6. remain4=$(($line-3))
  7. echo $remain
  8. echo $remain2
  9. echo $remain3
  10. echo $remain4
复制代码

回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
板凳
发表于 2018-3-1 16:51:18 | 只看该作者
grep -v grep | grep -v tail

1、第一部分 “grep -v grep" 在文档中过滤掉包含有grep字符的行
2、第二部分“grep -v tail” 在第一部分过滤掉之后再过滤掉剩余文档中包含有tail字符的行
3、总结一下就是:这条命令的意思就是过滤掉文档中包含字符“grep”和“tail”的行
4、可简化为:grep -v "cp|mkdir"
回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
地板
发表于 2018-3-1 17:56:05 | 只看该作者
本帖最后由 java 于 2018-5-2 09:46 编辑

nohup command>/dev/null 2>&1 &


nohup: 表示当前用户和系统的会话下的进程忽略响应HUP消息。
&是把该命令以后台的job的形式运行。

几个基本符号及其含义

/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误

command>/dev/null 表示
command命令的输出 先输出到 1 然后再由 1 输出到 /dev/null 就是不显示任何信息。

2>&1 表示
标准错误输出到标准输出,加&是表示对上一个command输出到1的引用,即不会重复两次打开1,是在上一次打开的基础上进行输出。

计划任务的常用写法

0 5 * * * sh /opt/analy.sh >> /opt/analy.out 2>&1

每天5点执行脚本 analy.sh



回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
5#
发表于 2018-5-2 09:44:33 | 只看该作者
root=`dirname $0`

curDate=`date +%Y-%m-%d -d "-24hour"`

csvFileName="custom-${curDate}.csv";


$root/$csvFileName   ---基于当前文件所在目录的完整路径
回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7962

积分

认证用户组

Rank: 5Rank: 5

积分
7962
6#
发表于 2020-1-5 16:06:05 | 只看该作者
查看用户所在组
groups hecj
查看所有组 cat /etc/group
/////修改用户//////
usermod -d /home/test -G test2 test
将test用户的登录目录改成/home/test,并加入test2组,注意这里是大G。
-g, --gid GROUP               使用户只属于某个组
-G, --groups GROUPS           使用户加入某个组
////查看单个用户信息/////
[root@krlcgcms01 ~]# finger apacheuser
[root@krlcgcms01 ~]# id apacheuser

[root@uway-linux-64 cdma_summary]# id shig
uid=0(root) gid=0(root) 组=0(root)
[root@uway-linux-64 cdma_summary]# id yangjf
uid=0(root) gid=0(root) 组=0(root)
You have new mail in /var/spool/mail/root
[root@uway-linux-64 cdma_summary]# id hecj
uid=508(hecj) gid=0(root) 组=0(root)
[root@uway-linux-64 cdma_summary]# id root
uid=0(root) gid=0(root) 组=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

/////////linux 修改 uid = 0////////////
"0"是分给ROOT的 你可以尝试修改/etc/passwd 将指定用户的UID GID改为0
useradd -u 0 -o
linux 用 Uid 判定用户,改成 0 了相当于 root 的一个别名用户。

yangjf:x:0:0::/home/yangjf:/bin/bash
hecj:x:0:0::/home/hecj:/bin/bash

///////////////查看使用的shell///////////
cat /etc/shells
$ more /etc/shells 可以看到本系统中可以使用哪些shell
$ echo $SHELL  可以查看当前默认的shell
看etc/passwd文件中最后一项是每个用户使用的shell
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-26 07:56 , Processed in 0.065572 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表