linux bash中怎么拼接两个相互关联的命令,前者执行的结果是后者需要的,改怎么嵌套?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux bash中怎么拼接两个相互关联的命令,前者执行的结果是后者需要的,改怎么嵌套?相关的知识,希望对你有一定的参考价值。

目的:linux下用一句bash语句,查出指定用户组下的所有用户,
摘要:已知三种方法可以查看,
第一种先查gid,再通过gid查用户,
第二种root切换到指定用户组,然后groups,
第三种使用第三方members软件(待验证,yum安装提示没这包),
现在就想整合以下语句,
awk -F':' '/debug/print $3' /etc/group #查出debug用户组的gid,输出1000;
cat /etc/passwd | grep 1000 #查出gid为1000下有用户列表;
尝试使用cat /etc/passwd | grep (awk -F':' '/debug/print $3' /etc/group ),提示语法错误,如下图所示,
有大佬知道怎么嵌套在一起吗?在此先谢过了

题主你好,

awk -F':' '/debug/print $3' /etc/group |xargs -iarg grep arg /etc/passwd

测试截图(我没有debug组,所以用yang作为代替):

-----

希望可以帮到题主, 欢迎追问.

追问

谢谢大佬,完美解决问题,剩下的我来度娘下各种参数是什么意思就行了,再次感谢

追答

:)

参考技术A 如果你的自动化任务,不需要任何界面,效率提高的不知一星半点。Linux绝对是你的必备神器。

linux 学习基础2

程序和进程的概念

程序只可能有一个,但是进程可以有多个 ,相当于进程就是程序的副本

for:root user 两个用户都登陆进了系统 这两个用户都具有bash 进程,但是他们共用一个bash程序 ,进程相当于程序的副本,

2.1 允许一个账号 多次登陆系统 每个登陆的系统的都是一个单独的进程 而且彼此相互无关联,进程是程序执行的实例,因此每个进程都是有生命周期的

2.2 bash的特点

1 命令历史 命令补全

2命令行编辑

3管道 重定向

4命令行展开

5变量

6文件名通配

7编程

8别名

2.3 命令行编辑 ctrl +a 直接跳转到命令行行首

               ctrl+e 跳转到命令行行尾

               ctrl +u删除光标至行首的问题

               ctrl+k 删除光标至行尾

               ctrl +l  清屏

2.4 命令历史 history

history  -c 清空所有命令历史

history -d  删除指定的行

history -d 10 10 表示删除10行后面的10个命令历史

history -d 10 删除第10行的命令

history 在用户输入命令的同时将命令保存在内存的缓存区里面,一旦用户退出就会将历史命令保存在用户的家里目录下的./.bash_history 文件中。这种是自动保存的还可以使用

history -w 手动保存命令历史

 

2.5环境变量

通过命令 printenv 命令可以查看当前所有的环境变量

1 HISTSIZE

2PATH

命令使用技巧

n 执行命令历史中第n条命令

-n 倒数第N条命令

!!执行上一条命令

$引用上一个命令的最后一个参数

 2.6 alias

 alias a=ls -l   此处的单引号 或者双引号都可以使用 只是使用的范围不同

alias 显示当前定义的所有别名

alias 定义后仅仅针对当前的shell进程有效,如果要全局都有效需要配置bash程序,因为alias 为系统内建命令是bash程序自有的,

取消别名 unalias

unalias a

2.7 命令替换

所谓命令替换就是讲一个命令执行的结果作为另外一个命令的参数进行显示的过程

通用格式$()或者是反引号``(~下面的那个引号)*注意用了反引号就

例如在 /tmp/目录下创建一个以当前时间为文件名的文件

touch /tmp/$(date +%Y-%m-%d-%H-%M-%S)

bash支持的引号

1 ``  反引号 作用命令替换

2’’ 单引号 强引用 但是变量不替换

3’””  双引用 变量替换

 2.8 文件名通配(globbing)

1 *匹配任意字符

2 ?匹配任意当个字符

3[] 匹配指定范围内的任意单个字符

[a-z]  , [A-Z] , [0-9] ,    [a-zA-Z]   ,      [a-zA-Z0-9]

[^]匹配指定范围外的任何单个字符  

特殊用法

[::]字符集合 ;  [[::]]字符集合中的单个字符

[:space:] 空白字符集       除空白字符以外的字符集   ^[:space:]

[:punct:]标点符号集      除了标点以外的其他任意字符 [^[:punct:]]

[:alpha:] 字母表 (大小写字母集合)

[:lower:] 小写字母集

[:upper:]大写字母集

[:digit:]数字集合

[:alnum:] 数字和大小写字母

这种通配符的表现形式也支持^ (取反)


本文出自 “CCNA学习笔记” 博客,请务必保留此出处http://2858259639.blog.51cto.com/8111214/1872820

以上是关于linux bash中怎么拼接两个相互关联的命令,前者执行的结果是后者需要的,改怎么嵌套?的主要内容,如果未能解决你的问题,请参考以下文章

egg.js两个表相互关联怎么写

Linux中bash的一些命令

linux shell 内置命令的作用,存放在哪里

linux怎么让bash

linux中 命令提示符变成 bash-2.05b$ 是怎么回事?连@都没有了

Linux下的Source命令怎么用?