标签: bash

如何在已经运行的现有命令完成后运行命令?

如果我启动一个需要很长时间的脚本,我不可避免地会在启动脚本后意识到这一点,并希望我有办法在它完成后做某种警报。

因此,例如,如果我运行:

really_long_script.sh
Run Code Online (Sandbox Code Playgroud)

然后按回车...完成后如何运行另一个命令?

linux terminal bash

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

命令“ls -d”不显示目录。有没有办法让“ls”只显示目录而不是文件和目录?

有没有办法ls只显示目录而不是文件和目录?

从手册页:

   -d, --directory
          list directory entries instead of contents, and do not  derefer?
          ence symbolic links
Run Code Online (Sandbox Code Playgroud)

因此,如果我在/目录中键入它,我希望只看到目录。相反,它显示“。”

$ cd /
$ ls -d
.
Run Code Online (Sandbox Code Playgroud)

我期待ls -d向我展示这个:

$ ls -d
bin    data  home        opt    sbin  sys      var
boot   dev   lib         media  proc  selinux  tmp
cdrom  etc   lost+found  mnt    root  srv      usr
Run Code Online (Sandbox Code Playgroud)

有没有办法ls只显示目录而不是文件和目录?

linux bash ls

44
推荐指数
5
解决办法
7万
查看次数

bash_profile 或 bashrc 中的环境变量?

我发现这个问题 [博客]:.bashrc 和 .bash_profile 之间的区别非常有用,但在看到投票最多的答案(顺便说一句非常好)后,我还有其他问题。在投票最多的正确答案结束时,我看到以下声明:

请注意,您可能会在这里和那里看到将环境变量定义放在 ~/.bashrc 中或始终在终端中启动登录 shell 的建议。两者都是坏主意。

  1. 为什么这是一个坏主意(我不是想打架,我只是想了解)?

  2. 如果我想设置一个环境变量并将其添加到 PATH(例如 JAVA_HOME)中,它是放置导出条目的最佳位置?在~/.bash_profile~/.bashrc 中

  3. 如果问题 2 的答案是~/.bash_profile,那么我还有两个问题:

    3.1. 你会在~/.bashrc下放什么?只有别名?

    3.2. 在非登录 shell 中,我相信~/.bash_profile没有被“拾取”。如果 JAVA_HOME 条目的导出在 bash_profile 中,我是否能够执行javacjava命令?它会在 PATH 上找到它们吗?这就是为什么某些帖子和论坛建议将 JAVA_HOME 等设置为~/.bashrc 的原因吗?

    提前致谢。

bash path environment-variables bashrc .bash-profile

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

WSL Bash 无法启动

过去几周我一直在使用 Windows 10 的Windows 子系统 Linux bash(Ubuntu 通过 Microsoft Store),没问题,很棒的功能,再高兴不过了。

但今天它突然停止工作。bash在命令行(cmd和 PowerShell)上打字什么都不做,就好像它在等待什么一样。它不会崩溃或输出错误消息,只是一直显示闪烁的光标。

在此处输入图片说明

(光标在屏幕截图上不可见,它_在 之后的下一行闪烁bash

任务管理器在 0% CPU 下显示两个命令行,“Microsoft Bash Launcher”进程也在 0% CPU 下显示:

在此处输入图片说明

知道如何调试和解决这个问题吗?

更新:经过几次手动重启和一次“崩溃”(我认为explorer.exe已经停止,并且在提示后终止进程后并没有真正回来)现在它现在又可以工作了。
几周前我遇到了这个问题(我修复它的地方是重新安装 WSL),所以我认为它迟早会重新出现。

bash windows-10 windows-subsystem-for-linux windows-10-v1709

44
推荐指数
2
解决办法
7万
查看次数

Bash:创建匿名fifo

我们都知道mkfifo和管道。第一个创建了一个命名管道,因此必须选择一个名称,最有可能与mktemp之后记得取消链接。另一个创建了一个匿名管道,没有命名和删除的麻烦,但是管道的末端被绑定到管道中的命令,以某种方式获取文件描述符并在其余部分使用它们并不是很方便的脚本。在编译的程序中,我会这样做ret=pipe(filedes);在 Bash 中有很多exec 5<>file人会期待类似的东西,"exec 5<> -"或者"pipe <5 >6"- 在 Bash 中有类似的东西吗?

script bash pipe

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

如何使用 ls 仅列出非空文件?

如何ls使用 linux列出(使用)所有非空文件(大小 > 0)?

linux bash shell command-line ls

43
推荐指数
5
解决办法
8万
查看次数

将所有匹配模式的文件从 dir 和 subdirs 复制到单个目录中

如果我想将所有*.so文件复制srcdst我会这样做:

cp src/*.so dst
Run Code Online (Sandbox Code Playgroud)

但是,我想将*.sosrc 中的所有文件及其子目录复制到dst. 有什么线索吗?

linux bash

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

如何修复 Broken Pipe 错误?

我最近在获得 SSD 驱动器后重新安装了 Ubuntu 12.10 后重新安装了 RVM(按照http://rvm.io 上的说明进行操作)。

现在,当我输入: type rvm | head -1

我收到以下错误:

rvm is a function
-bash: type: write error: Broken pipe
Run Code Online (Sandbox Code Playgroud)

但是,如果我立即重复该命令,那么我只会收到:

rvm is a function
Run Code Online (Sandbox Code Playgroud)

而且看起来一切正常?发生了什么?我能做些什么来修复它?它并不总是发生。它似乎更加零星。我试图找到某种模式,但还没有。

bash ruby .bash-profile rvm

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

如何配置 ConEmu 以运行 Cygwin Bash?

我创建了一个新任务

{重击}

通过我的主目录

/dir "C:\Users\TMB\"

并添加 bash 作为应用程序

C:\cygwin\bin\bash.exe

当我打开 Bash 时,它无法使用基本的 UNIX/Cygwin 实用程序。如何配置 ConEmu 以运行 Cygwin Bash?

windows-7 cygwin bash conemu

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

如果失败,如何自动重启linux后台进程?

我有一个由 init.d 脚本在后台执行的进程。例如:

case "$1" in 
    start)
       /bin/myprocess &
    stop)
       killall myprocess
    restart)
       killall myprocess
       /bin/myprocess &
esac
Run Code Online (Sandbox Code Playgroud)

在某些情况下,myprocess 可能会失败并返回。是否有任何(标准)方法来检测其故障并自动重新启动?

linux bash process daemon

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