小编gue*_*tli的帖子

彩色 grep 输出:不是 GREP_OPTIONS 不是别名

我想要grep.

.... 但

  • 策略 1:GREP_OPTIONS。但这已被弃用。请参阅http://www.gnu.org/software/grep/manual/html_node/Environment-Variables.html
  • 策略 2: GREP_COLORS 乍一看似乎是一个解决方案,但实际上却有所不同。
  • 策略三:别名。这不适用于find ... | xargs grep,因为 xargs 不评估别名。
  • 策略 4:编写一个简单的包装器脚本。不,我认为这太脏了,而且比解决的麻烦还多。
  • 策略五:修补源代码
  • 策略 6:联系 grep 开发人员,要求更换 GREP_OPTIONS
  • 策略 NICE-and-EASY:...这是缺失的。我没有线索。

如何解决这个问题?

grep colors

12
推荐指数
2
解决办法
2181
查看次数

顶部的完整用户名

在我们的系统上,用户名最长可达 20 个字符。但top命令只显示前 8 个字符。

如何配置top以显示整个用户名?

目前我们使用:top procps version 3.2.8 (linux)

但是可以安装不同的顶级实现。

我们需要支持的最古老的系统是这样的:

Linux foohost 2.6.37.1-1.2-desktop #1 SMP PREEMPT 2011-02-21 10:34:10 +0100 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

top

11
推荐指数
2
解决办法
1万
查看次数

netstat:查看进程名称,如`ps aux`

如果我这样使用,后缀守护进程只有名称“master” netsat

root@myhost# netstat -tulpen| grep master
tcp  0  0 127.0.0.1:25  0.0.0.0:*  LISTEN  0  53191445 13640/master        
Run Code Online (Sandbox Code Playgroud)

如果我使用,ps我会得到一个更详细的名字:

root@myhost# ps aux| grep 13640
root     13640  0.0  0.0  25036  1500 11:35   0:00 /usr/lib/postfix/master
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉netstat输出长名称?

在这种情况下,它将是/usr/lib/postfix/master.

更新

好像是netstat做不到的。如果您知道如何使用其他工具执行此操作,那么这也是一个有效的问题。(但仍首选基于 netstat 的解决方案)。

更新2

所有答案都有效。非常感谢您展示您的 Unix 知识。但到目前为止,答案太长/太复杂了。

没有简单的解决办法吗?我可以安装任何需要的工具,但我希望用法简单易用。

我不能给你们所有人的赏金......

有几个答案可以进行后期处理以获得所需的信息。每个答案都使用不同的方式,我不认为一种解决方案比另一种更好。

不幸的是,似乎没有 unix/linux 可以开箱即用。但这不是你的错,你试图帮助我。

不幸的是,我不能对所有答案都给予奖励:-)

我给了信誉点最少的用户赏金。

ps netstat

11
推荐指数
3
解决办法
1万
查看次数

带有iso日期格式的ps输出?

我想按lstart(过程开始)对此输出进行排序:

ps -eo lstart,pid,cmd 
Run Code Online (Sandbox Code Playgroud)

有没有办法以 YYYY-MM-DD HH:MM:SS 这样的 ISO 格式输出 lstart?

但仅靠排序并不能解决问题。我真的很想拥有 ISO 日期格式。

shell ps date

11
推荐指数
2
解决办法
9311
查看次数

在不存在的目录上使用`find`

如果/my-directory不存在,是否有一种简单的方法可以让这个默默地什么都不做?

find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm
Run Code Online (Sandbox Code Playgroud)

版本:

  • 查找:GNU findutils 4.5.10
  • 重击 4.2.53

shell find

8
推荐指数
2
解决办法
3548
查看次数

如何增加“用户”列的 ps 列宽?

我喜欢这个图案ps aux | grep something

这样我就可以轻松找到所需的信息,而无需记住命令的命令行选项ps

不幸的是,ps 命令会在 7 个字符后剪切 linux 用户名(第一列),+如果用户名更长,则添加一个。

就我而言,这很重要,因为用户名类似于“foobar_123”和“foobar_234”。

