Articles of unix

在OSX上安装的新版本的git,但没有被使用。 我怎样才能find它并使用它?

我正在尝试将git从默认的mac版本更新到更新的版本。 我已经安装了一个更新的版本(如下所示),但我不知道它在哪里。 Aarons-iMac:~ AaronWilliamson$ cd Aarons-iMac:~ AaronWilliamson$ git –version -bash: git: command not found Aarons-iMac:~ AaronWilliamson$ brew upgrade git Error: git 2.2.2 already installed 如何findgit 2.2.2的安装path,以便我可以使用它? 我是一个初学者,正在理解环境variables和$ PATHvariables的概念。 作为参考,这里是我的.bash_profile的内容 export PATH=/bin:/usr/local/bin:$PATH export PATH="/usr/local/bin:$PATH" source /usr/local/opt/chruby/share/chruby/chruby.sh source /usr/local/opt/chruby/share/chruby/auto.sh export PATH=./bin:/usr/local/bin:$PATH source /usr/local/opt/chruby/share/chruby/chruby.sh source /usr/local/opt/chruby/share/chruby/auto.sh source ~/.profile export PGDATA=/usr/local/var/postgres export PGHOST=/tmp export PGDATA=/usr/local/var/postgres export PGHOST=/tmp export PGDATA=/usr/local/var/postgres […]

Bash修改一个variables

我有一个命令,我正在执行,这个命令存储在一些variables,而这个variables,存储这个命令存储另一个variables事情是当我改变我的第二个variables,它不是dynamic地改变我的第一个variables,所以正在执行的命令总是使用相同的variables。 这是我的代码: test="test" TEMP_STR="doesn't exist" checkClient=`p4 client -o -t $test 2>&1` echo this is the output: "$checkClient" test="${test}_2" echo echo this is the new client name "$test" echo this is the new output: "$checkClient" 这是输出: this is the output: Client 'test' doesn't exist. echo this is the new client name test_2 this is the new […]

在Linux中使用Awk比较两个文件

我有两个文件,文件A和文件B.文件A的结构如下所示: 3314530275|76|1|20240422045006| 3335984469|64|2|20150804235959| 3367892381|203|3|20141025235959| 3369039388|203|4|20131219235959| 第二个文件B的内容如下: 3314530275|2000|999000000073101614|0|20370101000000|76| 3314530275|2000|999000000073101614|0|20370101000000|76| 3369039388|2000|812000002628721|-112|20360101235959|203| 3335984469|5037|5210367877660|180|20150213000000|64| 3335984469|5048|5210367877661|6|20150213000000|64| 3335984469|2000|812000002629182|1913|20360101235959|64| 3367892381|5014|5210365185964|419430400|20150308000000|203| 3367892381|5044|5210365185965|226020|20150308000000|203| 3367892381|2000|817000102009605|0|20360101235959|203| 脚本应该首先检查文件A,如果第三个字段($ 3)等于2,则应该存储第一个($ 1)和第四个列($ 4)的值。 之后,它将检查$ 1值(第二个文件)是否存在于我们在第一步中存储的值中。 如果该值存在,并且第二个字段等于2000,则它应该打印$ 1,$ 2,$ 4(从第一个文件中获得并存储它的第四列的值) 如果该值存在且第二个字段不等于2000,则应打印$ 1,$ 2,$ 4,$ 5 上述情况下的输出示例: 3335984469|5037|180|20150213000000| 3335984469|5048|6|20150213000000| 3335984469|2000|1913|20150804235959| 这是我迄今为止: awk -F \| 'FNR==NR {if($3 == 2) a[$1] = $4; next} ($1 in a) {if($2==2000) print$1"|"$2"|"$4"|"a[$1]"|"} ($1 in a) {if($2!=2000) […]

修改可执行文件的链接path

ldd实用程序显示二进制可执行文件所依赖的共享目标文件,还显示文件系统上该二进制可执行文件的path。 是否有可能修改这个path,在现有的可执行文件? 例如,假设我有一个二进制“foo.so”,我说: libssl.so.0.9.8 => /opt/lib64/libssl.so.0.9.8 如果我将这个.so文件部署到指定path中没有 lbssl.so.0.9.8的机器上, 那么当使用foo.so时,我当然会得到一个链接器错误。 那么,是否可以修改现有可执行文件上的链接path? 我意识到另一个解决scheme是确保现有的链接path指向一个有效的目标文件,实际上是将目标文件复制到ldd显示的path。 但是让我们说,我有一个不可行的情况。 是否有可能修改现有的可执行文件的链接path?

我怎样才能find一个系统上的所有版本的Unix程序?

这是在课程上,我卡住了: 许多系统都有一个以上的实用程序版本,用户可以select他们想要的。 build议一个命令来查找系统上make所有版本。 什么决定了用户实际获得哪一个? 用户如何覆盖默认值? 你会怎么做?

与通配符rm显示我taskset帮助输出

我试图用Unix命令rm和通配符*来删除一堆文件夹。 令人困惑的是,shell并没有删除我的文件夹,而是为我显示了taskset命令的帮助输出。 任何人都可以解释吗? (master)dbliss@nx1[dist_exp]> rm -r 8*/8*_task_results taskset (util-linux-ng 2.17.2) usage: taskset [options] [mask | cpu-list] [pid | cmd [args…]] set or get the affinity of a process -p, –pid operate on existing given pid -c, –cpu-list display and specify cpus in list format -h, –help display this help -V, –version output version information The […]

使用Readline注释掉bash中的命令行

情况 我正在写一个非常长的命令,并最终意识到我忘记了满足这个命令的先决条件。 我想在某个地方存储这个命令,执行所有的要求,恢复命令并执行它。 注意:我想让命令留在屏幕上 这里是一个例子: $ a very long command –path some_path and more arguments 所以假设这个命令要求some_path是一个现有的目录。 但是,在编写命令时,我意识到我还没有创build该目录,所以在执行命令之前,我必须mkdir some_path 。 要求 我想能够做的是以下几点: $ a very long command –path some_path and more arguments [keystroke -> comment] $ mkdir some_path $ [up] [up] [keystroke -> uncomment] 要么… $ a very long command –path some_path and more arguments [keystroke […]

Unix – 文件名开头的空格

我怎样才能grep一个文件名称的开头已经命名空白,然后重命名没有空格? 顺便说一句,还有其他的文件,其中包含“file1”的名称,ls -l“File1”将显示所有名称为“File1”的文件。 $ls -l drwxr-xr-x 2 root root 1515 Apr 8 01:36 File1 drwxr-xr-x 2 root root 1515 Apr 8 01:49 File1 drwxr-xr-x 2 root root 2343 Apr 8 01:54 File3 drwxr-xr-x 2 root root 2303 Apr 8 01:59 File4 drwxr-xr-x 2 root root 2303 Apr 8 01:59 Another_File1 正如你所看到的,在“File1”的开头有一个空格。 如何将“File1”重命名为“Bad_File1”? 谢谢

“mount”命令中的“none”是什么意思?

以下命令使我困惑: # mkdir /dev/mqueue # mount -t mqueue none /dev/mqueue 什么意思?

在C ++中,我可以使用multithreading工具将UNIX信号与主程序同步吗?

使用sigaction设置的信号处理程序是否在自己的线程中运行? 我可以使用Pthreads工具来同步我的信号处理程序与我的主程序,如Pthreads mutexes吗? 我可以使用C ++ 11工具,如mutex和atomic ? 对不起,如果问题有点过于笼统,但我真的很困惑信号和线程之间的关系。 我正在研究Linux,但是这个问题一般适用于UNIX。