小编cwd*_*cwd的帖子

列出当前目录中的符号链接?

这个问题讨论在当前目录中查找目录。解决方法基本上是:

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 可以用于此吗?

ls find symlink

9
推荐指数
3
解决办法
2万
查看次数

如何使用“diff”命令获得最大收益?

我过去曾尝试使用 linuxdiff命令,但没有太多运气或耐心。我通常最终会使用像 DiffMerge 或 Kdiff 这样的 GUI 实用程序。

最近我开始diff再次尝试通过 ssh 来比较远程系统上的文件,我发现这个-y / --side-by-side选项非常有用,但我仍然觉得我没有充分利用这个实用程序。

所以我很好奇如何实现以下目标:

  1. 突出显示更改或使用颜色编码使输出更具可读性
  2. 合并 - 选择有差异的行并将更改影响到文件之一

另外,我在谷歌搜索时没有找到很多好的例子,所以如果你有一些 linux-fu 的秘密来充分利用 diff,你能分享一下吗?我将主要比较基于文本的配置文件,但任何技巧和技巧都会很棒。

供参考- DiffMerge 实用程序可以轻松地通过颜色突出显示并排显示更改。顶部的图标允许您在“显示全部”、“显示差异”和“显示与上下文的差异”视图之间切换。在命令提示符下会喜欢这些功能。

ps:我还应该指出,我认为非常有用的另一个选项是我--suppress-common-lines在这篇简洁易读的博客文章中了解到

command-line diff

9
推荐指数
2
解决办法
3067
查看次数

如何将制表符分隔的数据转换为逗号分隔的数据?

我正在通过亚马逊的 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)

sed awk shell-script text-processing csv

8
推荐指数
1
解决办法
2万
查看次数

我可以在 Linux 中读写同一个文件而不覆盖它吗?

可能的重复:
如何使 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)

然后一切都很好,但我很困惑,为什么读取和写入同一个文件的叶子空白的,如果有迂回方式,使用的时候grepcat等等。

shell bash stdout stdin

8
推荐指数
2
解决办法
4836
查看次数

用户的主目录和文件应该具有什么类型的权限?

我正在使用全新安装的 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+ro+r权限意味着系统上的每个其他用户不仅cd可以访问该用户的主目录,还可以查看那里存储的内容。

在阅读 suPHP 的一些文档时,它建议将权限设置为711drwx--x--x这对我来说最有意义。

我注意到我可以更改内部文件的权限,/etc/skel并且在创建新用户时它们设置正确,useradd -m但更改/etc/skel目录本身的权限似乎对为用户创建的新目录没有任何影响/home/

  • 那么 - 用户的主目录和文件应该具有什么类型的权限 -为什么

  • 如果我想要不同的权限useradd -m- 就像我看到的711/drwx--x--x那样,如何做到这一点?您必须创建用户然后运行chmod吗?

linux security users permissions home

8
推荐指数
1
解决办法
2万
查看次数

切换 VI 以使用退格键而不是 Control+H 来退格?

我在 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)

vim ssh solaris keyboard vi

7
推荐指数
1
解决办法
9671
查看次数

符号链接和使用 fstab 绑定有什么区别?

在 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 管理员手册的部分中也找不到它。有人可以阐明fstabbind语法、它是如何工作的、它的作用是什么,以及我应该在哪里可以找到有关它的更多信息?

ubuntu automounting mount fstab xfs

7
推荐指数
1
解决办法
6512
查看次数

bash 是否有可用的内置缓存命令(有点像 mktemp 或海绵)?

我正在使用 amazon ec2 命令行工具,该ec2-describe-instances工具有点痛苦,因为它需要 2-5 秒才能发出请求并显示输出。

我正在研究使用此问题中描述的fec2din工具来格式化输出的格式,并且想知道缓存调用输出的最佳方法是什么。ec2-describe-instances

fec2din用于mktemp创建临时文件,然后用于awk格式化输出。

是否有一些工具可以与 TTL 参数一起使用,该工具仅ec2-describe-instances在缓存文件上的时间戳早于某个时间时才运行?

如果有一些实用程序可以做到这一点(就像sponge帮助stdout)一样,那就太好了。

command-line bash cache amazon-ec2

7
推荐指数
1
解决办法
1409
查看次数

什么阻止机器响应 ping?

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)

linux firewall iptables centos ping

7
推荐指数
1
解决办法
6万
查看次数

bash 如何知道它是如何被调用的?

我已经安装jailkitUbuntu 12.04,我已经建立了一个用户的shell来/bin/bash-但是当它被调用运行/etc/bash.bashrc,而不是/etc/profile

如果您以前没有使用jailkit过这里是它的要点:

  1. 系统根目录的“监禁”版本在某处创建,例如 /home/jail
  2. 被监禁的用户主目录移动到该文件夹​​内,如 /home/jail/home/testuser
  3. 相关配置文件被复制到 /home/jail/etc/ - 包括有限的 /etc/passwd
  4. 您希望允许访问的程序被复制到相应的目录中,例如 /bin/bash
  5. 当一个被监禁的用户登录时,他们被 chroot 到 /etc/jail/ 并且看不到上面的任何文件

所以我有一个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确定它是什么类型的外壳,以及它应该运行哪组启动文件。

我想看看我是否可以解决这个问题 - 但我不明白:

bash 如何知道它是如何被调用的?

ps:我也看了,login(1)运气不好。

bash login ubuntu jails

7
推荐指数
2
解决办法
789
查看次数