Unix & Linux

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

6
有什么理由让shebang指向/ bin / sh而不是/ bin / bash吗?
在我见过的大多数shell脚本中(除了我自己没有写过的脚本之外),我注意到shebang设置为#!/bin/sh。对于旧的脚本,这并不令我感到意外,但是在相当新的脚本中也是如此。 是否有理由宁愿使用/bin/shover /bin/bash,因为bash在十年前的许多Linux和BSD机器上,它普遍存在并且通常是默认的吗?
53 bash  shell  history  shebang 

4
git pull是怎么吃我的作业的?
我感觉像是校长办公室里的一个孩子,解释那只狗在到期前一天晚上吃了我的作业,但是我盯着脸上的一些疯狂的数据丢失错误,我不知道它是怎么发生的。我想知道git如何吃掉我的整个仓库!我已经把git穿过绞拧器很多次了,而且从未眨眼。我用它来将20 Gig Subversion存储库拆分为27个git存储库,并过滤掉其中的foo以解开混乱,而且它从未对我造成任何损失。reflog总是在那里回落。这次地毯不见了! 从我的角度来看,我所做的只是运行,git pull并且它破坏了我的整个本地存储库。我不是说它“搞乱了已签出的版本”或“我所在的分支”或类似的名称。我的意思是整个事情都没了。 这是事件发生时我的终端的屏幕截图: 让我来指导您。我的命令提示符包含有关当前git repo的数据(使用prezto的vcs_info实现),因此您可以查看git repo何时消失。第一个命令足够正常: » caleb » jaguar » ~/p/w/incil.info » ◼  zend ★ » ❯❯❯ git co master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. 在那里,您可以看到我在“ zend”分支上,并检出了master。到现在为止还挺好。您将在下一条命令之前的提示中看到它已成功切换分支: » caleb » jaguar » ~/p/w/incil.info » ◼  master ★ » ❯❯❯ …


2
使用ip addr代替ifconfig在Debian上报告“ RTNETLINK答案:文件存在”
我有一个Debian系统,与eth0和一起用作无线路由器wlan0。现在,我就手动添加一个额外的网络eth1有ifconfig: alix:〜#ifconfig eth1 192.168.0.2网络掩码255.255.255.0 alix:〜#netstat -rn 内核IP路由表 目标网关Genmask标志MSS窗口irtt Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 阿里克斯:〜#ping 192.168.0.254 PING 192.168.0.254(192.168.0.254)56(84)个字节的数据。 来自192.168.0.254的64个字节:icmp_req = 1 ttl = …
53 debian  networking  ip 

1
“ rm。*”是否会删除父目录?
.*bash 将表达式扩展为包括当前目录和父目录: $ ls -la total 2600 drwxrwxrwx 2 terdon terdon 2162688 Sep 10 16:22 . drwxr-xr-x 142 terdon terdon 491520 Sep 10 15:34 .. -rw-r--r-- 1 terdon terdon 0 Sep 10 16:22 foo $ echo .* . .. 如果我rm -rf .*使用GNU bash在Debian上运行,version 4.2.36(1)-release并且rm从中rm (GNU coreutils) 8.13获得以下消息: $ rm -rf …
53 shell  wildcards  rm  posix 

11
在VirtualBox中安装后CentOS没有网络接口
我有Ubuntu 12.10,在其上安装了虚拟机,并在其中安装了Centos 6.4 i386。在Ubuntu上,我有:运行3.5.0-17通用内核。 在虚拟机上,我安装了Centos 6.4,一切正常,但是,当我启动到VM机器时,只有环回接口。没有其他的。我试图手动添加ifcfg-eth0文件,但没有任何反应。在VM设置上,我添加了NAT和HostOnly接口,但是每当我启动到Centos时,都只有lo接口。我该怎么办?

2
列出所有具有相同inode编号的文件?
可以说,当我ls -li在目录中执行操作时,会得到以下信息: 12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt 如输出所示,文件fun.txt具有6个硬链接。索引节点号为12353538。 在这种情况下,如何找到文件的所有硬链接,即具有相同inode编号的文件?
53 ls  inode 

