我有一个简单的 json 文件,如果我将“jq”的输出通过管道传输到“less”,颜色会被删除。
这有效:
# yey, lots of colors
jq "." /tmp/myfile.json
Run Code Online (Sandbox Code Playgroud)
这不起作用:
# ugly output :( , no colors
jq "." /tmp/myfile.json | less -R
Run Code Online (Sandbox Code Playgroud)
关于如何使“更少”保持颜色的任何想法?
不过,“less”命令工作正常。
我可以使用“less”在屏幕上显示文件的一部分。
据说有一个“更多”命令,但是当我输入它时,它显示“bash:更多:找不到命令”。
每当我git log --all --graph --oneline --decorate在终端模拟器中查看输出时,都会在终端屏幕的顶部查看第一次提交。当我用 退出git log输出视图时q, 中的几行不再可见,因为屏幕底部附加了一些新行,用于下一个命令。
不过,通常这些顶行是最有趣的,因为它们类似于最近的 git 历史记录,所以我希望它们在我输入下一个 git 命令时仍然可见。
如何使git log输出显示在屏幕底部,即在底部查看第一个提交?您必须向上滚动才能查看较旧的提交。
注意:--reverse出于两个原因,该标志不是一个选项。
--graph标志结合:fatal: cannot combine --reverse with --graph。假设我有 root 设备,我可以通过 adb 设置设备所有者:
dpm set-device-owner xxx.package.xxx
Run Code Online (Sandbox Code Playgroud)
那么 - 是否有可能使用 adb 检查当前设备所有者?现在我必须禁用单一应用程序模式并进入安全设置,这对于多个设备来说不是最好的方法。
我需要less从我的 Java 控制台应用程序执行带有分页的命令。但是,我发现执行外部命令的唯一方法是Runtime.getRuntime().exec(),这要求我通过流写入/读取输入/输出。所以像catwork这样的命令(less实际上确实像cat),但我需要分页功能。
在 C 中,我会使用system(). 在 Ruby 中,Kernel.exec完成了这项工作。
有没有办法在Java中完成这项工作?
我已经为 Windows 安装了 Git,并且总体上对它提供的 Bash shell 中的功能集感到满意。我在使用别名时遇到了问题,该别名在我尝试过的其他任何地方都可以正常工作。
别名:
alias gl='git log --graph --format='\''%Cred%h%Creset %s %C(yellow)%an | %C(cyan)%ad%Creset %C(green bold)%d%Creset'\''' | less
Run Code Online (Sandbox Code Playgroud)
在 MacOS bash 终端 Cygwin 中,当然在 Linux shell 中,别名会产生很好的结果。
在 GFW 的 Bash shell 中,输出非常混乱:
如果我直接运行命令,没有别名,它可以正常工作。所以我知道并不是 GFW 的 Bash shell 不知道如何解析我写的命令。
我的问题:如何让这个别名在 Git For Windows 下正常工作?
我愿意使用别名的替代方法。如果 linux 函数或真正的 Git 别名会更好地工作,我对这些替代方案感到满意。不过,弄清楚为什么会发生这种情况会很好。
更新/发现 问题似乎根本不在于解释别名。如果我将管道移至“少”,则输出显示正确。因此,看起来 Git Bash Shell 中实现的“less”命令对转义序列的解释(从字面上看,我猜)与其他实现不同。因此,再多的函数调用都无法解决核心问题。
在我的旧系统(Linux Mint 18.3)上,每次我使用 less 命令并退出(q)时,最后查看的 less 页面仍保留在终端(bash)视图中
在我的新系统(最低 19.3)上,当我退出“less”时,一切都会消失,就好像 less 从未打开过(例如,类似于“nano”命令所发生的情况)
有没有办法让 less 的行为像我的旧系统一样?当使用 git log 等工作时,它非常有用
从mv --help
-n, --no-clobber do not overwrite an existing file
user@pc:~/Desktop/test$ ls -l
total 16
-rw-r--r-- 1 user user 0 ago 6 20:28 bla
-rw-r--r-- 1 user user 0 ago 6 20:28 ble
user@pc:~/Desktop/test$ mv -n bla ble
user@pc:~/Desktop/test$
Run Code Online (Sandbox Code Playgroud)
有没有办法检查命令的返回值mv -n?
是否可以执行类似于$?了解命令移动文件是否成功(返回 0)或失败(返回 1)的操作,因为目标文件夹中已经存在另一个同名文件?
我安装了nvm,它在我的 中插入了一些行.profile,我修改它们以使用 Fish shell 而不是 bash:
if [ "$BASH" ]
if [ -f ~/.bashrc ]
. ~/.bashrc
end
end
mesg n or true
export NVM_DIR="/root/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] and . "$NVM_DIR/nvm.sh" # This loads nvm
Run Code Online (Sandbox Code Playgroud)
..但我仍然收到此错误:
root@server011 ~# source /root/.profile
[: the last argument must be ']'
Run Code Online (Sandbox Code Playgroud) 我在 OS X 10.6 上使用 R 并且我更喜欢 unix 控制台而不是 R.app 来工作。如果我发出了一个help命令,例如?print帮助内容通过寻呼机(我试图打开most和less),然而这则掩藏起来的内容,如果我退出它把我带回了R输入线。
我真正想要的是,即使在我将其退出回 R(点击q)后,寻呼机输出仍会保留在屏幕上。
我在其他基于 Readline 的 Cli 上得到了这种期望的行为psql,例如,但不是在 R 上。有关如何配置的任何提示将不胜感激。
我发现我应该std::less用来比较我的对象,以便能够比较 Unrelated 指针(来自不同的序列),因为<如果在那些不相关的指针上使用,只使用关系运算符会产生 UB。
所以为了练习,我已经实现了我的compare功能:
#include <iostream>
using namespace std;
#include <functional>
template <class T>
constexpr int compare(T const& x, T const& y)
{
if(std::less<T>()(x, y))
return -1;
if(std::less<T>()(y, x))
return 1;
return 0;
}
int main()
{
std::cout << compare(std::string("Hello"), std::string("hello")) << std::endl;
std::cout << compare(std::string("hello"), std::string("Hello")) << std::endl;
std::cout << compare(std::string("hello"), std::string("hello")) << std::endl;
std::cout << compare(-7, 1) << std::endl;
int* p1{new int(10)};
int* p2{new int{4}};
std::cout << compare(p2, p1) << std::endl; …Run Code Online (Sandbox Code Playgroud)