小编Hau*_*ing的帖子

如何在shell脚本中创建临时文件?

在运行脚本时,我想在/tmp目录中创建一个临时文件。

执行该脚本后,该脚本将清除该脚本。

如何在shell脚本中做到这一点?

shell-script tmp

243
推荐指数
5
解决办法
24万
查看次数

较少的搜索总是不区分大小写的

试图找出如何使用不区分大小写的搜索,less在 serverfault 上找到了这个

这似乎完美地回答了我的问题。问题是:它在这里不起作用(OpenSUSE 13.1;少于 458)。

我有别名lessless -WiNS但我改变了。但即使称之为 ascommand less file也不会改变任何东西。我已经检查过命令行中ps不再有任何-i选项。

正如答案所说,less帮助(按h)指出我也可以-i在 内使用less。如果我使用一次,然后less告诉我它已更改为不区分大小写的搜索(这是正确的:没有任何变化)。如果我使用它两次,然后less告诉我它已转向区分大小写的搜索。是的,那么它从一开始就可以正常工作。但是-i,在命令行上提供两次不起作用。

这是怎么回事?

less case-sensitivity

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

为什么远程 Bash 源 .bash_profile 而不是 .bashrc

Bash手册说:

Bash 尝试确定它何时在其标准输入连接到网络连接的情况下运行,如由远程 shell 守护程序(通常rshd)或安全 shell 守护程序执行时sshd。如果 Bash 确定它正在以这种方式运行,它会读取并执行来自 的命令~/.bashrc(如果该文件存在且可读)。

这个 Bash 来源~/.bashrc

ssh user@host :
Run Code Online (Sandbox Code Playgroud)

但是这个 Bash 来源~/.bash_profile

ssh user@host
Run Code Online (Sandbox Code Playgroud)

根据规范,我没有看到这两个命令的区别。在这两种情况下,stdin 是否都连接到网络连接?

bash ssh

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

每个套接字都有一个文件吗?

UNIX 世界中的“一切都是文件”。

上面这句话很有名。当我运行时echo "hello programmer" >> /dev/tty1,我可以在TeleType 1 ...上观看给定的字符串。

每个文件是什么以及在哪里socket?假设我的朋友连接到我的电脑,它的 IP 是h.h.h.h,我如何访问相应的文件?是否可以?

kernel files socket

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

连接关闭时如何远程终止称为“tail -f”?

我只是注意到,如果我执行ssh user@remote_host tail -f /some/filetail -f /some/file即使 ssh 连接关闭,它也会继续在 remote_host 上运行!

因此,经过多次连接和断开连接后,运行的次数会tail -f /some/file增加。tail -fssh 连接关闭时如何实际终止?

process ssh terminal signals

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

tee 标准输出到标准错误?

我想将标准输出从一个进程发送到另一个进程的标准输入,但也发送到控制台。例如,将 stdout 发送到 stdout+stderr。

例如,我的git edit别名如下:

git status --short | cut -b4- | xargs gvim --remote
Run Code Online (Sandbox Code Playgroud)

我希望将文件名列表发送到屏幕以及xargs.

那么,是否有类似tee的实用程序可以做到这一点?这样我就可以执行以下操作:

git status --short | \
    cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
    xargs gvim --remote
Run Code Online (Sandbox Code Playgroud)

io-redirection tee stdout stdin

21
推荐指数
2
解决办法
4535
查看次数

接口范围(全局与链接)用于什么?

路由表条目有一个属性scope。我想知道从globallink(或相反)的变化如何影响网络系统。

linux networking routing

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

文件权限只执行

如何将文件设置为仅对其他用户可执行但不可读写,原因是我正在使用我的用户名执行某些操作,但我不想给出密码。我试过 :

chmod 777 testfile
chmod a=x
chmod ugo+x
Run Code Online (Sandbox Code Playgroud)

以其他用户身份执行时,我仍然获得权限被拒绝。

linux security permissions executable

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

可以防止程序启动时的熵消耗吗?

我使用 Knoppix(或其他 Live CD/DVD)作为创建有价值的加密密钥的安全环境。不幸的是,熵在这种环境中是一种有限的资源。我只是注意到每个程序启动都会消耗相当多的熵。这似乎是由于某些需要地址随机化的堆栈保护功能。

不错的功能,但完全没用,而且 - 更糟糕的是 - 在我的场景中具有破坏性。有没有可能禁用这个功能?我更喜欢一种允许我继续使用原始 Knoppix(或其他)图像并且只需要在运行时进行一些配置的图像。

我读到这是由 glibc 引起的。我很惊讶strace -p $PID -f -e trace=open当我启动程序时,反对 bash 没有显示对 /dev/random 的任何访问。但我不熟悉 execve() 和链接器的交互。

linux security kernel

13
推荐指数
1
解决办法
444
查看次数

无法关闭 Luks 分区

出于备份目的,我“快照”了一个 LVM 分区。这个分区是加密的,所以我打开了这个 Luks 分区(快照)来做我的备份。

问题是我忘记删除快照,因此它达到了100%的使用率。

当我尝试删除快照时:

lvremove /dev/mapper/vgx-LogVolDBSnapshot
/dev/vgx/LogVolDBSnapshot: read failed after 0 of 4096 at 375809572864: Input/output error
/dev/vgx/LogVolDBSnapshot: read failed after 0 of 4096 at 375809630208: Input/output error
/dev/vgx/LogVolDBSnapshot: read failed after 0 of 4096 at 0: Input/output error
/dev/vgx/LogVolDBSnapshot: read failed after 0 of 4096 at 4096: Input/output error
/dev/mapper/SnapshotDecrypted: read failed after 0 of 4096 at 375807475712: Input/output error
/dev/mapper/SnapshotDecrypted: read failed after 0 of 4096 at 375807533056: Input/output error
/dev/mapper/SnapshotDecrypted: read failed after 0 …
Run Code Online (Sandbox Code Playgroud)

partition io lvm cryptsetup disk

13
推荐指数
1
解决办法
4766
查看次数