jimu 发表于 2016-1-21 23:05:08

shell常用脚本命令

本帖最后由 jimu 于 2016-1-21 23:39 编辑

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

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

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


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

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


java 发表于 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 $[算术运算表达式],遇到乘法*号不用转义。#!/bin/bash
line=5
remain=$[$line-3]
remain2=`expr $line - 3`
let remain3=$line-3
remain4=$(($line-3))
echo $remain
echo $remain2
echo $remain3
echo $remain4

java 发表于 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"

java 发表于 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



java 发表于 2018-5-2 09:44:33

root=`dirname $0`

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

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


$root/$csvFileName   ---基于当前文件所在目录的完整路径

Qter 发表于 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         使用户加入某个组
////查看单个用户信息/////
# finger apacheuser
# id apacheuser

# id shig
uid=0(root) gid=0(root) 组=0(root)
# id yangjf
uid=0(root) gid=0(root) 组=0(root)
You have new mail in /var/spool/mail/root
# id hecj
uid=508(hecj) gid=0(root) 组=0(root)
# 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
页: [1]
查看完整版本: shell常用脚本命令