Articles of bash

Ubuntu上的Bash提示符 – FQDN(\ H)与主机名相同(\ h)

我们在工作场所有独立的环境进行开发,testing,集成和分期。 在这些envs中,我们已经在DNS中重载了主机名 – 例如在开发环境中,主要的web机器被称为web1.dev.example.com ,而在testing环境中,主要的web机器是web1.test.example.com 。 为了区分不同环境中的机器,我想定制bash提示来显示FQDN,而不仅仅是主机名。 那么好, 我应该能够用\H在$PS1replace\h ,对吧? 嗯。 他们显示完全相同的东西。 me@web1:~$ hostname web1 me@web1:~$ hostname -f web1.dev.example.com me@web1:~$ export PS1="\[\u@\h: \w\]\$ " me@web1: ~$ export PS1="\[\u@\H: \w\]\$ " me@web1: ~$ 在/etc/hostname ,我只有主机名( web1 )。 hostname和hostname -f都返回正确的结果(分别为“web1”和“web1.test.example.com”),并且在/etc/hosts有正确的条目。 是什么赋予了? 这些是Ubuntu 10.04主机,如果这有所作为。

查找具有特定结尾的文件丢失的目录

我想显示所有的目录,不包含具有特定文件结尾的文件。 所以我尝试使用下面的代码: find . -type d \! -exec test -e '{}/*.ENDING' \; -print 在这个例子中,我想显示所有的目录,不包含结尾.ENDING文件,但是这不起作用。 我的错误在哪里?

使用rsync来只删除多余的文件

比较两个目录结构并删除目标位置中的多余文件和目录的最佳方法是什么? 我正在开发一个小型networking照片库应用程序。 用户使用FTP添加和删除图像。 我写的networking图库软件可以即时创build新的缩略图,但不会处理删除操作。 我想要做的是安排一个命令/ bash脚本以预定义的时间间隔来处理这个问题。 原始图像存储在/home/gallery/images/并使用子目录在相册中进行组织。 缩略图caching在/home/gallery/thumbs/ ,使用与images目录相同的目录结构和文件名。 我已经尝试使用以下来实现这一点: rsync -r –delete –ignore-existing /home/gallery/images /home/gallery/thumbs 如果所有的缩略图都已经被caching了,那么这样做可以正常工作,但是不能保证这种情况会发生,当这种情况发生时,缩略图目录会复制原始的全尺寸图像。 我怎样才能最好地实现我想要做的?

如何通过标签过滤rsyslog消息

我有几个应用程序和脚本,我想将输出redirect到自定义文件。 我使用启动这些应用程序 command | logger -t TAG 我想根据他们的标签过滤这些消息,并将其redirect到不同的文件。 我不想使用bashredirect,因为这些应用程序主要是长时间运行的过程,需要适当的日志轮换。 我曾尝试在/etc/rsyslog.d/60-myfilter.conf中添加自定义filter; if $syslogtag == 'giomanager' then /var/log/giomanager.log 我究竟做错了什么 ? 什么是正确的方式来过滤基于标签或有更好的select有类似的结果?

完全将PostgreSQL重置为默认值?

题 有没有办法在Linux上完全重置PostgreSQL安装,所以它和我安装PostgreSQL时的状态是一样的? 理念 我考虑过了 rm -rf /var/lib/pgsql/* rm -rf /var/lib/pgsql/backups/* rm -rf /var/lib/pgsql/data/* 但也许这不是一个推荐的方法。 目的 这将是方便摆脱以前使用它的程序的左侧。

无法在Debian 6.0上更新Bash(挤压)

我无法在Debian 6.0(Squeeze)服务器上更新Bash以摆脱发现的漏洞: bash –version GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu) apt-get update apt-get install bash Reading package lists… Done Building dependency tree Reading state information… Done bash is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded. 我可以用这个服务器的Squeeze-LTS来更新Bash吗? 一个星期后,我将在另一台服务器上,所以我不会做任何其他更新。 uname -m x86_64 lsb_release -a No LSB modules are available. […]

Powershell比cygwin / unix-shell有什么优势?

我意识到的明显差异是能够连接到某些MS产品,如Exchange。 但是对于不需要pipe理这些产品的人来说,Powershell有什么优势呢? 学习Powershell的原因是什么(假设我用bash和cygwinstream畅)?

你能解释一下吗?ln -s:“目标不是目录”?

我正在这样做: sudo ln –s /etc/apache2/sites-available/LoginProject /etc/apache2/sites-enabled/LoginProject 我得到: ln: target `/etc/apache2/sites-enabled/LoginProject' is not a directory / etc / apache2 / sites-available / LoginProject它是一个文件 编辑: 这个命令: ls -l /etc/apache2/sites-enabled/LoginProject /etc/apache2/sites-available/LoginProject 输出: ls: cannot access /etc/apache2/sites-enabled/LoginProject: No such file or directory -rw-r–r– 1 root root 526 2011-09-27 18:40 /etc/apache2/sites-available/LoginProject 编辑2: $ls /etc/apache2/sites-available/ default default-ssl LoginProject $ $ls /etc/apache2/sites-enabled/ […]

复制大量文件时,“参数列表太长”错误

我正在使用以下命令: \cp -uf /home/ftpuser1/public_html/ftparea/*.jpg /home/ftpuser2/public_html/ftparea/ 我得到的错误: -bash: /bin/cp: Argument list too long 我也试过了: ls /home/ftpuser1/public_html/ftparea/*.jpg | xargs -I {} cp -uf {} /home/ftpuser2/public_html/ftparea/ 还有-bash:/ bin / ls:参数列表太长了 有任何想法吗?

Bash片段将目录中的所有文件移动到该目录中

我有一个有很多文件和目录的目录。 为了整理它,我将把所有这些文件放到一个目录中,所以我打算做这样的事情: $ ls | wc -l 123 $ mkdir new_directory $ mv * ./new_directory 然而,这显然不会工作,因为那么它会尝试将new_directory移动到new_directory 。 是否有一些简单的方法来做我想要的一行,而不必复制和粘贴该目录中的所有文件和目录?