我想显示我家目录下的所有空目录,用shell脚本,能帮我找到代码吗?(不使用find's -empty)
在 Linux 中,每个实体都被视为文件。如果我这样做vim <cd-Name>,vim会将目录内容打开到它的编辑器中,因为它不区分文件和目录。
但是今天在工作的时候,遇到了一件事,很想知道。
我计划从嵌套目录中打开一个文件
vim a/b/c/d/file
Run Code Online (Sandbox Code Playgroud)
但是vim,我输入了
cd a/b/c/d/
Run Code Online (Sandbox Code Playgroud)
并点击TAB两次,但命令仅显示“d”目录的可用目录而不是文件。
难道cd命令不尊重“一切都是文件”吗?或者我错过了什么?
我只是想了解modinfo描述内核模块的输出。例如,在 module 的情况下i915,输出如下所示:
$ modinfo i915
filename: /lib/modules/4.2.0-1-amd64/kernel/drivers/gpu/drm/i915/i915.ko
license: GPL and additional rights
description: Intel Graphics
author: Intel Corporation
[...]
firmware: i915/skl_dmc_ver1.bin
alias: pci:v00008086d00005A84sv*sd*bc03sc*i*
[...]
depends: drm_kms_helper,drm,video,button,i2c-algo-bit
intree: Y
vermagic: 4.2.0-1-amd64 SMP mod_unload modversions
parm: modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, 1=on, -1=force vga console preference [default]) (int)
[...]
Run Code Online (Sandbox Code Playgroud)
我能够理解一些领域,但我不知道以下是什么意思:
firmwarealiasintreevermagic有谁知道如何解释它们?
我有一个看起来像这样的文件:
ID101 G T freq=.5 nonetype ANC=.1 addinfor
ID102 A T freq=.3 ANC=.01 addinfor
ID102 A T freq=.01 type=1 ALT=0.022 ANC=.02 addinfor
Run Code Online (Sandbox Code Playgroud)
如您所见,每行的列数略有不同。我特别想要第 1 列、第 2 列、第 3 列、第 4 列和以ANC=
期望的输出:
ID101 G T freq=.5 ANC=.1
ID102 A T freq=.3 ANC=.01
ID102 A T freq=.01 ANC=.02
Run Code Online (Sandbox Code Playgroud)
我一般使用 awk 命令来解析文件:
awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}'
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以更改此命令以适用于此类情况?
我认为这样的事情可能会奏效:
awk '{for(j=1;j<=NF;j++){if($j~/^ANC=/){print $j}}}'
Run Code Online (Sandbox Code Playgroud)
但是,如何编辑它以打印第一列?
我想对特定目录下的所有文件和子目录设置 755 权限,但我只想对那些没有 755 权限的组件执行 chmod 755。
find /main_directory/ -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)
如果该find命令返回一长串列表,这将花费大量时间。我知道我可以使用 stat 命令来检查每个组件的八进制文件级别权限,然后使用 if-else 来切换文件权限,但是是否有任何单行方法使用find并xargs首先检查文件/目录具有什么权限,然后使用chmod将其更改为 755(如果设置为其他内容)。
EINTR是所谓的可中断系统调用可能返回的错误。如果在系统调用运行时发生信号,则不会忽略该信号,并且为它定义了SA_RESTART未设置的信号处理程序并且该处理程序处理该信号,则系统调用将返回EINTR错误代码。
作为旁注,我经常ncurses在 Python 中使用这个错误。
POSIX 标准指定的这种行为背后是否有基本原理?可以理解可能无法恢复(取决于内核设计),但是,不在内核级别自动重新启动它的理由是什么?这是出于传统原因还是技术原因?如果这是出于技术原因,这些原因现在仍然有效吗?如果这是出于遗留原因,那么历史是什么?
在 Linux 中,当一个子进程终止并且它的父进程还没有等待它时,它就变成了一个僵尸进程。孩子的退出代码存储在 pid 描述符中。
如果将 aSIGKILL发送给孩子,则不应该有任何效果。
这是否意味着退出代码不会被 修改,SIGKILL或者退出代码是否会被修改以指示子进程退出是因为它收到了SIGKILL?
考虑以下文件:
file1:
boo,8,1024
foo,7,2048
Run Code Online (Sandbox Code Playgroud)
file2:
foo,0,24,154
noo,0,10,561
Run Code Online (Sandbox Code Playgroud)
file3:
24,154,7,1024,0
Run Code Online (Sandbox Code Playgroud)
我需要的是去File1并检查是否$2==7;如果为真,取$1,$2和$3来自File1 ; 现在我必须比较$1来自File1 是否等于$1来自File2;如果为真,我必须从File1中不存在的File2取$3和,然后我必须转到File3并检查from File3是否等于from File2,以及from File3等于from File2;如果是,那么我必须检查是否来自File1$4$1$3$2$4$2等于$3from File3,那么如果这个条件为真,我必须比较$3from File1和$4from File3,如果$3from File1大于$4from File3。
我尝试了以下脚本: …
我有这个命令:
cat somefile >file1 >file2
Run Code Online (Sandbox Code Playgroud)
执行此命令后,我无法弄清楚为什么其中file1没有任何内容。它应该具有第一个文件 ( somefile)的输出,但其中没有任何内容。
你能向我解释为什么它不从 复制或写入我的输出somefile吗?(file2包含我的输出,但不file1包含任何内容)
我有一个这样的文本文件:
a
b
c
d
e
f
g
Run Code Online (Sandbox Code Playgroud)
如何对这些行进行分组以获得如下输出:
a-b
b-c
c-d
d-e
e-f
f-g
Run Code Online (Sandbox Code Playgroud)
我必须在 shell(sh、csh、bash)中执行此操作。
我发现了这个:
cat file | xargs -n2
Run Code Online (Sandbox Code Playgroud)
但是第一组的最后一个元素没有成为第二组的第一个。
linux ×3
awk ×2
command-line ×2
find ×2
linux-kernel ×2
process ×2
shell ×2
signals ×2
cd-command ×1
chmod ×1
directory ×1
gawk ×1
kernel ×1
posix ×1
sed ×1
system-calls ×1