Articles of bash

我如何恢复默认的bashrc?

我不小心覆盖了.bashrc 。 我做了以下 echo 'export EDITOR=/usr/bin/nano' >> /etc/bashrc Bur我不小心键入了>而不是>> 。 我想,这是一个坏主意。 我仍然可以使用这个技巧login(在.bashrc完全执行之前Ctrl+C )。 但是,如何将其恢复到默认的.bashrc ? 我正在运行CentOS 6.5 x86_64。 如果默认的bashrc文件存在于分发的地方,我找不到它。

谁决定了Linux中的默认shell提示符?

在标准的Linux shell,bash中有几个缺省,我认为需要一些历史logging。 这个问题是关于提示。 在许多Linux发行版中,bash的默认提示是[\u@\h \W]\$ 对于那些不能parsing的人来说,它对于一个典型的用户来说就像这样: [staticsan@walcen files]$ _ 最大的问题是它只告诉你当前目录的名字。 “文件”可以像/var/www/files/ as /home/staticsan/files简单(这就是一个简单的例子)。 一个完整的path更有意义,所以每次我设置一个新的盒子或创build一个新的用户,我必须改变它。 那么为什么默认设置是什么呢?

如何清除bash日志的历史logging? 另外,不要logging我的任何用户的bash日志?

我怎么做? 我想清除一切,以及从现在开始不logging任何东西。

bash脚本 – 产卵,发送,交互 – 命令未find错误

我的shell脚本,我想删除密码提示为scp命令(如在https://stackoverflow.com/questions/459182/using-expect-to-pass-a-password-to-ssh/459225#459225 ),这是我迄今为止: – #!/usr/bin/expect spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH expect "password:" send $sshPassword"\n"; interact 在运行脚本时,我收到错误 spawn: command not found send: command not found interact: command not found 我也得到错误expect: command not found也expect: command not found ,然后我意识到的pathexpect是不正确的, expect没有安装。 所以,我做了yum install expect ,纠正了path,错误消失了。 但是仍然无法删除其他3个错误。

使用“触摸”来创build目录 – recursion地创build目录的“影子”副本

在“A”目录下: find . -type f > a.txt find . -type f > a.txt 在“B”目录中: cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done 结果:第2步“创build文件”(我的意思是只有相同的文件名,但是有0字节大小),但如果在“A”目录中有子目录,则步骤2不能创build子目录中的文件,因为里面没有目录。 问:有没有办法,“触摸”可以创build目录?

命令不在crontab中执行,而命令本身工作得很好

我在Github上有Colin Johnson的脚本 – https://github.com/colinbjohnson/aws-missing-tools/tree/master/ec2-automate-backup 这似乎很棒。 每次创build或删除EBS快照时,我都会修改它以发送电子邮件给自己。 下面的作品就像一个魅力 ec2-automate-backup.sh -v“vol-myvolumeid”-k 3 然而,它根本不作为我的crontab的一部分(我没有收到任何电子邮件) #some被注释掉的命令 * / 5 * * * * ec2-automate-backup.sh -v“vol-fb2fbcdf”-k 3; * * * * * date >> /root/logs/crontab.log; * / 5 * * * * date >> /root/logs/crontab2.log 请注意,第二和第三个执行罚款,因为我可以在日志文件中看到date和时间。 我在这里错过了什么? 完整的ec2-automate-backup.sh如下所示: #!/bin/bash – # Author: Colin Johnson / [email protected] # Date: 2012-09-24 # […]

添加行到bashrc,现在bash没有响应

我在我的~/.bashrc (这是一个Linode盒子)的末尾添加了下面一行,并退出了我的ssh会话。 source ~/.profile 现在,当我login时,shell没有响应。 我从来没有得到提示,进入命令什么都不做。 如果我按Ctrl-c,然后closuresSSH连接。 Ctrl-Z也不做任何事情。 我无法访问~/.profile来尝试查看问题是什么。 我怎样才能得到回应?

在cron作业中使用'which'命令

我有一台cron作业,每天在Linux服务器上运行一次,并在其中执行的脚本中进行testing: # Validate ffmpeg is installed if [ $(which ffmpeg | grep -c "ffmpeg") -eq 0 ]; then echo "error: ffmpeg is not installed!" | tee -a "$log" exit 1 fi 每天当我检查日志文件时, ffmpeg is not installed!消息ffmpeg is not installed! 在日志中,结果工作没有被执行。 如果我运行在shell中的whichtesting一切正常,当我执行脚本一切正常。 是否有一些固有的防止它能够正确使用which命令?

通过shell脚本为可执行文件提供命令行参数

假设我有一个可执行文件xyz ,其中包含可变数量的命令行参数,以及一个包装器Korn shell脚本xyz.ksh 。 有没有一种简单的方法将所有的shell脚本parameter passing给可执行文件?

ssh到多个主机和sudo多个命令

我需要循环访问多个主机,并在每个主机上运行一系列命令。 就像是: for i in $(jot -w '%02.0f' 14 1) >do ssh user@host$i sudo -i "command1; command2; command3" >done 但我不能让它正常工作。 我在谷歌上看到过很多东西,例如sudo sh -c ,pipe道连接到sudo等等,但是搞不清楚。 我ssh'ing作为一个普通用户可以sudo没有密码(ssh作为根未启用) command1不返回0不应该阻止command2运行等,因此; 我正在从一个mac运行循环,因此jot -w ,这大致相当于linux中的seq -f ssh'ing到CentOS 5.4 我希望它以root的$ PATH运行,所以我不必指定命令的完整path,但这不是完全必要的 提前致谢!