Unix & Linux

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

5
Bash:类型(Bash内置函数)有什么用?
我在Bash脚本中遇到了一条命令,发现: find /var/log/abcd -type f 上面的命令是在清理日志文件的上下文中。我知道是什么find呢。 看过之后-type f,我在手册页上找到了它。我在BASH_BUILTINS(1)的手册页中看到了它 type命令下的-f标志的描述是:- The -f option suppresses shell function lookup, as with the command builtin. 以下是我的问题: 有什么用type? -f标志的意义是什么? 使用typewith find命令有什么用? [编辑]:-在阅读完所有评论和答案后,我想提及我对-type option in command findVs的误解的原因type command。之所以如此,是因为我一直假设并且直到现在为止都只看到find带有一个减号'-'的简短选项(在命令情况下为Tests ),例如ls -l。在大多数情况下,我看到带有双减号'-'的长期权,例如ls --version。
16 bash  bash-script 

3
坏扇区是否表示磁盘出现故障?
我的Ubuntu 13.10系统在过去大约一天的时间里一直表现很差。查看内核日志,看来<1yr旧的3TB SATA磁盘在特定扇区上有问题: Nov 4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 Nov 4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65 Nov 4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT Nov 4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 …

5
使用sed提取2个标签之间的文本
我有一个.xml文件,我正在RHEL6计算机上尝试进行“组安装”,因为该.xml文件中有数百个库...(接近16000行)。 因此,我尝试提取具有以下结构的.xml文件中包含的组名: <b> <group> <id> group name </id> <packages> ... </packages> <id> group name 2 </id> <packages> ... </packages> <id> etc... </id> </group> </b> 基本上,这就是我尝试过的: sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt 我将.xml文件复制到test1.txt。我正在尝试将组名从test1.txt提取到另一个名为test2.txt的文件中。但是,使用上面的行,它将提取从FIRST <id>标记到</id>我文件中的最后一个标记的所有内容。如何更改代码以多次提取? 我的第二个问题是:-downloadonly插件是否可以与yum组一起使用?
16 sed 


2
bash_history:注释掉危险的命令:#
为了防止在bash历史记录中记录“危险”命令,我在.bashrc文件中添加了以下行: HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*' 这行之有效,但有副作用:我看不到在计算机上执行的命令的完整历史记录。假设我有几台用于实验的机器,并且希望能够看到所有执行的命令。我将使用bash内部history显示执行的命令,也许还可以显示今天的日期的grep: history | grep Sep-28 我想做的是也记录“危险”命令,但是#在行的开头放置一个,这样,如果我偶然从历史记录中错误地执行了该命令,将不会造成任何损失。 我不知道这是否可能。 更新和说明: 对我来说这是个问题的主要原因是,我通常从多个终端连接到我的机器,并且在一个终端上执行的任何命令都会立即读入其他终端的历史记录中。这是通过实现 PROMPT_COMMAND="history -a; history -c; history -r" 假设我有两个开放的终端。在一个我有一些cat /dev/foo > file.out进程正在运行。在第二个中,我使用查看进度ls -lAhF。我一直ls通过按Up和ENTER(即历史记录中的最后一条命令)重复操作。第一个命令完成后,历史记录中的最后一个命令将不再是ls,而是cat /dev/foo > file.out。如果我不小心,我将再次启动cat并覆盖file.out。 我想实现的是cat命令将以开头#,这样它就不会被执行。但是,我仍然会在历史记录中看到它,并且可以通过取消注释它来重用它(如果这是一个长命令)。

3
如何搜索linux内核邮件列表档案?
我想通过搜索Linux内核邮件列表以查找有关该主题的最新讨论,来研究为什么Linux内核功能似乎从我的Linux安装中丢失了。我发现的唯一可以搜索邮件列表档案的站点是gmane。但是,搜索gmane上带有引号的术语(例如,“ / usr / firmware”)并不将结果限制为仅包含带引号的短语。是否有更高级的Linux内核邮件列表搜索?

