我正在从 AIX 迁移到 Solaris 10,但是/bin/sh那里的版本太旧了,我们的脚本无法运行。我可以以某种方式强制 perl 通过不同的 shell(在我的情况下,/bin/ksh)在 `` 中执行命令吗?
我有很多地方有系统调用,所以在每个地方都改变它们不是很可行。找到一些全局设置或其他东西会很棒。
我想比较运行 Linux (Centos) 的服务器 - 明智的 CPU。
我想把所有 cpus bogomips 的总和进行比较,但只能想出这个丑陋的外壳线:
echo 0 `cat /proc/cpuinfo | grep bogomips | cut -d ":" -f 2 | tr " " "+" `| bc
Run Code Online (Sandbox Code Playgroud)
(需要 0,否则该行以 + 开头,不适合 bc)
有没有更好的方法来做到这一点?
我在一个目录中有几百个文本文件,其中包含用户列表:
&usera
&userb
userc
&userd
Run Code Online (Sandbox Code Playgroud)
请注意,有些不带&. 此外,在某些文件中,最后一行不以换行符结尾。
在 shell 脚本中遍历所有这些文件并删除,例如userb确保每个现有用户保留在自己的行上的最简单方法是什么?
谢谢!
在 linux 中,我可以使用反斜杠在命令中使用换行符,以提高 shell 脚本等的可读性:
ls -l \
--reverse \
--human-readable \
--full-time
Run Code Online (Sandbox Code Playgroud)
这在DOS中可能吗?
谢谢
为了修改我的路径(如 LD_LIBRARY_PATH 或 PYTHONPATH),我首先检查变量是否存在。如果是这样,我将旧值与新值连接起来(用分号分隔),否则我将变量设置为新值。
NEW_PATH='/path/to/new/path'
if [ $LD_LIBRARY_PATH ]
then
export LD_LIBRARY_PATH=$NEW_PATH:$LD_LIBRARY_PATH
else
export LD_LIBRARY_PATH=$NEW_PATH
fi
Run Code Online (Sandbox Code Playgroud)
它有效,但是当你在脚本中有很多这些源代码时它有点笨拙:是否有一个聪明的技巧可以使这个块成为一个很好的单衬?
谢谢 !
我希望在执行命令时附加 & 符号到特定命令(比如 tkdiff)的末尾。
请让我知道我应该在 bashrc 中创建什么样的别名/任何其他解决方案。
提前致谢。
注意:我执行的命令可能有几个参数。& 应该放在最后,以便我可以在 b/g 中执行,并且可以将 shell 用于任何其他目的。
我应该向初学者介绍如何使用 shell(即 bash)。我可以在 1 1/2 小时内教给某人而不要求太多的最基本/最有用的东西是什么?
以下是我想到的几点:
编辑
我所说的全部初学者是指 Unix/Linux 的全部初学者 :-)。
当我使用这些 shell 命令时:
[root@linux /tmp]# a=$$
[root@linux /tmp]# echo $a
3985
Run Code Online (Sandbox Code Playgroud)
值 3985 来自哪里?为什么?
我有 2 个用户想要禁用终端访问,但仍保留 ftp 访问权限。我该如何实现?
编辑
忘了提,我正在使用 vsftpd。
假设我想替换某个字符串的第 n 个字母,我该怎么做?
我试过这样的事情,但它不正确:
#!/bin/bash
index= # let say 2
s='Hello'
echo ${s/$index/'a'} # This should print Healo
Run Code Online (Sandbox Code Playgroud) shell ×10
linux ×5
bash ×4
scripting ×2
ubuntu ×2
bourne-shell ×1
ftp ×1
ms-dos ×1
path ×1
perl ×1
sed ×1
solaris-10 ×1
unix ×1
unix-shell ×1