AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-163540

user2153235's questions

Martin Hope
user2153235
Asked: 2024-09-16 02:00:58 +0800 CST

如何创建“/run”文件夹以及可能的子文件夹?

  • 5

过去几年,跑步xdf发出警告

$QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-fma'
QXcbShmImage: shmget() failed (88: Function not implemented) for size 3208656 (1133x708)

根据此页面。我需要以下内容~/.bashrc:

export XDG_RUNTIME_DIR=/run/user/$(id -u)

我使用 Cygwin,但我没有文件夹/run。我想创建它,但我不确定如何最好地做到这一点以便所有帐户都可以使用它。我有一个管理员帐户和用于不同目的的其他各种帐户,例如个人、工作相关、游戏等。

我该如何创建/run?我是否还应该/run/user为不同的帐户创建?

cygwin
  • 1 个回答
  • 30 Views
Martin Hope
user2153235
Asked: 2024-07-19 01:02:02 +0800 CST

让“ls”从文件中读取许多文件路径

  • 5

我经常使用以下习惯用法来查找从当前目录开始的文件树中的所有文件,然后提交文件路径,ls -lt以便按最新顺序显示它们:

$ find * -type f -print0 | xargs -0 ls -lt | head -n 20

我很惊讶最新的文件不见了。经过一番排查,我发现原因是xargs默认情况下处理 322 个项目,而最新的文件不位于前 322 个文件路径中。

我可以进一步侦查以调整 322 的最大值,但由于我并不总是知道我需要多少,所以我寻找ls从文本文件读取文件路径的方法。这样,我可以将finded 文件路径发送到(比如说)~/tmp/FilePaths.txt并ls从那里读取它们。

有没有办法做到ls这一点?按时间顺序排序的文件数量是否有限制ls -lt?具体来说,我需要将每一行都~/tmp/FilePaths.txt解释为文件路径。

sed如果我使用双引号修饰每行以强制将该行解释为单个参数(例如),那么实现此目的的选项会更多ls $(cat ~/tmp/FilePaths)。但是,某些文件名将包含双引号。我在企业 Windows 环境中使用 Cygwin,因此文件名可以是任意的。

ls
  • 1 个回答
  • 32 Views
Martin Hope
user2153235
Asked: 2024-01-20 04:21:40 +0800 CST

Bash 的“set -v”不会将大括号内的命令回显到标准输出

  • 6

我有以下测试脚本:

# test.bash
#----------
{

   set -v # Echoes the following 3 parameters
   DELAY_MS=2000
   SCALING=false
   VERBOSE=false
   set +v

   echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST

} 2>&1 | tee test.bash.out

它设置 3 个变量并回显一行TEST输出。因此set -v,我希望 3 个变量设置能够镜像到stdout和tee'd to test.bash.out。但是,它们既不会出现在 Bash 控制台中,也不会出现在test.bash.out.

他们为什么不出现?

有没有一种简单的方法可以让变量显示在stdout中?

bash
  • 1 个回答
  • 30 Views
Martin Hope
user2153235
Asked: 2024-01-11 06:29:25 +0800 CST

Bash:无法识别合法文件夹路径

  • 6

我尝试使用sed将PATH路径转换为以下内容的输入find:

User.Name@Machine-Name ~
$ echo $PATH | sed -e 's/:/\n/g' \
  | sed -n -e 's=.*="&"=' -e '2,5p'

   "/bin"
   "/usr/local/bin"
   "/usr/bin"
   "/c/Program Files/Eclipse Adoptium/jdk-8.0.392.8-hotspot/bin"

路径被引用以保护空格。不幸的是,当它们提交到find:

User.Name@Machine-Name ~
$ find \
   $(echo $PATH | sed -e 's/:/\n/g' | sed -n -e 's=.*="&"=' -e '2,5p') \
   -iname '*libc*'

   find: ‘"/bin"’: No such file or directory
   find: ‘"/usr/local/bin"’: No such file or directory
   find: ‘"/usr/bin"’: No such file or directory
   find: ‘"/c/Program’: No such file or directory
   find: ‘Files/Eclipse’: No such file or directory
   find: ‘Adoptium/jdk-8.0.392.8-hotspot/bin"’: No such file or directory

