这个问题讨论在当前目录中查找目录。解决方法基本上是:
ls -d */
Run Code Online (Sandbox Code Playgroud)
这很好,但我如何轻松列出符号链接?我是否必须使用类似的东西
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
Run Code Online (Sandbox Code Playgroud)
或者有更简单的方法吗?ls 可以用于此吗?
我过去曾尝试使用 linuxdiff命令,但没有太多运气或耐心。我通常最终会使用像 DiffMerge 或 Kdiff 这样的 GUI 实用程序。
最近我开始diff再次尝试通过 ssh 来比较远程系统上的文件,我发现这个-y / --side-by-side选项非常有用,但我仍然觉得我没有充分利用这个实用程序。
所以我很好奇如何实现以下目标:
另外,我在谷歌搜索时没有找到很多好的例子,所以如果你有一些 linux-fu 的秘密来充分利用 diff,你能分享一下吗?我将主要比较基于文本的配置文件,但任何技巧和技巧都会很棒。
供参考- DiffMerge 实用程序可以轻松地通过颜色突出显示并排显示更改。顶部的图标允许您在“显示全部”、“显示差异”和“显示与上下文的差异”视图之间切换。在命令提示符下会喜欢这些功能。
ps:我还应该指出,我认为非常有用的另一个选项是我--suppress-common-lines在这篇简洁易读的博客文章中了解到的。
我正在通过亚马逊的 ec2 命令行工具请求一份 ec2 快照列表:
ec2-describe-snapshots -H --hide-tags > snapshots.csv
Run Code Online (Sandbox Code Playgroud)
数据看起来像这样:
SnapshotId VolumeId StartTime OwnerId VolumeSize Description
snap-00b66464 vol-b99a38d0 2012-01-05 5098939 160 my backup
Run Code Online (Sandbox Code Playgroud)
如何在将数据重定向到之前拦截数据snapshots.csv并执行以下操作:
=它前面加上前缀,以便 excel 将其视为文本 - 例如OwnerId应该是"=5098939“(如果不能内联完成,则不需要这个,而是需要脚本文件或函数)所需的输出:
"SnapshotId","VolumeId","StartTime","OwnerId","VolumeSize","Description"
"snap-00b66464","vol-b99a38d0","2012-01-05","=5098939","=160","my backup"
Run Code Online (Sandbox Code Playgroud) 可能的重复:
如何使 iconv 用转换后的输出替换输入文件?
我经常使用他们的公共 DNS 名称
( ec2-12-34-56-78.compute-1.amazonaws.com)连接到 amazon ec2 ,因此我的known_hosts文件被大量ec2我永远不会再使用的条目所淹没。
我知道我可能可以sed -i用来就地编辑,但我想使用grep,所以我这样做了:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
这留下known_hosts了一个空文件。如果我做:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
然后一切都很好,但我很困惑,为什么读取和写入同一个文件的叶子空白的,如果有迂回方式,使用的时候grep,cat等等。
我正在使用全新安装的 Ubuntu 12.04,我刚刚添加了一个新用户:
useradd -m testuser
Run Code Online (Sandbox Code Playgroud)
我认为-m为用户创建主目录的标志非常标准,但现在我仔细研究了一下,我有点困惑:
默认情况下,刚刚创建的新目录显示为:
drwxr-xr-x 4 testuser testuser 4.0K May 20 20:24 testuser
Run Code Online (Sandbox Code Playgroud)
使用g+r和o+r权限意味着系统上的每个其他用户不仅cd可以访问该用户的主目录,还可以查看那里存储的内容。
在阅读 suPHP 的一些文档时,它建议将权限设置为711或drwx--x--x这对我来说最有意义。
我注意到我可以更改内部文件的权限,/etc/skel并且在创建新用户时它们设置正确,useradd -m但更改/etc/skel目录本身的权限似乎对为用户创建的新目录没有任何影响/home/
那么 - 用户的主目录和文件应该具有什么类型的权限 -为什么?
如果我想要不同的权限useradd -m- 就像我看到的711/drwx--x--x那样,如何做到这一点?您必须创建用户然后运行chmod吗?
我在 Solaris 10 上,默认情况下vi安装了 Solaris 2.5.0 版本 SVR4.0。
系统设置为当我 ssh 到它时Control+H会退格,并退格输出^?
我添加了stty erase '^?'进去,.profile以便在终端中退格键现在可以正常工作。但是,当我使用 vi 时,它仍然在输出^?字符。
通常我会打字:set nocompatible来解决这个问题,但它给了我
compatible: No such option - 'set all' gives all option values
Run Code Online (Sandbox Code Playgroud)
set all 给我
noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=8
nobeautify nooptimize taglength=0
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpptags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=xterm
noexrc redraw noterse
flash remap timeout
hardtabs=8 report=5 ttytype=xterm
noignorecase scroll=33 warn
nolisp …Run Code Online (Sandbox Code Playgroud) 在 Eric Hammond 的文章用 EBS 在 Amazon EC2 上运行 MySQL 中,他展示了如何添加第二个驱动器 ( /vol/),然后继续将mysql的配置和数据移动到那里。
/sdh/vol通过编辑fstab和添加来安装:
/dev/sdh /vol xfs noatime 0 0
Run Code Online (Sandbox Code Playgroud)
接下来添加一些路径,如下所示:
/vol/etc/mysql /etc/mysql none bind
Run Code Online (Sandbox Code Playgroud)
我这样做没有问题,但我不太明白发生了什么。
我可以最接近地将其与使用符号链接进行比较,例如:
ln -s /etc/mysql /vol/etc/mysql
Run Code Online (Sandbox Code Playgroud)
我在man fstab没有看到有关bind语法的太多信息的情况下查看了它,并且fstab在 Linux 管理员手册的部分中也找不到它。有人可以阐明fstab的bind语法、它是如何工作的、它的作用是什么,以及我应该在哪里可以找到有关它的更多信息?
我正在使用 amazon ec2 命令行工具,该ec2-describe-instances工具有点痛苦,因为它需要 2-5 秒才能发出请求并显示输出。
我正在研究使用此问题中描述的fec2din工具来格式化输出的格式,并且想知道缓存调用输出的最佳方法是什么。ec2-describe-instances
fec2din用于mktemp创建临时文件,然后用于awk格式化输出。
是否有一些工具可以与 TTL 参数一起使用,该工具仅ec2-describe-instances在缓存文件上的时间戳早于某个时间时才运行?
如果有一些实用程序可以做到这一点(就像sponge帮助stdout)一样,那就太好了。
我CentOS release 5.4在 Amazon EC2 上有一个linux 机器,我试图将其设置为通过 Nagios 进行监控。该机器与 nagios 服务器在同一安全组中,但它似乎对 ping 或 NRPE 检查没有响应,尽管端口 22 显然已打开。
CentOS box可以使用它的内部IP地址ping自己,它可以ping通Nagios服务器,但是服务器无法ping通CentOS box。
我知道 CentOS 机器正在使用iptables,这里是/etc/sysconfig/iptables文件的内容(为了安全起见,更改了一些 ip):
# Generated by iptables-save v1.3.5 on May 16 11:28:45 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [56:6601]
-A INPUT -s 149.15.0.0/255.255.0.0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 72.14.1.153 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT …Run Code Online (Sandbox Code Playgroud) 我已经安装jailkit上Ubuntu 12.04,我已经建立了一个用户的shell来/bin/bash-但是当它被调用运行/etc/bash.bashrc,而不是/etc/profile
如果您以前没有使用jailkit过这里是它的要点:
所以我有一个testuser这样的条目/etc/passwd:
testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
Run Code Online (Sandbox Code Playgroud)
在文件中/home/jail/etc/passwd有一个条目,如:
testuser:1001:1003::/home/testuser:/bin/bash
Run Code Online (Sandbox Code Playgroud)
我已经阅读了bash(1),所以我认为问题在于 bash 认为它没有被作为登录 shell 调用:
当 bash 作为交互式登录 shell 或作为具有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 读取并执行命令(如果该文件存在)。
我知道这bash实际上是被调用的,/usr/sbin/jk_chrootsh但我不明白如何bash确定它是什么类型的外壳,以及它应该运行哪组启动文件。
我想看看我是否可以解决这个问题 - 但我不明白:
ps:我也看了,login(1)运气不好。
bash ×3
command-line ×2
linux ×2
ubuntu ×2
amazon-ec2 ×1
automounting ×1
awk ×1
cache ×1
centos ×1
csv ×1
diff ×1
find ×1
firewall ×1
fstab ×1
home ×1
iptables ×1
jails ×1
keyboard ×1
login ×1
ls ×1
mount ×1
permissions ×1
ping ×1
security ×1
sed ×1
shell ×1
shell-script ×1
solaris ×1
ssh ×1
stdin ×1
stdout ×1
symlink ×1
users ×1
vi ×1
vim ×1
xfs ×1