2
在Linux上使用`#!/ usr / bin / env命令--argument`的Shebang行失败
我有一个简单的脚本: #!/usr/bin/env ruby --verbose # script.rb puts "hi" 在我的OSX机器上,它运行良好: osx% ./script.rb hi 但是,在我的Linux机器上,它引发了一个错误 linux% ./script.rb /usr/bin/env: ruby --verbose: No such file or directory 如果我手动运行shebang线,效果很好 linux% /usr/bin/env ruby --verbose ./script.rb hi 但是,如果我打包ruby --verbose到一个参数中,我可以复制错误env linux% /usr/bin/env "ruby --verbose" ./script.rb /usr/bin/env: ruby --verbose: No such file or directory 因此,我认为这与env解释shebang线的重置有关。我正在使用GNU coreutils 8.4 env: linux% …



2
SSH和主目录权限
我用学校服务器上的一个班级帐户解决了SSH问题,花了我几个小时。 如果没有输入密码,我就无法进入一个特定的班级帐户,而其他班级帐户则可以使用无密码身份验证。.ssh /目录及其所有内容具有与其他类帐户相同的正确权限。 原来问题是在我自己的主目录上设置的权限。当我的HOME目录上的权限设置为770(不管为.ssh /设置的权限如何)时,无密码身份验证不起作用,但是在权限设置为755或700的情况下,它无密码身份验证。 有人知道为什么SSH这样做吗?是因为主目录权限太宽松了吗?当主目录设置为比700更允许时,为什么SSH拒绝使用公钥/私钥进行身份验证?
53 ssh  permissions 

1
为什么前1024个端口仅限于root用户?
这比其他任何事情都更让人感到好奇。我的一个朋友问我“在Linux下只有root可以使用哪个端口范围?” 我告诉他0-1024被限制。然后他问我为什么会这样……我茫然不知所措。完全不知道 为什么限制这些端口而不限制1025-65535是有原因的? 大多数主要的网络服务(HTTP,FTP,SSH,Telnet,HTTPS,POP,SMTP等)都在此范围内,因此我想到了可能的答案: 不受信任的用户可以运行一个程序,这些程序在这些端口上侦听登录详细信息。 不受信任的用户可以运行未经授权的服务器应用程序。 有人可以在这里亮吗?


7
在Shell脚本中超时
我有一个shell脚本,多数民众赞成从标准输入读取。在极少数情况下,将没有人准备提供输入,并且脚本必须超时。如果超时,脚本必须执行一些清理代码。最好的方法是什么? 该脚本必须具有很高的可移植性,包括没有C编译器的20世纪Unix系统和运行busybox的嵌入式设备,因此不能依赖Perl,bash,任何编译语言,甚至是完整的POSIX.2。特别是$PPID,read -t和完全POSIX兼容的陷阱不可用。还不包括写入临时文件;即使所有文件系统都是只读安装的,脚本也可能运行。 为了使事情变得更困难,我还希望脚本在不超时的情况下保持合理的速度。特别是,我还在Windows(主要在Cygwin中)中使用了脚本,其中fork和exec的比例特别低,因此我希望将其使用量降至最低。 简而言之,我有 trap cleanup 1 2 3 15 foo=`cat` 我想添加一个超时。我不能cat用read内置的替换。如果超时,我想执行该cleanup功能。 背景:此脚本通过打印一些8位字符并比较前后的光标位置来猜测终端的编码。脚本的开头测试了stdout是否连接到受支持的终端,但是有时环境在说谎(例如,即使使用调用也要plink设置TERM=xtermTERM=dumb)。脚本的相关部分如下所示: text='Éé' # UTF-8; shows up as Ãé on a latin1 terminal csi='␛['; dsr_cpr="${csi}6n"; dsr_ok="${csi}5n" # ␛ is an escape character stty_save=`stty -g` cleanup () { stty "$stty_save"; } trap 'cleanup; exit 120' 0 1 2 3 …
53 shell  signals  timeout 

7
如何检测显示器何时插入或拔出?
是否有任何当我插上或缩小外部监视器到我的笔记本电脑的DisplayPort的所触发的事件?ACPID和UDEV完全不响应。 我在英特尔芯片上使用板载图形。这是已经有几年历史的类似讨论了。 我不想使用轮询,但是我需要一些配置来自动设置显示设置,具体取决于显示器是否已连接。

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.