Unix & Linux

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

3
bash的条件表达式中-a和-e有什么区别?
来自man bash: CONDITIONAL EXPRESSIONS [...] -a file True if file exists. [...] -e file True if file exists. 那么[ -a $FILE ]和之间有什么区别[ -e $FILE ](如果有)? 如果没有真正的区别,为什么存在两个用于相同目的的标志?
12 bash  shell  test 

3
进入通过链接链接的目录
当我cd链接时,当前路径的前缀是链接的路径,而不是链接链接到的目录的路径。例如 ~/dirlinks/maths$ ls -l logic lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic ~/dirlinks/maths$ cd logic ~/dirlinks/maths/logic$ pwd /home/tim/dirlinks/maths/logic ~/dirlinks/maths/logic$ cd .. ~/dirlinks/maths$ 我想将当前路径更改为链接目录的路径,以便我也可以使用链接目录的父目录。除了ls找到链接目录然后cd进入目录的链接之外,还有哪些更简单的方法可以实现该目的?例如,cd进入链接后,如何将当前路径更改为链接目录的路径?

1
带有内核和BusyBox的最小Linux:/ etc / inittab被忽略,仅执行/ init
我设法创建了一个小型且功能齐全的实时Linux CD,其中仅包含内核(使用默认选项编译)和BusyBox(使用默认选项+静态编译,所有小程序都包括在内/sbin/init)。我没有问题,建立initrd和填充/dev,/proc并且/sys也是我在所有与我没有任何问题/initshell脚本。 最近,我读到BusyBox支持/etc/inittab配置(至少在某种程度上),我非常想执行以下任一操作: 忘记我的/initshell脚本,完全依靠/etc/inittab配置。 同时使用/initShell脚本和/etc/inittab配置。 现在是实际问题- /etc/inittab当我的发行版启动时,似乎完全被忽略了。症状是: 当我删除/init并离开时,/etc/inittab我最终会陷入内核崩溃。我的假设是内核根本不执行/sbin/init,或者/sbin/init根本找不到(或读取)/etc/inittab。 我读到即使没有,BusyBox也应该可以正常工作/etc/inittab。因此,我同时删除了两者/init,/etc/inittab然后猜测是什么-再次出现内核恐慌。 我试图执行/sbin/init从我的外壳经过几次猜测,其中包括exec /sbin/init,setsid /sbin/init和exec setsid /sbin/init我结束了内核崩溃。文件系统上同时存在和不存在/ etc / inittab。 这是我的/initshell脚本的内容: #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t proc none /proc mount -t sysfs none /sys setsid cttyhack /bin/sh 在这一点上,我不在乎它的内容/etc/inittab,只要我有办法知道那里的配置确实有效。我尝试了几种/etc/inittab配置,所有这些配置都是基于在这里找到的信息。 作为最低要求,我的/ etc / inittab仅包含以下这一行: ::sysinit:/bin/sh 再次-我最终陷入内核恐慌,似乎/etc/inittab被忽略了。 /etc/inittab非常感谢任何有关如何强制我的小型现场发行版与BusyBox配合使用的建议! 更新: 为了清楚起见,使用和不使用当前的shell脚本,我都不会遇到内核崩溃的麻烦。一切正常,我的控制台运行良好,没有任何意外的麻烦。唯一的问题是,正如我上面所述,它被完全忽略了。/init/etc/inittab/bin/ash/etc/inittab …

1
如何停止bash shell PS1颜色在命令结束时停止?
我有一个自定义的PS1颜色,其中实际的shell命令使用不同的颜色,只是为了快速查看输入的命令并将其与命令输出本身分开。 假设PS1中的颜色针对命令提示符设置为“蓝色”,而我的外壳中的默认颜色为白色。 我输入命令,例如ls,(ls -l涂成蓝色) 它生成的输出,第一行仍然是蓝色 所有剩余的行都是白色的 我想要的是命令后的所有输出均为“ white”。 另一个例子: 我输入命令“ cat”,颜色为蓝色 输出到来,整个输出为蓝色 我希望输出为“白色”,同时保持我键入“蓝色”的命令提示符 在某些命令上很好,在其他命令上,相同的颜色溢出到输出的第一行,然后插入默认颜色,而在其他一些命令上,整个输出(例如cat)具有相同的颜色。 有没有一种方法可以只将我键入的命令保留为一种颜色,其余的保留为默认颜色? 我在OSX上。 编辑#1 这是@derobert在评论中链接到的屏幕快照,该屏幕快照显示了我在寻找什么。
12 bash  prompt 

2
SCP和文件所有者
将文件scp从一台服务器转移到另一台服务器后,可能会更改文件所有权的原因是什么? 文件所有权从“ 所有者 ” 更改为“ apache ”。我用过scp -p。用户“ 所有者 ”在两个服务器上都存在,并且具有相同的UID。
12 files  scp  chown 

5
如何在收到404后停止“ wget”?
如果您将括号扩展用于wget,则可以轻松获取按顺序编号的图像: $ wget 'http://www.iqandreas.com/sample-images/100-100-color/'{90..110}'.jpg' 它获取编号为第10个文件90.jpg来99.jpg就好了,但是100.jpg,向前返回404:找不到文件错误(我只有在服务器上存储100张图像)。如果您使用较大的范围,这些不存在的文件将更多地成为“问题”,例如{00..200},使用100个不存在的文件,它会增加脚本的执行时间,甚至可能会给您带来轻微的负担(或至少使人烦恼)服务器。 wget收到第一个404错误后,有什么方法可以停止吗?(或者,最好是连续两个,以防由于其他原因导致范围内文件丢失)。答案不需要使用大括号扩展;循环也很好。

