Articles of bash

$ JAVA_HOMEpath在login时在〜/ bash_profile中找不到正确的path

login到我的CentOS 7虚拟机后,我的$ JAVA_HOME总是被设置为: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre ,这是不正确的。 我的〜/ .bash_profile读取: # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.144-0.b01.el7_4.x86_64/jre export JAVA_HOME PYCHARM_HOME=/opt/pycharm-community-2017.2.3/ export PYCHARM_HOME ECLIPSE_HOME=/opt/eclipse export ECLIPSE_HOME export SPARK_HOME=/opt/spark PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PYCHARM_HOME/bin:$ECLIPSE_HOME export PATH Sourcing .bash_profile每当我打开一个新的terminal似乎纠正这个问题,但为什么我的$ JAVA_HOMEpath在启动时默认为旧版本,而不是设置为.bash_profile中指定的目录?

在linux上完成密码字段scp命令

我写一个shell脚本来使用scp命令(ssh)将文件传输到计算机。 这显然是密码保护有没有一种方法,无论是…禁用密码或自动为客户完成密码? 这纯粹的易用性,我不知道是否有可能(即时通讯相当新的Linux),任何帮助或指针,将不胜感激。 提前致谢

更简单的方法来重复读取行和调用程序

我想反复读一行,并用行作为参数来调用一个程序,从而使一个非交互式的程序成为交互式的。 有没有比这更简单或更短的方式? while read line; do cowsay $line done

如何连接variables与Bash中的string?

我正在写一个bash脚本,我在下面的bash文件中使用了1个variables list=`/home/ea/students' 我在下面写了下面的链接,但是我得到了错误 cat $list /admin.txt 你知道我怎样才能连接variables和string?

用jq和引用值处理json数组

我试图编写一个脚本,对json对象数组做一些处理。 源json的简化版本看起来像这样。 请注意第二个对象中的转义双引号。 [ { "id": "1a-2b", "name": "my job name", "description": "my job description" }, { "id": "3c-4d", "name": "my \"quoted\" job name", "description": "my \"quoted\" job description" } ] 我的脚本目前尝试使用在我的search中find的“while read”成语来遍历源代码,如下所示。 while read job; do # fetch individual values into variables jobname=`echo $job | jq -r '.name'` # do processing on the individual […]

什么是最快的egrep

我需要从一个200万行的大型csv文件egrep,我想减lessegrep时间到0.5秒,这是可能的吗? 不,我不希望数据库(sqlite3或MySQL)在这个时候.. $ time wc foo.csv 2000000 22805420 334452932 foo.csv real 0m3.396s user 0m3.261s sys 0m0.115s 我已经能够将运行时间从40秒减less到1.75秒 $ time egrep -i "storm|broadway|parkway center|chief financial" foo.csv|wc -l 108292 real 0m40.707s user 0m40.137s sys 0m0.309s $ time LC_ALL=C egrep -i "storm|broadway|parkway center|chief financial" foo.csv|wc -l 108292 real 0m1.751s user 0m1.590s sys 0m0.140s 但我希望egrep实时不到半秒钟,任何技巧将不胜感激,文件不断变化,所以我不能使用任何caching机制…

bash Linux – 大量文件夹重命名

在我们的Linux文件服务器(RedHat Enterprise)上,我们有一些我们需要重命名的文件夹,这些文件夹中有客户端的工作。 旧的文件夹格式(需要更改的)是clientcode_jobnumberjobname 。 新格式是clientcode_jobnumber_jobname 。 我们基本上需要通过在jobnumber和jobname之间添加额外的下划线来更改旧的文件夹名称。 我们还将创build所有新的文件夹结构以新格式显示,因此不需要更改这些结构。 工作号码总是1个字母,后跟4个数字。 客户端代码是3-4个字母,具体取决于客户端。 每个工作的工作名称是不同的。 这些文件夹全部位于clients/clientname/jobs/clientcode/"folder that needs to be renamed" (只是脚本深入到结构中的示例)。 它将需要为每个客户端下的每个客户端clientcode执行此操作。 我将如何设置一个脚本来做到这一点? 任何帮助将大大apprciated。 我们有成千上万个需要重新命名的文件夹。

用shell查找pdf内部的string

我想知道是否有任何方法来检查是否有一个pdf文件中使用shell脚本的string? 我正在寻找像这样的东西: if [search(string,pdf_file)] > 0 then echo "exist" fi

在脚本中使用inotify来监视目录

我写了一个bash脚本来监视一个特定的目录“/ root / secondfolder /”脚本如下: #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done 当我在“/ root / secondfolder /”中创build一个名为“fourth.txt”的文件并写入内容时,保存并closures它,输出如下内容,但不回显“close_write”: /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt 有人能指出我的方向吗?

在linux中用batch file启动多个firefoxconfiguration文件

可以用firefox -P <profile-name> -no-remote启动不同的firefoxconfigurationfirefox -P <profile-name> -no-remote 但是,当我想同时在Linux中使用batch file启动多个configuration文件时,只有第一个configuration文件启动,并且后续configuration文件才会启动,直到退出前一个configuration文件。 目前我用这个批处理脚本不成功: #! /bin/bash firefox -P "profile 1" -no-remote firefox -P "profile 2" -no-remote firefox -P "profile 3" -no-remote 基本上, profile 1开始罚款,但profile 2不会启动,直到我先退出Firefox; 直到退出前一个命令才会执行。 在Windows中,我已经成功设法使用这个bat文件同时启动多个firefox: start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -P "profile 1" start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -P "profile 2" start "" "C:\Program Files […]