Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
如何在不更改文件所有者的情况下将命令与sudo一起使用?
当我使用sudo对文件进行某些活动时,这些文件会更改所有权。如何在不更改文件所有者的情况下将命令与sudo一起使用? 示例文件archivos35.sh来自apache,但我使用sed(与usr admin sudo一起使用) $ ls -l -rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh adminsudo 用户- sudo sed -i s/old/new/g archivos35.sh 但是使用sudo执行该命令会更改文件的所有者 $ ls -l -rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh 如何避免将命令与sudo一起使用来更改文件的所有者?我只想在不修改文件所有者的情况下对文件进行更改。
12 sed  sudo  ownership 

3
我可以缩短此筛选器以找到100G以上的磁盘大小吗?
我的目标是从lsblk获得大于100G的磁盘。 我有工作,但是很尴尬。我敢肯定它可以缩短。通过使用与lsblk完全不同的东西,或者我可以直接使用awk过滤人类可读的数字。 这是我汇总的内容: lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}' 它仅输出大于100G的磁盘的sdx和nvmexxx部分。正是我所需要的。 我很满意,但渴望向您学习更多
12 awk  grep  disk  lsblk 


2
在Bash中参数化对应用程序的链接调用
我在Bash shell中使用了一个黑匣子UNIX程序,该程序从stdin读取数据列,对其进行处理(应用平滑效果),然后输出到stdout。我通过UNIX管道使用它,例如 generate | smooth | plot 为了更加平滑,我可以重复进行平滑操作,因此可以从Bash命令行中调用它,如下所示: generate | smooth | smooth | plot 甚至 generate | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | plot 这变得越来越古怪。我想制作一个Bash包装器,使其能够通过管道传递smooth并将其输出直接反馈到smooth任意次数的新实例中,例如 generate | newsmooth 5 | plot 代替 generate | smooth …


1
程序如何知道stdout是连接到终端还是管道?
我在调试segfaulting程序时遇到了麻烦,因为我需要的是segfault之前的输出,但是如果将输出管道传输到文件中,则会丢失此信息。根据以下答案:https : //unix.stackexchange.com/a/17339/22615,这是因为程序的输出缓冲区在连接到终端时会立即刷新,但在连接到管道时才在特定点刷新。这里有几个问题: 程序如何确定其stdout连接到什么? “脚本”命令如何产生与程序写入终端时相同的行为? 如果没有script命令,可以实现吗?
12 terminal  pipe 

4
如何同时重命名目录中的多个文件
我说的目录/var/tmp/abc有4个文件: 12345-ram-3e3r5-io9490-89adu9.csv 45434-dam-qwe35-to9490-43adu9.csv 11234-cam-yy3r5-ro9490-85adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv 我想以最短的方式(可能是单线)重命名所有CSV文件(查找所有文件并重命名): XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv
12 shell  files  rename 

4
为什么不对||使用多个命令 或&&有条件的工作?
这适用于shell(重击,破折号)提示: [ -z "" ] && echo A || echo B A 但是,我试图编写一个POSIX shell脚本,它的开始是这样的: #!/bin/sh [ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1 readonly raw_input_string=${1} [ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1 而且我不知道为什么,但是我没有得到消息: 给定的参数为空。 如果我这样调用脚本: ./test_empty_argument "" …

2
是否可以搜索目录/文件组合?
我需要找到一个图像,例如ABC.jpg,我知道它将以编程方式放置在名为ABC_MPSC的目录中。我试过了: cd / find . -name "ABC_MPSC/ABC.jpg" 但这并不会返回任何内容(我实际上知道我要搜索的特定位置在哪里,所以我知道它存在)。是否有一个find命令可以使我不必手动搜索?
12 find 

3
有/无尾随空格匹配一个单词有什么区别?
我正在学习shell脚本,为此我正在使用HackerRank。sed在同一站点上有一个与之相关的问题:'Sed'命令#1: 对于给定输入文件中的每一行,用“ this”转换单词“ the”的首次出现。搜索和转换应严格区分大小写。 首先,我尝试了 sed 's/the/this/' 但是在那个示例测试案例中失败了。然后我尝试 sed 's/the /this /' 而且有效。那么,问题来了,空白产生了什么区别?我在这里想念什么吗?
12 sed  whitespace 

2
退出具有正确关闭会话的快捷方式的shell(不键入exit)
我对每天使用的许多ssh会话使用ProxyJump命令,并且在这些会话上频繁切换用户,并且不得不exit连续键入3或4次并不是很有趣。 我知道newline+ ~+ .会终止ssh会话,我仍然必须检查它是否会像那样友好地终止它exit,但是如何用单个命令或快捷方式退出当前shell中的所有会话,例如键入exit3或4次就我而言变成一次性的东西?
12 bash  shell  session 

1
Linux是否有系统调用来访问其支持的文件系统的所有功能?
Linux支持许多文件系统(例如:ext3,NTFS,FAT32等)。 下图显示了Linux如何允许进程访问文件: 因此,假设有一个称为read()系统调用的过程来读取文件,将发生的事情是将访问VFS层,并且VFS层将根据文件所要分区的文件系统来决定访问哪个文件系统驱动程序。被读取驻留。 Linux提供了许多系统调用来访问文件(例如:read(),write(),rename()等)。 现在,read()和write()与rename()所有的文件系统Linux支持工作。 但是有些特定功能仅在某些文件系统上存在,而在其他文件系统上不存在。例如:在NTFS文件系统上,您可以将文件的“ 存档”位置1,而在ext3文件系统上则不能。 现在我的问题是,Linux是否有系统调用来访问其支持的文件系统的所有功能?例如:Linux是否有系统调用来为NTFS文件系统上的文件设置存档位?

3
为什么“ rm -r”无法删除此文件夹?
我有一个文件夹-wx的权限称为folder1和里面的另一个文件夹名为folder2与rwx权限。 我尝试folder1使用以下命令删除: rm -r folder1 但是我收到以下错误: rm: cannot remove 'folder1': Permission denied 我认为我收到此错误的原因是因为rm程序首先需要获取的内容folder1(获取其中的文件和文件夹的名称folder1)才能删除该内容(因为您无法删除文件)或文件夹,而我不知道它的名称),然后rm程序可以删除folder1自己。 但是由于folder1没有read权限,因此rm程序无法获取其内容,因此无法删除其内容,并且由于无法删除其内容,因此也无法删除它。 我对么?
12 linux  permissions  rm 

1
为什么在“ apt install”之后我的Debian 9(Stretch)Linux内核没有得到升级?
我在本月的大部分时间中尝试安装,重新安装,手动删除,以及将最新的linux-image-4.9.0-8(或以下版本)重新安装到我的Debian 9(Stretch)上,但是它将始终(重新)引导错误版本的Linux 3.16.0-5。 我什至删除了整个/boot目录内容,然后重新安装。 我有一个标准的Debian 9安装到/dev/sda驱动器,其中/dev/sda1是/boot独立的分区。 我的清单: 检查了《Debian管理手册》。 硬件中没有UEFI引导程序 在中关闭imageramfs选项 /etc/kernel-img.conf 没有花哨的内核模块(甚至没有NVIDIA和ATI) 正确使用apt代替apt-get 这是我遇到的一个难题系统。 最新的目录/boot是: $ ls -lat /boot total 106000 drwxr-xr-x 23 root root 4096 Jan 17 12:25 .. drwxr-xr-x 2 root root 4096 Jan 17 12:17 grub drwxr-xr-x 3 root root 4096 Jan 17 12:17 . -rw-r--r-- 1 …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.