Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
如何获得控制终端的真实名称?
如何获得控制终端的真实名称(如果存在,否则为错误)作为路径名? 所谓“实名”,是指not /dev/tty,其他任意进程都不能使用它来指代同一终端。如果可能,我更倾向于将答案作为简单的shell代码(如下面的示例),否则作为C函数。 请注意,即使重定向了标准输入,此操作也必须起作用,以使该tty实用程序无法使用:not a tty在这种情况下,可能会出现错误,因为tty仅打印连接到标准输入的终端的文件名。 在Linux下,可以使用: echo "/dev/`ps -p $$ -o tty | tail -n 1`" 但这不是可移植的,因为根据POSIX,终端名称的格式未指定。 关于C函数,ctermid (NULL)return /dev/tty,在这里没有用。 注意:根据zsh文档,一个应该可以 zsh -c 'echo $TTY' 但是当同时重定向标准输入和标准输出时,当前(版本5.0.7)失败: $ zsh -c 'echo $TTY > /dev/tty' < /dev/null /dev/pts/9 $ zsh -c 'echo $TTY > /dev/tty' < /dev/null > /dev/null /dev/tty

3
可以使用nologin用户通过ssh执行命令吗?
如果用户有loginShell=/sbin/nologin,仍然可以 ssh user@machine [command] 假设用户在其主目录中具有正确的ssh密钥,可以用来进行身份验证? 我的目标是让用户保持登录状态,但仍然能够在网络上的其他几台计算机上执行命令(类似于通过“ sudo -u”使用它),并且想知道这是否合理。

4
将JSON数组中的一个字段解析为bash数组
我有一个JSON输出,其中包含存储在变量中的对象列表。(我可能没有这样说的权利) [ { "item1": "value1", "item2": "value2", "sub items": [ { "subitem": "subvalue" } ] }, { "item1": "value1_2", "item2": "value2_2", "sub items_2": [ { "subitem_2": "subvalue_2" } ] } ] 我需要数组中的item2的所有值,以便bash脚本在ubuntu 14.04.1。上运行。 我发现了很多方法可以将整个结果放入数组,而不仅仅是我需要的项目

7
如何grep netcat输出
我正在尝试grep的实时文本流netcat,但是对我来说不起作用: netcat localhost 9090 | grep sender 什么也不会返回,但是我确定应该会返回。 如果我将netcat输出重定向到文件并添加一些延迟(模拟真实环境),则它可以工作: $ (sleep 5; cat netcat_output; sleep 5) | grep sender {"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data": "shuttingdown":false},"sender":"xbmc"}} 我也尝试添加--line-buffered但没有成功。 我做错了什么? 编辑: 我注意到与相同的问题sed,输出为空。 但是,例如,hexdump将文本实时转换为十六进制: $ netcat localhost 9090 | hexdump -C 00000000 7b 22 6a 73 6f 6e 72 70 63 22 3a 22 32 2e 30 22 …
13 grep  netcat 

3
计数记录与Awk的匹配模式
因此,我被告知要做的last > lastloggedin是创建一个文件,该文件显示自上次系统重新引导以来最后一次登录的类。现在,我被要求编写一个Awk脚本,该脚本的名称myawk可以计算/确定lastloggedin包含该字符串的行 数CFS264。 我已经搞定了 grep -c CFS264 lastloggedin

2
ppp0 vs wwan0之间的区别
我在RaspberryPi上运行Raspian。 当我插入GSM调制解调器时,我看到两个接口-wwan0和ppp0。 wwan0 即使插入GSM调制解调器但未连接,也存在 ppp0 仅在连接GSM调制解调器时存在 问题 是什么区别wwan0和ppp0,以及为什么我看ppp0除了wwan0? 为什么在建立连接后将IP地址分配给ppp0而不分配wwan0?

5
我怎么能sudo su并立即更改目录?
我想创建一个执行以下操作的别名: alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access' 因此,然后从我的命令行,我登录与须藤用户,我想输入别名userYYY让我的壳现在登录同userYYY和pwd是/a/path/that/only/userYYY/has/access。 我怎样才能做到这一点?这userYYY是用于运行某些进程的,它的主目录中必须有任何东西。因此,我尝试使用以下方法更改其$ HOME: sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 然后从我的sudoer文件的外壳中执行操作sudo su userYYY。但这没有用。唯一有效的方法是,sudo su -l userYYYY但是在我的原始shell(-bash-4.1$ ....)中打开了一个新bash 。 总而言之,我要避免在shell中写两行代码: sudo su userYYY cd /a/path/that/only/userYYY/has/access 有任何想法吗?
13 bash  shell  sudo  su 


