由于某些原因,选项顺序对于命令来说很重要。例如,不同的选项顺序可能会导致 中的操作不同ffmpeg,那么xargs从哪里添加选项呢stdin?
例如:
$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24
Run Code Online (Sandbox Code Playgroud)
完全等同于:
$ ffmpeg -i inpit.avi -r 24 output.avi
Run Code Online (Sandbox Code Playgroud)
但是如果我想通过管道input.avi从发送echo到xargs ffmpeg -i -r 24 output.avi,如何将 STDIN 中的字符串设置到指定位置?
我的朋友有一台使用 Windows 的电脑,我想知道那台电脑的名称。我现在只知道他的IP地址是10.0.0.2,我怎样才能从我的Linux机器上获取他的计算机名称?
在 Linux 发行版中,比如说 Ubuntu 14.04,如何找到编译/构建这个特定 Linux 内核的时间和日期?
背景:我想使用 这个 Wifi-to-Serial 适配器 通过 在 Kubuntu 16.04(64 位)上运行的Stellarium来控制望远镜 。
我使用socat以下命令行创建了一个虚拟 com 端口:
$ sudo socat pty,link=/dev/virtualcom0,raw tcp:10.0.0.1:4030
Run Code Online (Sandbox Code Playgroud)
我在这里看到了新设备:
$ ls -l /dev/virtualcom0
lrwxrwxrwx 1 root root 10 2017-07-03 09:05 virtualcom0 -> /dev/pts/6
$ ls -l /dev/pts/6
crw--w---- 1 root tty 136, 6 2017-07-03 09:05 /dev/pts/6
Run Code Online (Sandbox Code Playgroud)
只要我以 root 权限运行,就尝试使用/dev/virtualcom0eg withpicocomm工作picosomm。但是当我尝试使用具有标准用户权限的端口时,出现错误:
$ picocom /dev/virtualcom0 --baud 9600 --imap lfcrlf
FATAL: cannot open /dev/virtualcom0: Permission denied
Run Code Online (Sandbox Code Playgroud)
知道如何使用标准用户权限访问虚拟 com 端口,也许为此定义一个特殊的 udev 规则?
为什么这个shell脚本:
$ curl -d "asd" 0.0.0.0/abc & echo "abc";
Run Code Online (Sandbox Code Playgroud)
导致我不得不enter在它再次进入外壳之前按下。这curl只是一个简单的 web 服务器的 post 请求,它返回abc.
但是,此脚本不需要我在再次进入 shell 之前按 Enter
$ echo "abc" & echo "abc"
Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,如:
StringA 45
StrinB 98
StringA 35
StringA 83
StrinB 78
StringC 65
StrinB 98
Run Code Online (Sandbox Code Playgroud)
我想过滤掉重复项,打印出现的次数(子字符串的出现次数可以不同,但在一侧由 ^(字符串开头)分隔,在另一侧由 \tab 分隔)加上仅打印最高数字发现与字符串相关联,即我希望输出类似于(字符串、出现次数和分数也可以以不同的顺序出现):
3 83 StringA
3 98 StrinB
1 65 StringC
Run Code Online (Sandbox Code Playgroud)
我明白,我可以使用的组合sort,并uniq以同样的事件并删除重复进行排序,但这并不占不同的“得分”。我想知道如何在忽略分数的同时进行排序,然后在跟踪最高分数的同时过滤掉重复项。
我正在尝试通过 git安装soundconverter。这就是我在终端中所做的:
$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get install git
$ git clone https://github.com/kassoulet/soundconverter.git
$ cd soundconverter
$ ./autogen.sh
Run Code Online (Sandbox Code Playgroud)
这是运行的输出 /home/USERNAME/soundconverter/autogen.sh
*** WARNING: I am going to run 'configure' with no arguments.
*** If you wish to pass any to it, please specify them on the
*** './autogen.sh' command line.
configure.ac:22: warning: macro 'AM_GLIB_GNU_GETTEXT' not found in library
aclocal: installing 'm4/intltool.m4' from '/usr/share/aclocal/intltool.m4'
aclocal: installing 'm4/nls.m4' from '/usr/share/aclocal/nls.m4'
./autogen.sh: 27: ./autogen.sh: glib-gettextize: not …Run Code Online (Sandbox Code Playgroud) 据我了解,内核不是一个进程,而是一组可以从另一个进程的运行时调用的处理程序(或者内核本身通过计时器或类似的东西?)
如果程序遇到一些需要长时间同步处理才能再次开始运行的异常处理程序(例如,遇到需要读取磁盘的页面错误),内核如何识别应该切换上下文?为了实现这一点,似乎需要运行另一个进程?
内核是否会通过间歇性检查处于此状态的进程来生成处理此问题的进程?调用长时间运行的同步处理程序的进程是否让内核知道它应该切换上下文直到处理程序完成(例如磁盘读取完成)?
例如,如果想要访问位于路由器后面的本地网络上的机器上的帐户 bob,他们只需键入:
$ ssh -p xx bob@example.com`
Run Code Online (Sandbox Code Playgroud)
但是,如何ssh处理本地网络上两台机器具有相同用户名的可能性?是否有标志可以区分机器 A 上的用户 bob 与机器 B 上的不同用户 bob,还是会ssh引发错误?
假设我有这些 Bash 命令:
$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch --contains "$sha" | tr -d " *"
Run Code Online (Sandbox Code Playgroud)
现在可能会记录如下内容:
master
dev
remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 是否有一些 Bash 实用程序可以为我连接所有输出,以便我得到如下内容:
master:dev:remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
该实用程序可能如下所示:
$ git branch --contains "$sha" | tr -d " *" | concat ":"
Run Code Online (Sandbox Code Playgroud)
当然,最终值需要回显,所以它可能看起来像:
$ result="$(git branch --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"
Run Code Online (Sandbox Code Playgroud)