小编Fli*_*imm的帖子

通过管道到“sort”命令对“find -print0”的输出进行排序

我需要能够在将其输出find到命令之前按字母顺序对输出进行排序。进入| sort |之间不起作用,那我该怎么办?

find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
Run Code Online (Sandbox Code Playgroud)

shell find xargs sort

118
推荐指数
4
解决办法
16万
查看次数

如何将less中的所有行写入文件?

我已将命令通过管道传输到less,现在我想将命令的输出保存到文件中。我怎么做?

在这种情况下,我不想使用tee,我想直接从less中找到解决方案,这样如果我忘记使用tee.

这个问题类似于这个,唯一的区别是我想保存所有的行,而不是一个子集:Write lines to a file from less

less

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

如何从通配符扩展中获得第一场比赛?

像 Bash 和 Zsh 这样的 Shell 将通配符扩展为参数,与模式匹配的参数数量:

$ echo *.txt
1.txt 2.txt 3.txt
Run Code Online (Sandbox Code Playgroud)

但是如果我只想返回第一场比赛,而不是所有比赛呢?

$ echo *.txt
1.txt
Run Code Online (Sandbox Code Playgroud)

我不介意特定于 shell 的解决方案,但我想要一个适用于文件名中的空格的解决方案。

shell wildcards

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

为什么不按“PrtScrn”按钮打开 Gnome 的屏幕截图窗口?

关于如何在 debian online下截取屏幕截图,有一组非常详细的说明。第一段表明 debian 支持内置的屏幕截图工具:

"Print Screen" key to take a screenshot of the whole screen.
Alt+"Print Screen" key to take a screenshot of the current active window.
Run Code Online (Sandbox Code Playgroud)

debian 屏幕截图弹出窗口

说明暗示当我按下时PrtScn我应该看到这个弹出窗口。但是,我正在运行 Debian Jessie,当我按下时,PrtScn我只听到相机快门声而没有看到弹出窗口。我尝试粘贴到GIMP( edit-> paste) 中,但剪贴板上没有任何内容。

我听到快门声这一事实表明发生了一些事情,但我如何获得图像的副本?

gnome screenshot

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

如何挂载文件系统,映射用户 ID?

我可以成功挂载ext4分区,问题是分区上的所有文件都归userid为1000的用户所有。在一台机器上,我的userid是1000,但在另一台机器上是1010。我的用户名在两台机器上都是一样的,但我意识到文件系统存储的是用户 ID,而不是用户名。

我可以使用以下内容更正文件所有权:

find /mnt/example -exec chown -h 1010 {} \;
Run Code Online (Sandbox Code Playgroud)

但是当我在另一台机器上安装这个外部驱动器时,我必须再次将文件所有权更正回 1000。

我想要的是给出mount一个选项,说将用户 ID 1000 映射到 1010,这样我就不必实际修改任何文件。有没有办法做到这一点?

ext4 mount

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

两个不同文件系统上的两个文件可以共享相同的 inode 编号吗?

如果我运行这样的命令:

find / -inum 12582925
Run Code Online (Sandbox Code Playgroud)

这是否有可能在不同的挂载文件系统(来自不同的分区)上列出两个碰巧分配了相同编号的文件?inode 编号在单个文件系统上还是在所有已挂载的文件系统中是唯一的?

filesystems inode

17
推荐指数
1
解决办法
4438
查看次数

使用 grep,如何匹配一个模式并反转匹配另一个模式?

使用grep,我想选择与某个模式匹配但与另一个模式不匹配的所有行。我希望能够使用单个调用,grep以便我可以使用--after-context选项(或--before-context、 或--context)。

-v在这里不可行,因为它否定了我grep使用该-e选项传递的所有模式。

例子

我想寻找行匹配needle,忽略行匹配ignore me,有一行以下上下文。

这是我的输入文件:

one needle ignore me
two
three
four needle
five
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

four needle
five
Run Code Online (Sandbox Code Playgroud)

如您所见,这个幼稚的解决方案不起作用:

$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
Run Code Online (Sandbox Code Playgroud)

grep

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

如何在 Bash 中使用 XDG 目录和路径?

我想知道如何不仅访问~/.config/user-dirs.dirswith 中定义的变量xdg-user-dir,例如"$(xdg-user-dir VIDEOS)",还访问以下标准变量:

  1. XDG_CACHE_HOME:-$HOME/.cache
  2. XDG_CONFIG_HOME:-$HOME/.config
  3. XDG_DATA_HOME:-$HOME/.local/share
  4. XDG_RUNTIME_DIR:-"/run/user/$USER"
  5. XDG_CONFIG_DIRS:-/etc/xdg
  6. XDG_DATA_DIRS:-/usr/local/share:/usr/share

为此,我在我的~/.bash_login文件中执行以下操作:

# Define standard directories.
declare -gx XDG_CACHE_HOME=~/.cache
declare -gx XDG_CONFIG_HOME=~/.config
declare -gx XDG_DATA_HOME=~/.local/share
declare -gx XDG_RUNTIME_DIR="/run/user/$USER"
declare -gx XDG_CONFIG_DIRS="$(IFS=: path /etc/xdg)"
declare -gx XDG_DATA_DIRS="$(IFS=: path /usr/local/share:/usr/share)"
# Source supplementary directories to export or overwrite existing standard ones.
declare a="$XDG_CONFIG_HOME/user-dirs.dirs"
if [[ -e $a ]]; then
  source "$a"
  declare b=""
  for b in ${!XDG_*}; do
    if [[ $b =~ ^XDG_[_[:alnum:]]+_DIR$ ]]; then
      declare …
Run Code Online (Sandbox Code Playgroud)

bash directory-structure freedesktop

10
推荐指数
1
解决办法
6749
查看次数

如何删除bash中的尾随换行符?

我正在寻找行为类似于 Perl 的chomp. 我正在寻找一个简单地打印其输入的命令,如果它是换行符,则减去最后一个字符:

$ printf "one\ntwo\n" | COMMAND_IM_LOOKING_FOR ; echo " done"
one
two done
$ printf "one\ntwo" | COMMAND_IM_LOOKING_FOR ; echo " done"
one
two done
Run Code Online (Sandbox Code Playgroud)

(Bash 和 Zsh 中的命令替换会删除所有尾随的新行,但我正在寻找最多删除一个尾随新行的东西。)

bash shell-script text-processing newlines

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

9
推荐指数
1
解决办法
2032
查看次数