事实上,空格不受保护并被解释为参数分隔符。

另一方面,如果我只是输入带引号的路径,它就可以正常工作:

User.Name@Machine-Name ~
$ find "/bin" -iname '*libc*' # Finds nothing, but no syntax error
User.Name@Machine-Name ~

我如何理解这一点以及如何有效地将PATH路径转换为参数(例如 for find)?

bash
  • 1 个回答
  • 63 Views
Martin Hope
user2153235
Asked: 2023-11-11 07:00:06 +0800 CST

“ls”对应于“find”运算符“-printf”?

  • 7

该find命令有一个方便的-printf操作符,可以为每个找到的文件/文件夹打印用户指定的元数据。该命令有这样的选项吗ls?

作为替代方案,我可以将感兴趣的文件名列表提供给 find而不是ls,但这似乎就像在飞行中使用大锤一样。我已经有了感兴趣的文件,但我并没有真正“找到”任何东西。

此外,提供路径find会很棘手,因为我不能只将所需的文件路径附加到命令的末尾find 。该find命令要求路径位于运算符(或“谓词”)之前。因此,我无法轻松利用“xargs”。

感谢Steeldriver的回答。我认为stat如果我从头开始,他的使用将是一个解决方案。find不幸的是,我必须将输出与其他系统(特别是使用's )生成的类似信息进行比较printf。

以下是一些find我发现有效的代码习惯用法:

# Option 1
Some Command \
| xargs -n 1 -I{} find {} -printf '%p\t%TY-%Tm-%Td %TH:%TM\t%s\n'

# Option 2
Some Command | tr '\n' '\0' \
| xargs -0 -I{} find {} -printf '%p\t%TY-%Tm-%Td %TH:%TM\t%s\n'

根据muru 的评论,这里有一个我还没有开始工作的代码习惯用法,因为我的findCygwin 的 Gnu 版本早于 4.9 并且无法识别谓词-files0-from:

Some Command | tr '\n' '\0' \
| find -files0-from - -printf '%p\t%TY-%Tm-%Td %TH:%TM\t%s\n'
find
  • 1 个回答
  • 80 Views
Martin Hope
user2153235
Asked: 2023-04-29 13:48:59 +0800 CST

查找命令:排除特定文件夹中的文件模式

  • 9

我希望find命令排除一个文件夹中的某个文件模式,但不排除该文件夹的子文件夹。例如,如果我想排除subdir1/subdir1.1/UndesiredFiles*.tgz,以下将不起作用,因为星号匹配包括文件夹名称分隔符在内的连续字符/:

find * -not -path 'subdir1/subdir1.1/UndesiredFiles*.tgz'

以上排除了以下我不想排除的内容:

subdir1/subdir1.1/UndesiredFilesAndMore/*.tgz
subdir1/subdir1.1/UndesiredFilesAndMore/StillMore/*.tgz

我正在使用 Gnu find4.9.0 版。

find
  • 1 个回答
  • 94 Views
Martin Hope
user2153235
Asked: 2023-04-27 00:25:30 +0800 CST

用于不存在文件的“readlink -e”的 Linux 替代方案

  • 5

在 Windows 上,我经常创建一个不存在的文件的完整路径,以便我可以将它提供给文件保存对话框,从而告诉主机应用程序将文件保存在何处。使用 Cygwin,这是完成的:

cygpath -au Some/Relative/Path.blah # For Cygwin apps
cygpath -aw Some/Relative/Path.blah # For Windows apps

我经常将生成的完整路径通过管道传输到 Cygwin putclip,以便我可以将其粘贴到相关应用程序的文件保存对话框中。更准确地说,我将它通过管道传递给我自己的函数putclp(没有“i”),它删除了终止回车。

我为 Linux 找到的最接近的对应物是

readlink -e Some/Relative/Path.blah

我将其通过管道传输到xsel -ipX-windows 主剪贴板或xsel -ibUbuntu 中更现代的类似 Windows 的剪贴板。

不幸的是,只返回现有readlink -e文件的路径。我经常需要为不存在的文件创建完整路径,因为我要告诉应用程序在哪里创建文件。

是否有cygpath/的对应物readlink可以根据指定的相对路径创建不存在文件的完整路径?

如果我们假设调用了所需的命令GetFullPath,则以下是所需功能的示例:

GetFullPath Relative/Path/To/Nonexistent/File

标准输出的结果将是/The/Full/Path/To/Nonexistent/File.

readlink
  • 1 个回答
  • 24 Views
Martin Hope
user2153235
Asked: 2023-03-08 00:19:13 +0800 CST

sed 的贪婪匹配不应该匹配这个字符串,但是

  • 8

从我在网上阅读的内容来看,很难理解sed. 我对这似乎是一场懒惰的比赛感到困惑。

在 中~/tmp/tmp.txt,我有一行由 2 个制表符分隔的 3 个字母数字字符串:TheQuick<TAB>BrownFox<TAB>JumpedOver。如果我发出sed -n -E '/^.+\t.+\t.+$/p' ~/tmp/tmp.txt,该行将打印出来。

在我看来它不应该因为即使正则表达式匹配由 2 个制表符分隔的 3 个字符串,这些字符串也不是字母数字。所以第一个字符串应该贪婪地吞噬掉行中的所有字符,不留下任何与第一个制表符匹配的字符。

我怎样才能理解这种行为,以便我可以制作可靠的正则表达式?我正在使用 GNU sed。

sed
  • 1 个回答
  • 79 Views
Martin Hope
user2153235
Asked: 2023-03-04 03:32:11 +0800 CST

使用“cygcheck”来“查找FILE所属的包”

  • 5

根据我的 Cygwin 安装程序“setup-x86_64.exe”,我有包texlive-collection-latexextra版本 20220321-1。Cygwin 包搜索页面说这个包应该包含usr/share/texmf-dist/tex/latex/changes/changes.sty,我确认了这一点。

来自的输出cygcheck --help表示cygcheck -f FILE [FILE]...将“找到 FILE 所属的包”。但是,cygcheck -f changes.sty什么都不返回。

我究竟做错了什么?

cygwin
  • 1 个回答
  • 9 Views
Martin Hope
user2153235
Asked: 2022-11-27 14:11:41 +0800 CST

Bash 需要额外的右括号来定义函数

  • 5

从这个站点,我得到了以下 Bash 函数来使用 ImageMagick 调整图像大小:

smartresize() { mogrify -path $3 -filter Triangle -define filter:support=2 -thumbnail $2 -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB $1 }

当我输入上面的内容并按下<Return>后,Bash 会提示...> 命令不完整。再次按下<Return>不会让它消失。}在返回到标准 Bash 提示符之前,我必须输入一个额外的右大括号。

我以前做过,但没有观察到这种行为。 有人可以建议我如何追查原因吗?

更多症状

我尝试使用smartresize():

$ mkdir smartout # Create destination folder
$ smartresize C82A4D44-0A8B-4BBA-90DB-45F683B3D8E6rot.jpeg 2016 smartout

# Output from smartresize
mogrify: unable to open image '}': No such file or directory @ error/blob.c/OpenBlob/3537.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/562.

显然,extra}在语法上是错误的,但根据 Bash,我必须输入它。

bash
  • 1 个回答
  • 33 Views
Martin Hope
user2153235
Asked: 2022-11-20 09:03:25 +0800 CST

找出我无权“mv”文件夹的原因的简单步骤

  • 5

我尝试了一些正常的事情:

$ mv path1 path2

mv: cannot move
'path1/subfolder/' to 'path2/subfolder': Permission denied

path2最初不存在,因此这应该复制 as 的文件夹path1树path2。Afind path1 -ls显示我对path1.

初始diff -qr path1 path2显示path1/subfolder没有移动。但是,我可以递归复制:

mkdir path2/subfolder
cp -r path1/subfolder/* path2/subfolder

# Confirm that original subtree and copy are identical
diff -qr path1 path2 # Reveals that the two are identical

虽然我已经解决了这个问题,但我对无法解释的行为从不满意。有没有简单的方法来戳戳原因?我的意思是简单,因为我不编写 Bash 脚本。我只是在命令行中使用它。

我在 Windows 10 上使用 Cygwin。该帐户是非管理员帐户。所有文件和文件夹都归该帐户所有。我确保没有像 Office 应用程序或 Matlab 这样的僵尸进程可能以某种方式阻止文件夹被删除,尽管问题可能很容易是读取访问或其他问题。正如解决方法所示,它绝对不是对目标树的写访问权限。我也可以rm -r path1,所以问题也不在于对原始树的写访问。

糟了。 这意味着我不再有path1,这使得很难尝试任何故障排除建议。不过,我仍然愿意接受建议。

permissions
  • 2 个回答
  • 55 Views
Martin Hope
user2153235
Asked: 2022-07-02 13:59:39 +0800 CST

“xargs”未通过 stdio 向“cd”发送参数

  • 0

根据我的经验,我看到的“xargs”行为似乎非常出乎意料。我使用“ls”查找匹配的文件夹名称并使用“xargs”将其发送到“cd”。我收到该文件夹​​不存在的消息。但是,如果我不使用“xargs”,则“cd”可以工作。此外,如果我确实使用“xargs”但将其发送到“ls”而不是“cd”,它也可以工作。

# Identify desired directory
ls -d *[Aa]nt*

   201909+ants/

# Print the desired command with "echo"
ls -d *[Aa]nt* | xargs echo cd

   cd 201909+ants/

# Execute the desired command and get error
ls -d *[Aa]nt* | xargs cd

   xargs: cd: No such file or directory

# Confirm that the desired command without "xargs"
cd 201909+ants  # This works no problem
cd ..           # Go back up
cd 201909+ants/ # This works no problem
cd ..           # Go back up

# Confirm that "xargs" with "ls"
ls -d *[Aa]nt* | xargs ls -d

   201909+ants/

我确信这是键盘和椅子之间的 ID1OT 问题。谁能指出我的错误在哪里?

我正在使用 Cygwin 的 Bash,但我很少看到与 Linux 的差异。我不记得我上一次看到这样的差距是什么时候了。

xargs cd-command
  • 1 个回答
  • 63 Views
Martin Hope
user2153235
Asked: 2022-02-11 10:34:06 +0800 CST

“cd”到符号链接目录,希望当前工作目录是完整路径

  • 6

在我的主目录~中,我发出

ln -s Subfolder1/Subfolder2/Subfolder3

然后,我的主目录中有一个软链接文件夹Subfolder3。当我pushd进入它时,两者都pwd显示dirs我当前的工作目录(cwd)为. 我的 bash 提示符还包含cwd,它显示为./home/My.User.Name/Subfolder3~/Subfolder3

我记得很多年前,在 acd或pushd到一个符号链接的文件夹之后,完整路径~/Subfolder1/Subfolder2/Subfolder3将由pwd,dirs和 bash 提示符中显示。恢复这种行为是一个简单的设置吗?

bash symlink
  • 3 个回答
  • 579 Views
Martin Hope
user2153235
Asked: 2021-11-04 17:12:19 +0800 CST

在“su - other-account”之后无法识别 xsel [重复]

  • -1
这个问题在这里已经有了答案:
无法以超级用户身份连接到 X 服务器:0.0 5 个答案
11 个月前关闭。

这篇帖子在11个月前被编辑并提交审核,并且未能重新打开帖子:

原始关闭原因未解决

我是 Linux 新手,并使用此过程将以下版本的 Ubuntu 设置为 VirtualBox VM :

ubuntu-20.04.3-desktop-amd64.iso

创建的第一个帐户是管理员帐户。我安装xsel并检查它是否有效。然后我创建了一个非管理员帐户并su使用su - non-admin-account. 那时,xsel抱怨:

xsel: Can't open display: (null)
: Inappropriate ioctl for device

在进入另一个帐户后,我必须做什么才能xsel访问?su

目前,我对启动su在非管理员帐户中启动它们自己的客户端窗口的应用程序不感兴趣。我只想简单地将标准输出到剪贴板,以便我可以使用 Shift+Ins 在 Vim 或 Bash 命令行中检索它,例如,echo dog | xsel -ib或echo dog | xsel -ip.

我目前的计划是写入或重定向到(比如说)/tmp/tmp.txt在从登录屏幕登录的用户与从登录屏幕登录的用户之间传递文本su。我习惯了 Cygwin 的行为,无论终端在哪个帐户下启动,剪贴板都是共享的。


故障排除

如果我登录非管理员帐户和管理员帐户,我会得到相同的行为su。 xsel在我登录的非管理员帐户中工作,而不是在我登录的管理员帐户中工作su。

本质上,xsel在su.

根据评论,我查看了这个问题的答案。 我不认识问题描述,因为错误消息完全不同,因此根据错误消息查看的人不会识别该问题。此外,我不明白答案。看起来它可能适用于我的解决方案的一点是xhost +localhost,但它不起作用,因为语法错误,至少对于我正在使用的 Ubuntu 版本。我在下面的答案中发布了有效的语法。

我认为在上面引用的页面甚至可以远程通知某人之前,您必须知道问题是缺少帐户访问 X 服务器的权限。例如,如果您来自使用 Cygwin 的 X-windows 的背景,您可能不会猜到这一点,因为问题并没有在那里表现出来。

x11 su
  • 2 个回答
  • 123 Views
Martin Hope
user2153235
Asked: 2021-11-04 16:24:36 +0800 CST

在 Ubuntu 帐户中安全删除类似 Windows 的文件夹?

  • 2

我安装了一个 ubuntu-20.04.3-desktop-amd64.iso 作为 VirtualBox VM。自动创建的第一个帐户是管理员帐户。它包含以下文件夹,全部为空,但有一个例外:

~/Desktop/
~/Documents/
~/Downloads/
~/Music/
~/Pictures/
~/Public/
~/Templates/
~/Videos/

唯一的例外是~/Desktop/.inpurc,它与 相同~/.inpurc,所以我可能不小心复制了它。

当我创建一个非管理员帐户时,它没有任何这些文件夹。我发现这些文件夹对于我通常组织文件的方式没有用处。由于它们是默认放在那里的,我可以安全地删除它们吗?

后记:事实证明,非管理员帐户没有这些文件夹,因为我su进入了该帐户,而不是从登录屏幕登录。当我执行后者时,非管理员帐户包含这些类似 Windows 的文件夹。很高兴知道我是否可以在不破坏 Ubuntu 应用程序的情况下安全地删除它们。

ubuntu
  • 1 个回答
  • 74 Views
Martin Hope
user2153235
Asked: 2021-11-01 14:08:30 +0800 CST

Bash文件名扩展:避免某些字符

  • 0

在 Bash 中,我可以Foo1.png通过Foo9.png使用Foo[0-9].png. 我可以避免Foo5.png使用Foo[1-46-9].png. 有没有办法为十进制数字指定一系列排除项?

例如,如果我想排除Foo3.pngand Foo7.png,我可以使用Foo[0-24-689],但我会发现这样的模式Foo[^37].png更容易阅读。那是 Vim 语法,Bash 不会将其解释为排除3and 7。但我想知道 Bash 在其文件名扩展中是否有字符排除模式。

如果有一个解决方案可以匹配除or之外的所有单个字符,那么在某些情况下(例如引发此问题的特定问题,尽管上面的描述过于简化),这也会有所帮助。37

bash filenames
  • 1 个回答
  • 183 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve