Unix & Linux

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


7
我怎么还记得如何使用重定向?
我知道 program > /dev/null 2>&1 做。它将输出重定向到,/dev/null并2>&1意味着将错误输出重定向到发送输出的同一位置。 我的问题是我总是不得不用谷歌搜索它,因为我不记得了。 所以,我尝试&2>1,1>2&,1>&2...我尝试各种组合,直到我google一下... 容易记住的诀窍是什么?
40 shell 

5
如何定义要获取的Shell脚本无法运行
我正在定义用户应该source而不是执行的shell脚本。 是否有常规或智能的方式来提示用户这种情况,例如通过文件扩展名? 我是否可以在文件本身中编写外壳代码,这将导致该文件回显消息并在执行而不是源代码时退出,以便我可以帮助用户避免这一明显的错误?
40 bash  shell 

7
有没有办法针对任何命令使用提示在bash中传递敏感数据?
假设我sha1pass用来在命令行上生成一些敏感密码的哈希。我可以sha1pass mysecret用来生成的哈希,mysecret但这具有mysecretbash历史中现在存在的缺点。有没有一种方法可以完成此命令的最终目标,同时又可以避免mysecret使用passwd-style提示符显示纯文本格式? 我也对将敏感数据传递到任何命令的通用方法感兴趣。当敏感数据作为参数(例如in中sha1pass)或在STDIN上传递给某些命令时,该方法将更改。 有没有办法做到这一点? 编辑:这个问题引起了很多关注,下面提供了几个很好的答案。摘要是: 按照@Kusalananda的回答,理想情况下,永远不必将密码或机密信息作为实用程序的命令行参数提供。正如他所描述的那样,这很容易受到攻击,并且应该使用一种设计更好的实用程序,该实用程序能够接收STDIN上的秘密输入。 @vfbsilva的答案描述了如何防止事物存储在bash历史记录中 @Jonathan的答案描述了一种非常好的方法,只要程序可以在STDIN上获取其秘密数据即可。因此,我决定接受这个答案。sha1pass在我的OP中只是一个例子,但是讨论确定存在更好的工具,它们确实可以在STDIN上获取数据。 正如@R ..在他的答案中指出的那样,对变量使用命令扩展并不安全。 因此,总而言之,我接受@Jonathan的回答,因为鉴于您有一个设计良好且行为良好的程序,它是最好的解决方案。尽管从根本上将密码或机密作为命令行参数传递是不安全的,但其他答案提供了缓解简单安全性问题的方法。



9
硬链接的用例?[关闭]
在什么情况下,您想使用硬链接而不是软链接?我个人从未遇到过要在软链接上使用硬链接的情况,并且在搜索Web时遇到的唯一用例是对相同文件进行重复数据删除。

5
如何递归地从文件中删除执行权限而不接触文件夹?
我备份了一个NTFS驱动器,事实证明,这种备份确实很有必要。但是,NTFS驱动器弄乱了权限。我想将它们恢复为正常,而无需手动修复每个文件。 一个问题是突然我的所有文本文件都获得了执行权限,这是错误的。所以我尝试了: sudo chmod -R a-x folder\ with\ restored\ backup/ 但这是错误的,因为它x也会从目录中删除权限,这会使它们不可读。 在这种情况下正确的命令是什么?

5
如何创建一个TCP监听器?
简介:我创建了一个bash函数,该函数可以检查端口是否可用,如果为false,则将其递增1,直到达到某个最大端口号为止。例如,如果端口500不可用,则将检查501的可用性,直到550。 目的:为了测试此bash功能,我需要创建一系列处于LISTEN状态的端口。 尝试:在Windows上,可以使用以下PowerShell命令创建LISTEN端口: PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234 PS C:\Users\u> $listener.Start(); PS C:\Users\u> netstat -nat | grep 1234 TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost PS C:\Users\u> $listener.Stop(); PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> 基于此,我试图考虑一个可以在CentOS上执行相同操作的命令,但是我不知道为什么,因此我开始使用Google却没有找到解决该问题的解决方案。 预期的答案:我将接受并认可包含能够创建LISTEN端口的命令的答案,一旦运行该命令,该端口应保持LISTEN状态,即: [user@host ~]$ ss -nat | grep …
40 shell  networking  tcp 

1
将pdf转换为其他页面大小(美国字母-> A4)
我正在尝试打印一个简单的US Letter文档,但是由于某些原因,当每个列表打印多页时,我只是无法设法将其正确地适合A4。 我尝试使用以下方法转换pdf: gs -o print.pdf -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -pPDFFitPage -dCompatibilityLevel=1.4 input.pdf 但这似乎对文档没有任何影响,但仍显示为美国字母。 任何方式如何将pdf转换为A4格式?

2
将CFLAGS和LDFLAGS添加到“配置”中的正确语法是什么?
我希望使用OpenVPN源tarball在OpenBSD 5.5上安装OpenVPN。 根据此处的说明,我必须安装lzo和 将CFLAGS =“-I / usr / local / include” LDFLAGS =“-L / usr / local / lib”指令添加到“配置”中,因为gcc否则找不到它们。 我已经在Google上广泛搜索以获取有关如何在OpenBSD上执行上述操作的指南,但没有任何指南。 我打算这样做: 将源压缩文件解压缩到新创建的目录中 发出命令./configure CFLAGS =“-I / usr / local / include” LDFLAGS =“-L / usr / local / lib” 发出命令make 发出命令make install 下列哪种语法是正确的? ./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" 要么 ./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" …

9
如何终止进程并确保PID没有被重用
例如,假设您有一个类似于以下内容的shell脚本: longrunningthing & p=$! echo Killing longrunningthing on PID $p in 24 hours sleep 86400 echo Time up! kill $p 应该做到这一点,不是吗?除了该进程可能提前终止并且其PID可能已被回收,这意味着某些无辜的工作会在其信号队列中放入炸弹。在实践中,这可能确实很重要,但仍然令我担忧。窃取长途运行的东西以自行消失或在FS上保留/删除其PID都可以,但是我在这里想到了一般情况。
40 process  kill 


1
加载共享库和RAM使用率
我想知道Linux管理共享库的方式。(实际上,我说的是Maemo Fremantle,这是2009年发行的基于Debian的发行版,运行于256MB RAM上)。 假设我们有两个链接到libQtCore.so.4并使用其符号(使用其类和函数)的可执行文件。为了简单起见,我们将它们称为a和b。我们假设两个可执行文件都链接到相同的库。 首先我们启动a。必须加载该库。它是整体加载还是仅在所需部分加载到内存(因为我们不使用每个类,因此仅加载有关所用类的代码)? 然后我们启动b。我们假设它a仍在运行。b也链接到libQtCore.so.4并使用一些使用的类a,但也使用了一些未被使用的类a。库是否会被双重加载(分别用于a和分别加载b)?或者他们将使用RAM中已经存在的相同对象。如果不b使用任何新符号并且a已经在运行,则共享库使用的RAM是否会增加?(或者差异不大)

4
如何在bashrc中创建本地函数?
我的.bashrc有一些重复的代码,所以我使用了一个函数来简化它 do_stuff() { local version=$1 export FOO_${version}_X="17" export FOO_${version}_Y="42" } do_stuff '5.1' do_stuff '5.2' 但是,现在使用外壳程序时,“ do_stuff”名称已在范围内,因此我可以使用Tab键完成并运行该功能(可能会弄乱我的环境变量)。有没有一种方法可以使“ do_stuff”仅在.bashrc内部可见?
40 bash  bashrc 

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.