小编jal*_*anb的帖子

如何找到终端中可用的垂直线数?

我正在编写一个脚本,当我进入目录时,它会显示目录的 git 日志。这样的日志可能会让人不知所措,包含数百行。到目前为止,我一直将其限制为硬编码的 20 行 ( ... | head -n 20),这在工作时的屏幕上很好,但在家里较小的 MacBook 屏幕上就太多了。

我希望日志在任一终端上占据大约一半(垂直)屏幕。并且“终端”也发生了变化:它在工作中是 Gnome 终端,但在家里是 iTerm2。而且我不使用屏幕或 tmux。

如何从命令行找到终端中可用的垂直线数?

bash terminal gnome-terminal ansi-term iterm

16
推荐指数
2
解决办法
6276
查看次数

为什么声明 -F 给出了错误的文件

我有两个小函数可以缩写set -x/ set +x,即:

sx () {
    export PS4='+ [${BASH_SOURCE##*/}:${LINENO}]'
    set -x
}
Run Code Online (Sandbox Code Playgroud)

sz () {
    set +x
    export PS4=
}
Run Code Online (Sandbox Code Playgroud)

这两种功能的文件functons.sh距离d ~/.bashrc,并在网上看到这里

登录到一个新的 bash 会话后,我立即尝试找出sz()函数在哪里,如下所示:

$ shopt -s extdebug; declare -F sz; shopt -u extdebug
sz 25 /Users/jab/src/git/hub/jab/src/bash/keyboard/z.sh
Run Code Online (Sandbox Code Playgroud)

这表明bash认为该sz()函数是在 中声明的z.sh,但是在那一行中有一个不同的函数,zzz(),在线这里

sx()函数(以及我所有的无数其他函数)的结果是正确的

$ shopt -s extdebug; declare -F sx; shopt -u extdebug
sx 428 /Users/jab/src/git/hub/jab3/src/bash/functons.sh …
Run Code Online (Sandbox Code Playgroud)

bash bash-functions

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

我可以使用 shebang 将文件源本身放入当前的 bash 环境中吗?

我有一个不断增长的收集脚本应该来源,无法运行。目前他们有shebang

#! /bin/cat
Run Code Online (Sandbox Code Playgroud)

但我更希望在运行时将它们导入到 bash 中,就像我所做的那样

$ . /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)

或者

$ source /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)

但是,.source是bash的内置命令,所以对这些脚本的替代家当线可能吗?

shell bash shell-script shebang

5
推荐指数
3
解决办法
4346
查看次数

为什么运行“错误”的可执行文件?

我正在尝试从bash (version ) 命令行运行ipython4.4.19

作为一名 Python 开发人员,我ipython在各种virtualenvs 的路径中安装了各种版本的各种安装,因此知道我正在运行哪个很重要。因此,$PATH当我改变时总是改变virtualenv,这将是一个典型的值PATH

$ echo $PATH
/Users/jab/.virtualenvs/tools/bin:/Users/jab/bin:/Users/jab/src/git/hub/jab/bin:/usr/local/gnu:/bin:/usr/local/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

其中重要的细节是第一个条目是“ /Users/jab/.virtualenvs/tools/bin”,并且该文件/Users/jab/.virtualenvs/tools/bin/ipython确实存在:

$ ls -l /Users/jab/.virtualenvs/tools/bin/ipython
-rwxr-xr-x 1 jab staff 252 May 11 15:18 /Users/jab/.virtualenvs/tools/bin/ipython
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,which表示该文件将作为“ $ ipython”命令运行

$ which ipython
/Users/jab/.virtualenvs/tools/bin/ipython

$ $(which ipython) -c "import sys; print(sys.executable)"
/Users/jab/.virtualenvs/tools/bin/python
Run Code Online (Sandbox Code Playgroud)

然而,实际情况并非如此,/usr/local/bin/ipython而是运行

$ ipython -c "import sys; print(sys.executable)"
/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么bash忽略我$PATH并使用“错误”的可执行文件?我需要更改什么(在我的 bashrc或我的系统 …

bash path which

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