1
如何通过SSHFS使用inotify或命名管道?
谢谢sshfs魔术,我可以使用以下命令从远程服务器挂载主目录 sshfs user@server:/home/user ~/remote 乐观,我想我会设置一个本地inotify-hook上~/remote/logFile(在sshfs安装),因此本地程序可以对远程日志的变化作出反应。 cd ~/remote touch logFile # create remote file inotifywait logFile & # set up local inotify-hook ssh user@server -x touch /home/user/logFile # touch file from remote 什么都没发生。inotifywait除非我touch在本地将文件设为静音。类似地,写入命名管道失败。 为什么是这样?我如何弥合这一差距? 我可以inotifywait在远程上运行,破解文件系统更改序列化策略并维持与本地的连接,但是我基本上是在重新实现SSHFS。它完全杀死了抽象。
12 sshfs  inotify  fifo 

3
我可以加快粘贴到vim的速度吗?
我从网页中复制了一部分HTML,并希望将其保存在文件中。为此,我vim 在终端窗口中启动了一个新会话,并在命令行上指定了(新)文件名,单击i以进入插入模式,然后单击CtrlShift+ V并等待[-- INSERT --]显示在底部并等待... 由于vim几秒钟后没有响应,我从“应用程序”→“附件”菜单中打开“文本编辑器”,将文本粘贴(文本在不到一秒钟的时间内显示出来,以新名称保存,关闭并终止了Vim会话) 1.5分钟后仍然没有完成,文字数量为186K,每行3200行,我想说的并不算多,也没有太长的行。 有没有一种方法可以加快此类插入的速度,vim和/或有没有解释为什么与使用文本编辑器相比,这种方法这么慢? (top虽然我在系统中有一些空闲的处理器,但根据的%CPU 不会超过5%,因此这可能是一些I / O绑定问题,当从文件中读取相同文本时不存在此问题) 版本信息: Ubuntu 12.04 Vim:7.3,具有由Ubuntu 12.04提供的补丁 bash:4.2.25 gnome-terminal:3.4.1.1
12 vim  clipboard 

1
该命令的确切行为是什么:ip地址更改?
我一直在摆弄IPv6和地址生存期。我发现valid_lft,如果使用正确,该属性会使v6地址自动消失。为了延长地址的寿命,我会 ip addr change 1:2:3:4::1/112 dev eth0 valid_lft 86000 使用ip addr change没有出现在任何人为的网页我有机会获得(的Debian,Ubuntu和网络),也是没有正式文件。我在一篇有关 2009年发送给ipv6-ops邮件列表的电子邮件的文章中找到了它。 从我可以确定的玩法来看,我猜想总是可以使用ip addr change代替ip addr add,因为如果一个地址不存在,ip将添加一个,就好像ip addr add使用了一样。 那是正确的吗,也就是说,任何人都可以解释ip addr change它的确切含义以及与它有何不同ip addr add吗?

2
使用Make出现“无目标”错误
我正在学习如何使用make和生成文件,所以我写了这个小文件: %.markdown: %.html pandoc -o $< $@ 但是当我跑步时make,我得到的只是发生了make: *** No targets. Stop.什么事?
12 make 

2
什么是二进制包?如何建立它们?
我想了解有关二进制包的详细信息,然后在Linux上运行它们。我正在运行Debian base(Ubuntu / Linux mint)Linux操作系统。 如何从源代码构建二进制包?我可以直接为应用程序(例如Firefox等)和游戏(例如boswars等等)下载二进制包吗? 我以“ xyz.linux.run”格式运行一些直接软件包,这些软件包是什么?它们独立于依赖项吗?还是预建的二进制软件包? 如何通过直接在Linux上“ xyz.linux.run”来构建可在linux操作系统上运行的文件。 二进制包和deb包之间的区别是什么?

1
无法加载模块:不同意符号module_layout的版本
按照本教程编写我的第一个驱动程序。 Makefile是: # Makefile – makefile of our first driver # if KERNELRELEASE is defined, we've been invoked from the # kernel build system and can use its language. ifneq (${KERNELRELEASE},) obj-m := ofd.o # Otherwise we were called directly from the command line. # Invoke the kernel build system. …


2
命令文件建议背后的故事是什么?
在阅读时,file(1)我在手册页中注意到了这一点(强调我的意思): 将本地定义添加到/ etc / magic时,请确保保留这些关键字。用户依赖于知道目录中的所有可读文件都印有“文本”一词。不要像伯克利那样做,而是将“ shell命令文本”更改为“ shell脚本”。 这句话的背后是什么故事?我猜Berkeley是指,BSD (Berkeley software distribution)但Google没有提供足够的信息。 链接到file(1) http://man7.org/linux/man-pages/man1/file.1.html 一些挖掘表明,此声明是27年前添加的链接 Don't do as one computer vendor did \- change ``shell commands text'' to ``shell script''. 后来更改为当前语句链接 Don't do as Berkeley did \- change ``shell commands text''

2
为什么BASH打印“ bash:cd:写入错误:成功”?
我今天注意到了几次。如果我键入cd ../Directory要更改到另一个目录,它将显示“ bash:cd:写入错误:成功”。我无法确定其他哪些先前命令可能与此相关。 typeset -f 什么都不打印。 alias 什么都不打印。 type -a cd 打印“ cd是内置的shell”。 echo $CDPATH 打印一个空行。 $BASH_VERSION 打印“ bash:4.2.37(1)-发行版:找不到命令”。 我只注意到了2-3次。在两种情况下,初始目录和目标目录相同。我以其他方式多次更改了目录,但始终没有遇到错误。 是什么原因造成的?
12 bash 

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.