小编jan*_*nos的帖子

在多个平台上找到正确的 tmp 目录

I have a script that needs to create temporary files for its work, and clean up after itself. My question is about finding the right base directory for the temporary files.

The script needs to work on multiple platforms: Git Bash (Windows), Solaris, Linux, OSX. On each platform, the preferred temp directory is expressed differently:

  • Windows: %TMP% (and possibly %TEMP%)
  • OSX: $TMPDIR
  • Linux, UNIX: supposed to be $TMPDIR but appears to be unset on multiple systems I tried

So …

directory shell-script tmp

57
推荐指数
3
解决办法
3万
查看次数

导出的 shell 变量和不在 bash 中的变量之间的区别

Bash 似乎区分已导出的变量和未导出的变量。

例子:

$ FOO=BAR
$ env | grep FOO
$ set | grep FOO
FOO=BAR
Run Code Online (Sandbox Code Playgroud)

set看到变量但env没有。

$ export BAR=FOO
$ env | grep FOO
BAR=FOO
$ set | grep FOO
BAR=FOO
FOO=BAR
Run Code Online (Sandbox Code Playgroud)

set看到两个变量,但env只看到导出的变量。

我知道这set是一个内置的 bash 而env不是。

导出的变量和不导出的变量之间有什么区别?

shell environment-variables

52
推荐指数
1
解决办法
2万
查看次数

Solaris 中 date --reference 的等效项

date命令的 GNU 实现有一个很好的功能,可以显示参考文件的最后修改日期。然后使用该+FORMAT参数可以轻松获取任何格式的日期,例如:

date -r /etc/motd +%Y%m%d_%H%M%S
# output in the format: 20121001_171233
Run Code Online (Sandbox Code Playgroud)

在 Solaris 中是否有类似的东西?作为一种解决方法,我使用这样的stat功能来做到这perl一点:

perl -mPOSIX -e 'print POSIX::strftime("%Y%m%d_%H%M%S\n", localtime((stat("/etc/motd"))[9]))'
Run Code Online (Sandbox Code Playgroud)

另一种选择是解析输出ls -Ego

ls -Ego /etc/motd | awk '{print $4 "_" $5}' | tr -d :- | sed -e 's/\..*//'
Run Code Online (Sandbox Code Playgroud)

ls众所周知,解析 的输出是一种不好的做法。

有更好/更简单/更优雅的解决方案吗?

shell solaris stat date

6
推荐指数
1
解决办法
2546
查看次数

在文件中用字符串替换或附加一行

我正在寻找有关如何在文件中搜索字符串的一部分并替换整行或将该字符串附加到该文件(如果未找到)的建议。我现在用 sed “玩”了一段时间,但无法让它按预期工作。

我需要补充:

/swapfile   none    swap    sw    0   0
Run Code Online (Sandbox Code Playgroud)

/etc/fstab(在Ubuntu 14.04 - Trusty Tahr 上)。

状况:

  • 如果/swapfile中存在以开头的任何行/etc/fstab,请删除该行并替换为上面提供的字符串
  • 如果/swapfile发现多于一行,将它们全部删除并将上面的字符串附加到文件末尾
  • 如果 中不/swapfile存在/etc/fstab,则将字符串附加到/etc/fstab
  • 该命令不得显示控制台输出,并且必须是“单行”(由于 puppet 的自动化目的)

我相信这是可能的,但我只是没有找到有关以我需要的方式使用 sed 的相关教程。

我使用过,sudo sed -i '$a/swapfile none swap sw 0 0' /etc/fstab 但这只会附加字符串:(

sed text-processing

4
推荐指数
1
解决办法
2890
查看次数

使用CURL通过POST参数传输二进制数据

如何使用 CURL 通过特定的 post 参数发送二进制数据?例如在:

curl 'http://www.example.com' -H 'hi:hi' --data 'utf8=%E2%9C%93&_method=put&file=binarydatahere&submit=confirm'
Run Code Online (Sandbox Code Playgroud)

我想通过文件参数发送二进制数据,我听说过该--data-binary @myfile.bin方法,但我不知道如何指定二进制数据通过哪个参数。

linux bash binary curl data

4
推荐指数
1
解决办法
1万
查看次数