2
-bash:cd:.ssh /:权限被拒绝
当我cd .ssh在终端输入时,它返回-bash: cd: .ssh/: Permission denied。现在,我无法将ssh密钥添加到ssh中。 当我输入ssh-add ~/.ssh/idname时说/Users/Dan/.ssh/idname: Permission denied。 我认为这与我输入文字有关,ls -d因为在我将其输入终端之前它可以工作吗?
13 ssh  permissions  ls 

5
从menuconfig角度比较两个内核配置文件?
我遇到的情况是我有两个内核配置文件(用于同一内核源)。两者都有我需要的功能的一部分(一方面,USB正常工作,另一方面,第二个I2C)。 我知道,从menuconfig的角度来看,两个配置文件之间的区别仅包括几个选定的选项。(但不知道是哪一个) 但是,当手动比较配置文件(在两个.config文件之间合并)时,区别并不容易识别。我尝试过手动合并它们,但没有成功。我相信最终我会成功的,但是我相信,如果将文件以出现在menuconfig中的方式进行比较,则过程可能会更加轻松。 可以实现吗?如果可以,如何实现?

1
md5sum命令二进制和文本模式
GNU md5sum命令有两种模式:二进制模式和文本模式。我想区别仅在于如何处理换行符?我对吗? 在GNU / Linux上,这两种模式总是产生相同的结果,因此-band -t选项的唯一用途是指示文件名之前使用的标志(*或)? 模式在什么情况下可以产生不同的结果?在Windows / MacOS系统上?(这些平台的版本可用吗?)
13 binary  text  hashsum 

4
确定为OpenSSH RemoteForward动态分配的端口
问题(TL; DR) 动态分配端口以进行远程转发(aka -R选项)时,远程计算机上的脚本(例如来自的源.bashrc)如何确定OpenSSH选择了哪些端口? 背景 我使用OpenSSH(在两端)连接到我们与多个其他用户共享的中央服务器。对于远程会话(暂时而言),我想转发X,cups和pulseaudio。 最简单的是使用-X选项转发X。分配的X地址存储在环境变量中DISPLAY,从此我可以在大多数情况下确定相应的TCP端口。但是我几乎不需要,因为Xlib非常荣幸DISPLAY。 我需要类似的机制来制作杯子和Pulseaudio。两种服务的基础都以环境变量CUPS_SERVER和的形式存在PULSE_SERVER。以下是用法示例: ssh -X -R12345:localhost:631 -R54321:localhost:4713 datserver export CUPS_SERVER=localhost:12345 lowriter #and I can print using my local printer lpr -P default -o Duplex=DuplexNoTumble minutes.pdf #printing through the tunnel lpr -H localhost:631 -P default -o Duplex=DuplexNoTumble minutes.pdf #printing remotely mpg123 mp3s/van_halen/jump.mp3 #annoy co-workers PULSE_SERVER=localhost:54321 mpg123 …

5
在rhel 6 x86_64上安装最新的gcc
我有一个gcc版本4.4.7的RHEL 6服务器。我想更新gcc版本(我认为当前版本是4.8)。百胜更新不起作用。同样,在CentOS上针对类似问题的SO答案也不起作用。我按照接受的答案中的方法进行操作,输出为“在获取用于testing-1.1-devtools-6的存储库数据时出错,未找到存储库”。另外,我不确定是否应遵循CentO的方法。 是否有人在RHEL 6 x86_64服务器中更新了gcc?

4
使用awk命令开始和结束
根据awk手册,BEGIN和END不用于匹配输入,而是用于向awk脚本提供启动和清除信息。这是给出的示例: ls -l | \ awk 'BEGIN { print "Files found:\n" } /\<[a|x].*\.conf$/ { print $9 }' Files found: amd.conf antivir.conf xcdroast.conf xinetd.conf 首先,这将打印一个字符串以输出。然后,它检查输入是否存在模式匹配,其中输入以a或x开头,后跟任意字符一次或多次,后跟.conf。对于任何匹配项,将打印第9列。 我们被迫使用从此处开始的事实,是否意味着awk最多只能使用一个包含BEGIN或END的打印功能?如果不是,那为什么我们不能一开始就不使用关键字BEGIN就使用打印功能呢?似乎BEGIN是多​​余的。
13 awk 

1
显示颜色并禁用换行
使用less分页器,您可以使用-r选项正确显示彩色输入,并使用-S选项禁用换行。 但是,当使用less -rS或等效方式时less -r -S,会显示颜色,但会包裹线。如何做到这一点?
13 less 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.