Articles of bash

完整性检查SSH公钥?

我已经向用户询问了他们的公共“id_rsa.pub”ssh密钥,然后我把它放在“/home/theiraccount/.ssh/authorized_keys”,这样他们就可以通过SSHlogin服务器了。 我想自动化这个过程。 反正有理智检查他们给我的string(以编程或其他方式)? 我想validation,sshd可以读取文本,而且它看起来像一个有效的公钥(并没有被损坏)? 换句话说, id_rsa.pub文件的格式是什么? 如果有人在字段中input,我可以在表单处理程序脚本中写什么来validation它是否完整和正确?

在bash中打开默认的文本编辑器?

我正在写一个shell脚本,遇到了一个问题。 有没有办法使用用户指定的文本编辑器打开文件?

如何从PHP cli获得Linux控制台$ COLUMNS和$ ROWS?

我目前正在为PHP创build一个新的整齐的CLI库,我想弄清楚它正在运行的控制台的宽度/高度。 我已经尝试了很多东西,比如挖掘$ _ENV,exec(“echo $ COLUMNS”)等,但没有结果,而如果在bash命令行中inputecho $ COLUMNS或$ ROWS,它会整齐地显示值。 我需要做什么才能从PHP访问这个值? 我正在使用这样的.sh脚本: #!/usr/bin/php -q <?php require_once('lib.commandline.php'); class HelloWorld extends CommandLineApp { public function main($args) { echo('O, Hai.'); } } 更新最终解决scheme public function getScreenSize() { preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output); if(sizeof($output) == 3) { $this->settings['screen']['width'] = $output[1][0]; $this->settings['screen']['height'] = $output[2][0]; } }

shell脚本工作正常,没有shebang线? 为什么?

我正在写一个简单的shell脚本,发现我的shell脚本不需要shebang行 #!/bin/sh 如果我给予我的脚本执行权限并执行使用./myscript.sh 。 它运行良好。 我正在使用bash shell, /bin/sh实际上是指向bash 。 lrwxrwxrwx 1 root root /bin/sh -> bash 我知道shebang行用于告诉shell哪个解释器用于脚本的其余部分。 如果我错过了perl中的shebang行,给予执行权限并运行./myscript.pl ,它不起作用。 这里究竟发生了什么? 如果我用./ ,什么时候真的需要?

我如何计算bashvariables中的字符数量

我如何计算bashvariables中的所有字符? 所以例如,如果我有 "stackoverflow" 结果会是 "13" 我search了谷歌,但到目前为止只能找出如何计算特定字符(例如说字母“a”), 谢谢你的帮助!

将CSV中的第三个字段与GNU Linux(AWK / SED / GREP)中的模式文件进行匹配

当第三个字段与模式文件中的模式匹配时,我需要在CSV文件中打印所有行。 我已经尝试grep没有运气,因为它与任何领域不仅匹配第三。 grep -f FILE2 FILE1 > OUTPUT FILE1 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 asdasd,0,85249,1,lkjiou,52874 dasdas,1,48555,0,gfdkjh,06793 sadsad,0,98745,1,gfdkjh,45346 asdasd,1,56321,0,gfdkjh,47832 FILE2 00567 98745 45486 54543 48349 96349 56485 19615 56496 39493 正确的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,0,98745,1,gfdkjh,45346 错误的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 <—- I don't want this to appear sadsad,0,98745,1,gfdkjh,45346 我已经到处search,尝试不同的公式。 编辑:感谢Wintermute,我设法写这样的事情: csvquote file1.csv > file1.csv awk -F '"' 'FNR == NR { patterns[$0] = […]

Bash printf前缀

在Bash中,我可以使用printf来格式化一个string输出,如下所示: – (注意我为string添加了一个后缀W ,这不包括在填充中) $ printf "Blah %11.1fW\n" 123 456 78965 5 56 Blah 123.0W Blah 456.0W Blah 78965.0W Blah 5.0W Blah 56.0W 如果我想在string前缀,我可以这样做: – $ printf "Blah £%11.1f\n" 123 456 78965 5 56 Blah £ 123.0 Blah £ 456.0 Blah £ 78965.0 Blah £ 5.0 Blah £ 56.0 但是请注意,这是如何在前缀之前应用填充的。 如何(如果可能的话)我会使用printf来填充前的值,所以输出如下: – Blah £ 123.0 […]

需要ps的pri标准格式说明符的解释 – 可能在文档中的错误

ps手册页上的pri注释: “pri优先级的过程。更高的数字意味着更低的优先级” 在这里考虑PID 26073 $ renice +15 26073 26073: old priority 5, new priority 15 # I am making this process more nice $ ps -t 1 -o pid,ppid,%cpu,stat,cmd,bsdstart,time,pri PID PPID %CPU STAT CMD START TIME PRI 9115 18136 0.0 Ss bash 17:10 00:00:01 19 26073 9115 12.0 RN+ p4 sync 19:06 00:02:56 4 STAT […]

Ansible:将一个唯一的文件复制到组中的每个服务器

我有一系列编号的文件由每个服务器分别处理。 每个拆分文件使用Linux拆分,然后xz压缩以节省传输时间。 split_001 split_002 split_003 … split_030 我怎样才能将这些文件推送到一个有30个服务器的组中? 只要每个服务器都有一个唯一的文件,哪个服务器获取哪个文件并不重要。 我使用了一个bash文件,但我正在寻找一个更好的解决scheme。 希望使用可靠的。 然后我打算运行一个shell命令来运行at命令来启动几个小时或几天的计算。 scp -oStrictHostKeyChecking=no bt_5869_001.xz usr13@<ip>:/data/ scp -oStrictHostKeyChecking=no bt_5869_002.xz usr13@<ip>:/data/ scp -oStrictHostKeyChecking=no bt_5869_003.xz usr13@<ip>:/data/ … http://docs.ansible.com/ansible/copy_module.html # copy file but iterate through each of the split files – copy: src=/mine/split_001.xz dest=/data/split_001.xz – copy: src=/mine/compute dest=/data/ owner=root mode=0755 – copy: src=/mine/start.sh dest=/data/ owner=root mode=0755 – shell: […]

有条件的Awk hashmap匹配查找

我有2个表格文件。 一个文件包含一个名为lookup_file.txt的50个键值的映射。 另一个文件具有30列和数百万行的实际表格数据。 data.txt我想用lookup_file.txt中的值replace第二个文件的id列。 。 我怎样才能做到这一点? 我宁愿在bash脚本中使用awk。另外,有没有一个hashmap数据结构,我可以在bash中用来存储50个键/值而不是另一个文件?