5
如何使用网络管理器在Fedora中设置DNS解析器?
我想尝试Google公共DNS。为此,我需要更改名称服务器地址。我知道它在文件中/etc/resolv.conf,但是无论何时启动network-manager,它都会使用DHCP获得的值覆盖该文件中的值。 我如何告诉它不这样做?我浏览了GUI,但只能找到添加更多IP地址的选项。 以下是奖杯:)

3
如何分辨是哪个键盘按下了按键?
我经常在配对站中安装多个键盘。我可以使用setxkbmapwith -device <ID>来设置特定键盘的布局(使用中的IDxinput),但是通常我不清楚使用的是哪个键盘。最好避免反复尝试两个键盘,所以我想编写一个快速工具来获取有关此信息setxkbmap。我期望一个典型的用例如下: $ setxkbmap -device "$(get-keyboard-id)" -layout gb Press Enter to detect keyboard ID 哪个接口在Linux上提供此信息?理想情况下,它应该在没有X的情况下也可以工作,但这不是必须的(似乎没有很多工具可以在没有X的情况下支持此功能)。 到目前为止的发现: Linux 必须知道我要键入哪个键盘才能同时支持多个键盘的不同布局。 xinput→list.c→ list_xi2→ XIQueryDevice提供设备ID可使用的通过setxkbmap。 showkey并且xev不打印键盘ID。 xinput list-props $ID显示键盘事件的发送位置。但是,使用其他答案中的代码,似乎该设备无法打印任何内容来识别键盘。 一种几乎可行的解决方案是xinput --test <ID> &为每个键盘ID 运行并查看哪个首先返回值。这样做的问题是弄清楚哪些“键盘” 实际上是键盘: $ xinput | grep keyboard ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard …
16 xorg  x11  keyboard 

1
为什么此空目录为3.5MB?
我刚刚读了一个问题:“ ls -l”命令输出中的目录大小是什么意思? ...这并不能完全回答我的问题。基本上,我是将文件移至NAS。我已经移动的文件夹完全是空的,没有任何隐藏文件或任何东西,但du仍然报告其大小为3.5MB。公认的是,它们以前包含大量文件,且文件名较长。 这个大小仅仅是因为该目录中文件的数量和名称长度吗?既然文件夹为空(ext4文件系统),为什么大小没有减小?
16 directory  ext4 

1
如何找到百胜的包裹URL?
我想用Yum更新我的系统(Fedora),但是我想aria2用来下载软件包。其中有些东西pacman可以用来获取更新URL(并将所有链接放在文件中。)然后,aria2可以将此文件用作下载的输入列表。什么是Fedora等价物?
16 fedora  yum  pacman  aria2 

7
如何将安装的软件包选择从一个Fedora实例复制到另一个?
我有一个Fedora系统(A),我已经在其中安装了一些软件包。现在,我想在另一台计算机(B)上安装Fedora,并在其上安装相同的软件包。 用Debian的话,我想完成这样的事情: $ dpkg --get-selections > pkg_sel_host_a # on host_a $ dpkg --set-selections < pkg_sel_host_a # on host_b 但老实说,我真的希望有一个更好的方法在新的Fedora 19系统(B)上选择相同的软件包:我只想从系统A安装在dnf install(或yum install)命令行上明确提到的软件包 -而不是那些作为依赖安装的! 为什么?因为依赖关系可能已更改-我不想在新系统上安装过时的依赖关系。另外,当我删除软件包时,我也想删除(可能)然后也不需要自动安装的依赖项(例如,孤儿)。 我已经找到了dnf list installed-但是它不会显示是否由于依赖而明确选择或安装了软件包。 我如何在Fedora上获得该信息? 用Fedora / dnf复制包选择的方式是什么?
16 fedora  yum  dnf 

