标签: bash

如何列出所有具有终端会话的用户,包括屏幕会话?

我想要一个在我的 Linux 系统上活动的所有用户的列表,包括那些运行但分离屏幕会话的用户。该who命令仅显示我当前登录的用户,而不显示具有分离屏幕会话等的用户。

我正在考虑解析 的输出,ps但这也会让用户显示他是否正在运行 cron 作业。

linux bash gnu-screen

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

结合 sed 和 xargs 获得源和输出文件名

我有一种情况,我有一些这样的输入文件:

M2U0001.MPG
M2U0180.MPG
Run Code Online (Sandbox Code Playgroud)

我想在目录中的每个类似命名的文件上运行一个命令(在 Bash shell 中)。我希望将当前文件名作为输入提供给此命令,并将文件名的修改版本作为输出文件提供。下面是一个例子:

ffmpeg -i M2U0001.MPG M2U0001_fixed.MPG
Run Code Online (Sandbox Code Playgroud)

我有使用 xargs 和 sed 的想法,但这是我得到的:

ls -1 *.MPG | xargs -I{} ffmpeg -i {} `echo {} | sed -r 's/[0-9]{2,}/&_fixed/'`
Run Code Online (Sandbox Code Playgroud)

但这会导致在两个位置都输出原始文件名。我完全以错误的方式解决这个问题吗?

我发现如果我像这样将文件名直接回显到嵌入的块中,它会起作用:

echo M2U0001.MPG | sed -r 's/[0-9]{2,}/&_fixed/'
Run Code Online (Sandbox Code Playgroud)

bash sed xargs

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

git log 的行为就像 less

git log -{n},当-n足够小时,不会在less其中打开只是将其打印到屏幕上。这是可取的。 git log -1不应该占满屏幕。

不幸的是,在 MINGW 的 bash shell 中,在我运行了一个非 git 命令之后,git log表现得好像我已经运行了它less并推送了q. (换句话说,数据被打印到屏幕的底部,最后我在顶部有一堆空白)。

假想演示(请原谅它的长度):

>> clear









>> git log -1




commit 123123...
Author: CPfohl
Date: {today}
    {Message}

>> git log -1
commit 123123...
Author: CPfohl
Date: {today}
    {Message}
Run Code Online (Sandbox Code Playgroud)

无论我之前执行什么 git 命令git log,只要git log -{n}git 命令之后,这都有效。

这是一个错误,还是有办法让它正常运行?

windows-7 bash git mingw

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

如何重新排序文件夹?(如`ls -U`中所示)

我在记忆棒上有许多无序的文件夹,我的汽车音响按照它们在记忆棒上的实际位置的顺序显示(即与 相同ls -U) 物理重新排序这些目录的最简单方法是什么?(将所有目录移动到 'tmp' 文件夹并返回似乎可以通过 GUI 工作,但不是特别优雅......)

更新:重新。FAT排序

fatsort(见下面的答案)似乎很好地完成了这项工作。
现在的操作顺序是:
1. sudo umount /media/USB_STICK_NAME
2. sudo blkid(告诉我设备:/dev/sdc1: LABEL="USB_STICK_NAME" ...
3. sudo fatsort /dev/sdc1

linux bash sorting ubuntu

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

如何显示单个 Linux 内核模块的版本?

如何在 Linux 中查看单个内核模块的版本?使用命令lsmod,我可以看到如下内容:

ata_piix               18561  2 
libata                154449  2 pata_acpi,ata_piix
ehci_hcd               34935  0 
scsi_mod              111801  4 sg,sr_mod,sd_mod,libata
usbcore               119612  6 gspca_m5602,gspca_main,usbhid,uhci_hcd,ehci_hcd
Run Code Online (Sandbox Code Playgroud)

但是不可能显示有关单个内核模块的信息。有谁知道怎么可能做到这一点?

linux bash kernel-module

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

Ctrl+L 不清除 Console2+Cygwin+Bash 中的屏幕

根据标题,当我按 Ctrl+L 时,它只是模拟回车并将我返回到提示。

cygwin bash console2

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

通过 ssh 在远程机器上移动文件

我正在尝试通过 ssh 将远程计算机上的文件从文件夹 A 移动到文件夹 B。

我正在使用这个命令:ssh user@server "sh scan/script.sh"

这将运行一个包含一些文件操作的脚本,在移除机器上移动文件。问题是我的 SSH 似乎试图在我的本地计算机上执行 script.sh 的内容。

我正在使用 zsh。

谢谢您的帮助

linux ssh bash

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

你什么时候/为什么使用kill %%?

我见过人们使用kill %%而不是kill %. 据我所知,他们都做同样的事情。有区别吗?

linux bash kill

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

Grep 无法输出到管道?

我在对 make 输出进行 grep 过滤时遇到问题。特别是,

make target 2>&1 | grep -E --color=never "^make.*"
Run Code Online (Sandbox Code Playgroud)

按预期工作,但以下内容不会向控制台打印输出:

make target 2>&1 | grep -E --color=never "^make.*" | cat
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?为什么第一个命令输出而不是第二个?是否与某种 IO 缓冲有关?还是我只是愚蠢?

[编辑]: cat只是我要使用的实际命令的最小测试用例占位符。

[编辑]:这似乎不是 grep 的问题,因为用ack替换它会导致相同的行为。

[编辑]: cat 是占位符的脚本:

#!/bin/bash
cat - \
 | grep -E --color=never "^.*warning:.*|^.*error:.*|^make.*[Ee]rror.*|^make.*" \
 | hilite.sh -r "^.*warning:.*" -f yellow -B \
 | hilite.sh -r "^.*error:.*" -f red -B \
 | hilite.sh -r "^make.*[Ee]rror.*" -f red -B \
 | hilite.sh -r "^make.*" -f magenta
Run Code Online (Sandbox Code Playgroud)

[编辑]: …

linux unix bash shell command-line

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

如何限制提示中的目录数量?

在我的 Mac OS X 10.6 上,我的提示设置为

PS1='\[\033[01;32m\][\w\[\033[00m\]\[\033[01;34m\]$(__git_ps1 " (%s)")\033[01;32m\]]\[\033[00m\]\$ '
Run Code Online (Sandbox Code Playgroud)

如何限制提示中的目录数量?的\w一部分?

这是因为当我深入目录树时,提示占据了终端的整个宽度。

bash prompt

3
推荐指数
2
解决办法
2224
查看次数

标签 统计

bash ×10

linux ×6

command-line ×1

console2 ×1

cygwin ×1

git ×1

gnu-screen ×1

kernel-module ×1

kill ×1

mingw ×1

prompt ×1

sed ×1

shell ×1

sorting ×1

ssh ×1

ubuntu ×1

unix ×1

windows-7 ×1

xargs ×1