Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

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

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 

4
为什么`cd`命令不能通过SSH起作用?
我试图通过SSH备份一些文件,但没有添加tar我想要的文件,而是得到了我的主文件夹。我做了一些进一步的测试,归结为: ssh root@server /bin/sh -c "cd /boot && ls -l" 令我惊讶的是,其中/root没有列出文件/boot。但是,如果我/bin/sh从终端运行整个命令,它将正确地cd打印/boot文件。 这里发生了什么事?
40 shell  ssh  cd-command 

7
制表符完成错误:bash:无法为此处文档创建临时文件:设备上没有剩余空间
使用标签栏时,我不断收到此错误: bash:无法为此处文档创建临时文件:设备上没有剩余空间” 有任何想法吗? 我一直在做一些研究,许多人谈论/ tmp文件,该文件可能有一些溢出。当我执行时,df -h我得到: Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.1G 8.7G 0 100% / udev 10M 0 10M 0% /dev tmpfs 618M 8.8M 609M 2% /run tmpfs 1.6G 0 1.6G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 1.6G 0 1.6G 0% /sys/fs/cgroup /dev/sda1 …
40 debian  shell  ssh  tmp 



4
/ dev / tcp监听而不是nc监听
使用netcat侦听器,例如: nc -l <port> < ~/.bashrc 我可以使用以下方法在新计算机(没有ncLDAP或没有LDAP)上获取.bashrc : cat < /dev/tcp/<ip>/<port> > ~/.bashrc 我的问题是:有没有一种方法可以nc -l <port>在我的第一行中使用/ dev / tcp而不是模仿它的功能nc? 我正在使用的计算机是非常坚固的实验室/沙盒环境RHEL(没有ssh,没有nc,没有LDAP,没有yum,我无法安装新软件,并且它们没有连接到Internet)

3
每个基于Linux的发行版中可用哪些标准命令?
我想知道每个Linux系统中可用的标准命令。 例如,如果您获得了debian / ubuntu / redhat / suse / arch / slackware等,您将始终在其中找到以下命令: cd,mkdir,ls,echo,grep,sed,awk,ping等 我知道所提到的某些命令是shell内置的,而其他命令却不是,但是它们仍然始终存在(根据我到目前为止的知识和经验)。 另一方面,默认情况下,诸如gawk,parted,traceroute和其他非常著名的命令之类的命令不会安装在不同的Linux发行版中。 我进行了不同的网络搜索,但没有找到直接的答案。 目的是我要创建一个shell脚本,并且应该对系统中是否可用该脚本中使用的命令进行一些检查。如果没有,它将提示用户安装所需的二进制文件。

7
通过sudo和su运行时,为什么PATH变量不同?
在我的fedora VM上,使用用户帐户运行时/usr/local/bin,我的路径是: [justin@justin-fedora12 ~]$ env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin 同样在运行时su: [justin@justin-fedora12 ~]$ su - Password: [root@justin-fedora12 justin]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin 但是,当通过运行时sudo,该目录不在路径中: [root@justin-fedora12 justin]# exit [justin@justin-fedora12 ~]$ sudo bash [root@justin-fedora12 ~]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin 为什么通过via运行时路径会有所不同sudo?

2
为什么使用&&比if ... fi快75倍,以及如何使代码更清晰
我有以下工作代码: largest_prime=1 for number_under_test in {1..100} do is_prime=true factors='' for ((divider = 2; divider < number_under_test-1; divider++)); do remainder=$(($number_under_test % $divider)) [ $remainder == 0 ] && [ is_prime ] && is_prime=false && factors+=$divider' ' done [ $is_prime == true ] && echo "${number_under_test} is prime!" || echo "${number_under_test} is …

4
是否有一个简单的Bash工具可以快速呈现基本HTML?
我不时需要做一个简单的任务,将基本的HTML输出到控制台。我希望将其最小化渲染,以使其一目了然。是否有一个实用程序可以在外壳程序中处理基本的HTML渲染(想想Lynx样式的渲染-但不是实际的浏览器)? 例如,有时我会watch在Apache mod_status页面上放一个: watch -n 1 curl http://some-server/server-status 该页面的输出是带有一些最小标记的HTML,在shell中显示如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html><head> <title>Apache Status</title> </head><body> <h1>Apache Server Status for localhost</h1> <dl><dt>Server Version: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.15 with Suhosin-Patch</dt> <dt>Server Built: Jul 22 2014 14:35:25 </dt></dl><hr /><dl> <dt>Current Time: Wednesday, 19-Nov-2014 15:21:40 UTC</dt> <dt>Restart Time: Wednesday, 19-Nov-2014 …



15
* nix的面向对象的外壳
前言:我喜欢bash,无意发动任何形式的争论或圣战,希望这不是一个非常幼稚的问题。 这个问题与有关超级用户的帖子有些相关,但是我不认为OP真正了解他的要求。我在FreeBSD,Linux,OS X和Windows上的cygwin上使用bash。我最近在Windows上使用PowerShell也有丰富的经验。 * nix的外壳是否已经存在或正在开发中,并且与bash兼容,但是在混合中添加了一层面向对象的脚本编制?我所知道的唯一接近的是python控制台,但据我所知它并不提供对标准Shell环境的访问。例如,我不能只是cd ~和ls,而是chmod +x file在python控制台中。我将不得不使用python来执行那些任务,而不是标准的unix二进制文件,或者使用python代码调用二进制文件。 是否存在这样的外壳?

3
管道式xargs后的管道命令
HP-UX ***** B.11.23 U ia64 ****无限用户许可证 find . -type d -name *log* | xargs ls -la 给我目录名称(目录名称中包含log的目录名称),后跟该目录中的所有文件。 该目录 /var/opt/SID/application_a/log/, /var/opt/SID/application_b/log/, /var/opt/SID/application_c/log/等包含日志文件。 我只希望该ls命令列出两个最新的日志文件,通常可以使用来找到ls -latr | tail -2。 输出必须是这样的。 /var/opt/SID/application_a/log/ -rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1 -rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2 /var/opt/SID/application_b/log/ -rw-rw-rw- 1 user1 …
38 shell  find  pipe  xargs 

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.