3
bash脚本错误stty:标准输入:设备的ioctl不适当
我在bash脚本中使用here-documents来自动执行安装和设置,而该操作需要多次输入密码。我输入一次密码,脚本将其传递给各种命令。在大多数情况下,此处文档方法可以很好地解决这一问题。但是,在一种情况下,我得到此错误: Enter VNC password: stty: standard input: Inappropriate ioctl for device Verify password: stty: standard input: Inappropriate ioctl for device 请注意,此错误消息来自x11vnc -storepassword(而不是来自)sudo。 我的问题与x11vnc -storepasswd,这是我的代码: sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC password password y ENDDOC 显然(由于错误)不起作用。我将感谢一个如何sudo x11vnc -storepasswd ~/.vnc/passwd在脚本中实现的可行示例。 如果有帮助,则提示如下所示: 输入VNC密码: 验证密码: 将密码写入/home/user/.vnc/passwd?[y] / nn 使用expect会是更好的解决方案吗?如果是这样,在这种情况下我将如何使用它?(我以前从未使用expect过,但是自发布此问题以来,我查看了很多示例,因此我无法expect独自工作。)

2
使用更新替代方法添加替代方法的更好方法?
我已经看了update-alternatives几次手册,但是找不到如何显示指向特定替代方案的当前链接,并且在添加新替代方案时需要这些信息。 从update-alternatives手册中: --install <link> <name> <path> <priority> 假设我想添加一个新版本的Java Runtime Edition,但我不知道当前链接到Alternative(<link>参数)的符号链接。我目前正在做的是: sudo update-alternatives --install /tmp/randomStuff java /usr/local/java/jre1.7.0_25/bin/java 0 该命令将输出: update-alternatives: renaming java link from /usr/local/bin/java to /tmp/randomStuff. 阅读输出,我发现了指向替代项的旧链接,因此我终于可以使用正确的<link>参数再次运行命令,更改/tmp/randomStuff为/usr/local/bin/java: sudo update-alternatives --install /usr/local/bin/java java /usr/local/java/jre1.7.0_25/bin/java 0 效果很好,但是如您所见,以/tmp/randomStuffas为<link>参数运行命令非常尴尬。 因此,出现了以下问题:(1)是否有任何update-alternative参数可以输出指向特定替代方案的当前链接,或者(2)是否有一种无需提供新参数即可安装新替代方案的方法,只需保持最新<link>?

2
ls --hide =和ls --ignore =的语法
ls --hide并ls --ignore提供了省略通过--ignore=零件后设置的正则表达式定义的文件的可能性。后者确保不会通过禁用此选项-a, -A。该命令man和info页面提到了正则表达式。 问题:ls --hide=和中支持哪些通配符或正则表达式ls --ignore=。 我发现它* $ ?以及POSIX Bracket Expressions似乎都受支持。但这似乎并非一直都能正常工作,对我来说更像是反复试验的游戏。我在这里错过了重要的事情吗?

2
在不同接口上使用dhclient更新IP
我的计算机上有两个接口,eth0并且eth1。 两个子网上都有一个DHCP服务器。如何使用dhclient两个接口的IP地址续订? 如果我做: dhclient -r && dhclient eth0 它更新上的IP eth0。然后,如果我只想做: dhclient eth1 它因错误而失败: dhclient(22421) is already running - exiting. 我可以: dhclient -r && dhclient eth1 但是该dhclient -r部分释放了租约,我也松开了IP地址eth0。 现在,我已经成功地做我想做的唯一方法是运行dhclient的eth0,残忍地杀了它,并运行它eth1:我有一个更新的IP两个接口上结束。 我也测试了dhclient -x而不是dhclient -r,没有运气。 当然,这不是要走的路! 编辑: 建议这样做的两个答案dhclient -r eth0 eth1 && dhclient eth0 eth1 确实将广播呼叫限制在这些接口上。但是,第一个应答的DHCP服务器将是唯一使用的DHCP服务器,因此会在单个接口(而不是两个接口)上产生一个新IP。看到这里,我们可以看到DHCPDISCOVER两个接口上的调用,但是DHCPREQUEST只能在eth0找到DHCP服务器的第一个接口上进行: Listening on LPF/eth0/0a:00:27:00:00:00 Sending on LPF/eth0/0a:00:27:00:00:00 Listening on …
16 networking  dhcp 

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.