Articles of shell

从运行脚本中检测文件读/写

我会得到一些shell脚本,我不知道他们会做什么。 但是我需要知道脚本执行哪些I / O操作 (例如,他们读取/访问的文件,他们写入的文件,创build的文件夹等)。 一个例子是使用strace如下: input脚本: g++ -Wall a.cpp -o hello 我将运行它为: sudo strace -f -e trace=open g++ -Wall a.cpp -o hello 2> output.txt * 我想要什么:* output.txt将有跟踪和哪些文件已被访问(a.cpp和bh用于a.cpp,并输出hello) … [pid 13871] open("a.cpp", O_RDONLY|O_NOCTTY|O_LARGEFILE) = 3 [pid 13871] open("bh", O_RDONLY|O_NOCTTY|O_LARGEFILE) = 4 … [pid 13874] open("hello", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3 … 问题 1- strace不处理pipe道,所以如果我得到一个像mkdir d2 | […]

如何在Putty上使用putty远程连接gedit

我正努力通过远程连接使用Putty从Windows机器上使用gedit ,如果有人能find办法做到这一点真的Putty 。 有没有一种方法,我们可以使用gedit从Windows机器上使用putty远程连接?

如何在linux shell中存储nproc返回的值?

我试图将CPU的数量存储在一个Linux bash shell的variables中。 我知道nproc返回CPU的数量,但我似乎无法存储在一个variables中返回的值。 我相信这是一个简单的解决scheme,所以任何帮助,将不胜感激。 谢谢

如何陷阱全球bash on_error?

看来在Bash中的on_error陷阱只在它定义的函数范围内工作。例如运行这个脚本 #!/bin/bash on_error() { echo 'on_error' } f() { false echo 'function f' } g() { trap on_error ERR echo 'function g' false f } g 生产: function g on_error function f 有没有一种方法来捕获全局的on_error ,以便我不必将其分别陷入每个函数中?

在Bash中对方括号感到困惑

正如文档所描述的,Bash中的[set]可以匹配set中的任何字符, 在下面,我在当前目录中有3个dirs叫a,b,c: $ ls abc $ ls abc $ ls [abd]#就像预期的那样,显示dirs a和b A: b: $ ls [bd]#期待显示目录b但注意匹配 $ ls [ad]#期待show dir a但注意匹配 有人可以向我解释这个吗?谢谢!

在当前目录中运行expect脚本

我写了一个sftp expect脚本来上传和下载文件。 我把脚本文件放在一个文件夹中。 双击脚本运行脚本login远程服务器,但是每当我的脚本将login到主文件夹中的服务器而不是脚本所在的文件夹中。 #!/usr/bin/env expect set login "username" set addr "server.com" set pw "mypassword" set timeout -1 sleep 1 spawn sftp $login@$addr expect "Password:" {send "$pw\r"} sleep 1 interact 例如,我把这个脚本放在/ Desktop上,如果我想从我的本地机器的/ Desktop上传一些文件到我的服务器,我还是要cd到/ Desktop,然后运行这个脚本,如果我只是双击执行它会从〜或/ rootlogin到我的服务器的脚本,无论默认目录是什么。 我想从脚本所在的目录login我的服务器。 有什么方法可以find文件的位置? 或者我需要执行search来查找文件?

Bash脚本改变工作目录到它所在的目录

我读了一个Bash脚本可以告诉它存储在什么目录? ,它显示我可以通过DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"获取脚本目录DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 。 我发现我可以使用cd命令来改变工作目录。 这是import.sh的内容。 它位于/Users/gqqnbig/SourceCode/Java/PlayerStatisticReader/bin 。 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd DIR java -cp .;jsoup-1.7.3.jar;mysql-connector-java-5.1.29-bin.jar globalVisionEntertainment.nba.Program %1 这是执行脚本后得到的结果。 Macintosh:PlayerStatisticReader gqqnbig$ pwd /Users/gqqnbig/SourceCode/Java/PlayerStatisticReader Macintosh:PlayerStatisticReader gqqnbig$ bin/import.sh : command not found 2: : No such […]

如何在提供命令行参数时忽略目录和某些模式

我是一个Linux新手,我想知道是否有一个“单线”命令,允许我将目录中的所有内容链接到另一个目录,但忽略源目录中的子目录和某些通配符。 让我们来更具体的…让我们说,我想要链接/foo中的所有/bar/tmp在… ln -s /foo/* /bar/tmp/. …但是我要: 忽略/ foo中的任何子目录 忽略通配符运行runscript*任何文件runscript* 任何build议如何做到这一点?

为什么每次运行一个命令时都不会改变位置variables

我正在学习shell脚本,我有这种情况。 我们说位置variables是环境variables,但是为什么每次命令执行时都不会改变。 看看这个 set v1set v2set v3set v4set old=$# #Just a random command ls -l new=$# echo $old $new 它输出4 4 。 如果环境variables是全局的,为什么不是4 1 ,因为我运行ls -l ,它应该更新位置variables?

Bash评估:[vs ||

我有一个存储在一个文件中的PID: echo 394 > pid_stored 我正在检查一个pid是否正在运行: kill -0 $(cat pid_stored) 2> /dev/null || echo "PID not running" 这就像一个魅力,但如果我想在真或假的情况下做多个行动,我想我需要一个如果然后fi结构。 但是由于某种原因,我无法弄清楚[或者[不要用同样的方式来评估: if [[ $(kill -0 $(cat pid_stored) 2> /dev/null) ]] then echo "PID IS NOT RUNNING" fi 不起作用,它总是评估为真。 错误stream使用2>指向/ dev / null,因为如果pid存在或失败,则kill -0评估为true 谢谢!