我想做类似的事情
dmesg | tail -f
Run Code Online (Sandbox Code Playgroud)
但它不起作用:
我使用 Mac OS X v10.6.7 (Snow Leopard)。通过这样做,tail将退出,而不是监视输出。
我想知道是否有办法做到这一点,或等效的命令。
PS,我认为while循环不是一个好主意。
说我这样做:
cd subdir
git init
cd ../
Run Code Online (Sandbox Code Playgroud)
有没有办法用一个或两个命令来做到这一点,而不是为了在那里运行命令而必须进出目录?
(不是在寻找特定于 git 的解决方案;这只是一个例子。)
有没有办法让 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
我想测试一个目录是否不包含任何文件。如果是这样,我将跳过一些处理。
我尝试了以下方法:
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 函数来将一个目录添加到 $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(),如果它不存在,它只会添加目录。但是,如果有人已经写过(或找到)这样的东西,我不会花时间在上面。
我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 中创建别名。我想做的是映射ls -la到ls -la | more
在我的 .bashrc 文件中,这是我尝试的:
alias 'ls -la'='ls -la | more'
但是它不起作用,因为(我假设)它的别名中有空格。有解决办法吗?
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”键会键入“~”?或者更确切地说,如何让它将光标移动到我输入的命令的开头?
(我认为原因是 ~ 是主目录,但答案说事实并非如此。)
为什么,例如,当我从 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 做一些巧妙的工作,才能将 …