标签: bash

是否可以“tail -f”输出“dmesg”?

我想做类似的事情

dmesg | tail -f
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

我使用 Mac OS X v10.6.7 (Snow Leopard)。通过这样做,tail将退出,而不是监视输出。

我想知道是否有办法做到这一点,或等效的命令。

PS,我认为while循环不是一个好主意。

bash command-line tail

173
推荐指数
6
解决办法
16万
查看次数

在 bash 中从另一个目录执行命令

说我这样做:

cd subdir
git init
cd ../
Run Code Online (Sandbox Code Playgroud)

有没有办法用一个或两个命令来做到这一点,而不是为了在那里运行命令而必须进出目录?

(不是在寻找特定于 git 的解决方案;这只是一个例子。)

bash

167
推荐指数
5
解决办法
15万
查看次数

166
推荐指数
7
解决办法
16万
查看次数

Bash 中不区分大小写的制表符补全

有没有办法让 Bash 选项卡不区分大小写?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

我使用的是 Mac OS X 10.6

bash shell command-line macos

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

Bash 脚本:测试空目录

我想测试一个目录是否不包含任何文件。如果是这样,我将跳过一些处理。

我尝试了以下方法:

if [ ./* == "./*" ]; then
    echo "No new file"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

line 1: [: too many arguments
Run Code Online (Sandbox Code Playgroud)

有解决方案/替代方案吗?

bash

150
推荐指数
10
解决办法
19万
查看次数

将目录添加到 $PATH 如果它不存在

有没有人写了一个 bash 函数来将一个目录添加到 $PATH 中,如果它不存在?

我通常使用以下内容添加到 PATH:

export PATH=/usr/local/mysql/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

如果我在 .bash_profile 中构建我的 PATH,那么它不会被读取,除非我所在的会话是登录会话——这并不总是正确的。如果我在 .bashrc 中构建我的 PATH,那么它会与每个子 shell 一起运行。因此,如果我启动一个终端窗口,然后运行 ​​screen 然后运行一个 shell 脚本,我会得到:

$ echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/bin:....
Run Code Online (Sandbox Code Playgroud)

我将尝试构建一个名为 bash 的函数add_to_path(),如果它不存在,它只会添加目录。但是,如果有人已经写过(或找到)这样的东西,我不会花时间在上面。

script bash path

149
推荐指数
11
解决办法
5万
查看次数

$PATH 在 OS X 10.6 Snow Leopard 中设置在哪里?

echo $PATH在命令行上输入并得到

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

我想知道这是在哪里设置的,因为我的.bash_login文件是空的。

我特别担心的是,在安装 MacPorts 之后,它在/opt. 我认为该目录甚至不存在于普通的 Mac OS X 安装中。

更新:感谢jtimberman更正我的echo $PATH陈述

bash path command-line osx-snow-leopard macos

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

如何在 bash 别名中使用空格?

我正在尝试在 bash 中创建别名。我想做的是映射ls -lals -la | more

在我的 .bashrc 文件中,这是我尝试的:

alias 'ls -la'='ls -la | more'

但是它不起作用,因为(我假设)它的别名中有空格。有解决办法吗?

unix bash alias

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

如何配置 PuTTY 以便 Home/End/PgUp/PgDn 在 bash 中正常工作?

Home、End、PageUp、PageDown 键都~在我的 bash 会话中键入 a ,而不是移动光标/视图。为什么会发生这种情况,我需要更改哪些设置?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
Run Code Online (Sandbox Code Playgroud)

这个问题最初是这样写的:

在 PuTTY 中,为什么按 shell (bash) 上的“Home”键会键入“~”?或者更确切地说,如何让它将光标移动到我输入的命令的开头?

(我认为原因是 ~ 是目录,但答案说事实并非如此。)

bash putty

140
推荐指数
5
解决办法
12万
查看次数

Windows Linux 子系统 - 在 Ubuntu 之外访问文件

为什么,例如,当我从 Windows 中创建文件时,在 Windows 10 (bash.exe) 的 Linux 子系统下看不到它

屏幕截图应该解释。

文件夹:OMG 是从 Windows 资源管理器中创建的。文件夹 OMGbash 是从 Linux 子系统 bash.exe 创建的

在 bash.exe 之外创建文件夹 OR 文件时,无论权限和所有权如何,我都看不到它。

为了显示我必须使用 Cygwin 来显示文件权限的信息,我还更改了权限以查看文件夹是否会出现。(底部的两个命令窗口)

显示文件夹、bash.exe 和 Cygwin 权限的屏幕截图:

在此处输入图片说明

我正在尝试将所有 Cygwin 脚本移至 Linux 子系统, 我不想重新创建每个文件,然后必须使用 bash 复制和过去,然后重新格式化,然后使用 Dos2unix(非常冗长)。

在 GitHub 上为 Linux 子系统找到了这个:

根据对其他票证的讨论,不支持从 Windows 直接复制到 Linux 子系统。AppData 下的某个目录(我忘了在哪里)似乎包含 WSL 文件系统的文件。但是如果你把新文件放在那里,或者修改现有文件,你的更改不会在 WSL 中正确反映。

我最好的猜测是 Linux 需要存储与 Windows 不同的关于其文件的元数据(以及更多缓存信息等,因为它的磁盘缓冲模型也不同),并且目前这是通过存储结构的主副本来实现的Linux 文件系统在某种类型的数据库中,并且只使用 Windows 文件系统作为该数据库的方便 BLOB 存储。

如果你真的需要这样做,一个解决方法是编写一个拖放 .bat 脚本或类似 bash.exe -c "mv %1 /home/$USER/" 的脚本。(您可能必须使用 sed 和 tr 做一些巧妙的工作,才能将 …

bash windows-10 windows-subsystem-for-linux

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