我知道我可以使用以下命令,但是如果我仍然可以使用该ps aux | grep something模式就太好了。

ps ax o user:16,pid,pcpu,pmem,vsz,rss,stat,start_time,time,cmd
Run Code Online (Sandbox Code Playgroud)

如何通过配置获得以上格式,从而ps aux | grep something不削减用户名?

提示:“use ps ... special...args...”之类的答案与上述问题不符。

版本:procps-ng 3.3.5 版

shell ps

7
推荐指数
1
解决办法
6426
查看次数

在 bash 中替代 Ctrl-R 反向搜索

我很高兴并且非常喜欢bash shell的Ctrl-R向后搜索功能。我的一些同事不喜欢它,因为它有时令人困惑。我理解他们。如果您输入错误的字符,历史记录中的当前位置是过去的某个位置,您将找不到最近的匹配项。

在 shell 历史中向后搜索是否有更用户友好的替代方法?

我想坚持使用 bash。建议使用替代 shell 不是这个问题的答案。

这里解释了“丢失位置”的问题:重置 bash 历史搜索位置。这些解决方案有效。这是正确的。但是根据我的观点,那里的解决方案并不容易且用户友好。这些解决方案并不简单直接。这些都是过去的解决方案。过去,人类需要学习计算机想要输入的方式。但是今天,工具应该以一种对用户来说很容易的方式接受输入。

也许有人知道像 PyCharm 这样的 jetbrains IDE。如果您搜索“foobar”,您甚至会得到包含“foo_bar”的行。太好了,那是 unix :-)

bash command-history readline

7
推荐指数
1
解决办法
3198
查看次数

跟踪对目录树的访问

情况

/home/foo在服务器上有一个目录,我想不再需要它了。

不幸的是没有人能告诉我这个目录是否仍然需要。

目标

如果还需要这个目录,我想知道哪个进程访问它。

当前策略

观看在此目录下打开的所有文件。

为什么不通知

不幸的是,该目录包含很多子目录,这就是我不想使用 inotify 的原因。

  • 1604508个文件
  • 287253子目录

如何查看目录(递归)树下打开的所有文件?我想知道哪个进程访问它。

环境

  • /home 是一个 ext4 文件系统。
  • SuSE Linux 12.3。内核:3.7.10

不重复

我的问题不是重复是否有可能找出哪个程序或脚本创建了给定的文件?自从 ....:

  • 我无法使用 inotify,因为目录树包含太多子目录。
  • 我不能使用loggedfs:我不能改变这个目录的文件系统类型。

赏金

已经有两个很好的答案了。但我很好奇,也许还有其他方法:50 的赏金 :-)

linux inotify

4
推荐指数
2
解决办法
937
查看次数

找到... | xargs grep --> grep 输出缺少颜色

这样我得到彩色输出:

grep class testdata.py 
Run Code Online (Sandbox Code Playgroud)

由于这是在我的 .bashrc 中设置的:

alias grep='grep -n --color'
Run Code Online (Sandbox Code Playgroud)

但是如果我这样搜索,我看不到彩色输出:

find -name '*.py'  | xargs grep "class"
Run Code Online (Sandbox Code Playgroud)

有人知道如何启用grepif 调用的彩色输出find ...| xargs grep吗?

grep colors xargs

4
推荐指数
1
解决办法
1899
查看次数

`grep -P`(Perl/Python 正则表达式)在大多数 Linux 发行版上是可移植的吗

我更喜欢(Perl/Python Compatible Regular Expressions)正则表达式。

man grep

....,但只有在系统中 pcre 可用时才有效

最常见的 linux 发行版是否支持此功能?

我不在乎 freebsd、solarix、busybox,...

grep shell-script pcregrep

2
推荐指数
1
解决办法
1981
查看次数

标签 统计

grep ×3

ps ×3

shell ×3

colors ×2

bash ×1

command-history ×1

date ×1

find ×1

inotify ×1

linux ×1

netstat ×1

pcregrep ×1

readline ×1

shell-script ×1

top ×1

xargs ×1