我想要一个在我的 Linux 系统上活动的所有用户的列表,包括那些运行但分离屏幕会话的用户。该who命令仅显示我当前登录的用户,而不显示具有分离屏幕会话等的用户。
我正在考虑解析 的输出,ps但这也会让用户显示他是否正在运行 cron 作业。
我有一种情况,我有一些这样的输入文件:
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) 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 命令之后,这都有效。
这是一个错误,还是有办法让它正常运行?
我在记忆棒上有许多无序的文件夹,我的汽车音响按照它们在记忆棒上的实际位置的顺序显示(即与 相同ls -U) 物理重新排序这些目录的最简单方法是什么?(将所有目录移动到 'tmp' 文件夹并返回似乎可以通过 GUI 工作,但不是特别优雅......)
fatsort(见下面的答案)似乎很好地完成了这项工作。
现在的操作顺序是:
1. sudo umount /media/USB_STICK_NAME
2. sudo blkid(告诉我设备:/dev/sdc1: LABEL="USB_STICK_NAME" ...)
3. sudo fatsort /dev/sdc1
如何在 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)
但是不可能显示有关单个内核模块的信息。有谁知道怎么可能做到这一点?
根据标题,当我按 Ctrl+L 时,它只是模拟回车并将我返回到提示。
我正在尝试通过 ssh 将远程计算机上的文件从文件夹 A 移动到文件夹 B。
我正在使用这个命令:ssh user@server "sh scan/script.sh"
这将运行一个包含一些文件操作的脚本,在移除机器上移动文件。问题是我的 SSH 似乎试图在我的本地计算机上执行 script.sh 的内容。
我正在使用 zsh。
谢谢您的帮助
我见过人们使用kill %%而不是kill %. 据我所知,他们都做同样的事情。有区别吗?
我在对 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)
[编辑]: …
在我的 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一部分?
这是因为当我深入目录树时,提示占据了终端的整个宽度。