Tag: shell

如何parsingshell脚本中的符号链接

给定绝对path或相对path(在类Unix系统中),我想在parsing任何中间符号链接后确定目标的完整path。 加分也同时parsing〜用户名表示法。 如果目标是一个目录,可以将chdir()放到目录中,然后调用getcwd(),但是我真的希望从shell脚本执行此操作,而不是编写C助手。 不幸的是,shell有一个倾向,试图隐藏用户的符号链接的存在(这是在OS X上的bash): $ ls -ld foo bar drwxr-xr-x 2 greg greg 68 Aug 11 22:36 bar lrwxr-xr-x 1 greg greg 3 Aug 11 22:36 foo -> bar $ cd foo $ pwd /Users/greg/tmp/foo $ 我想要的是一个函数resolve(),当从上面例子中的tmp目录执行时,resolve(“foo”)==“/ Users / greg / tmp / bar”。

如何从我的应用程序目录中删除所有.svn目录

在我的应用程序中,导出工具的任务之一是从我的应用程序目录树中清除所有.svn目录。 我正在寻找一个recursion的命令,在Linux shell中遍历整个树并删除.svn文件。 我没有使用导出,因为这个脚本将被用于一些其他的文件/目录名称是不相关的SVN。 我尝试了这样的: find . -name .svn | rm -fr 它没有工作…

等待和睡眠之间的区别

wait和sleep什么区别?

如何将制表符转换为目录的每个文件中的空格?

我怎样才能将制表符转换为目录的每个文件中的空格(可能recursion)? 另外,有没有一种方法来设置每个标签的空格数?

如何在shell中声明多个条件?

我想代表像这样的多个条件: if [ ( $g -eq 1 -a "$c" = "123" ) -o ( $g -eq 2 -a "$c" = "456" ) ] then echo abc; else echo efg; fi 但是当我执行脚本时,它显示 syntax error at line 15: `[' unexpected, 第15行是显示如果…. 这种情况怎么了? 我猜()有些问题。

在Bash中将多个文本文件连接成单个文件

什么是最快最实用的方法,将目录中的所有* .txt文件合并为一个大文本文件? 目前我使用cygwin的窗口,所以我有权访问BASH。 Windows的shell命令也不错,但我怀疑有一个。

exec脚本在shell脚本中有什么用处?

任何人都可以用简单的例子来解释exec命令在shell脚本中的用法吗?

用Sedreplace整个包含一个string的行

我有一个文本文件,有一个特定的行类似 sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext 我需要用上面的整行代替 This line is removed by the admin. search关键字是TEXT_TO_BE_REPLACED 我需要为此编写一个shell脚本。 我怎样才能达到这个使用sed ?

值得换用zsh以供随意使用?

Mac OS X中的默认shell是bash ,我一般很乐意使用它。 我只是认为理所当然。 如果它自动完成更多的东西 ,那将是非常好的,而且我在这方面已经听到了有关zsh好消息。 但是我并没有真正的意图花费数小时来摆弄设置来改善我的命令行使用率,因为我在命令行中的生活并不是那么糟糕。 (据我所知, bash也可以configuration为自动完成更聪明的configuration,我并不是那么热衷)。 将切换到zsh ,即使在less数情况下,使我的生活更轻松? 或者,如果你花时间学习为什么它更好,它只是一个更好的壳? (例子也不错:) ) @ Rodney Amato &@ Vulcan Eager给出了两个很好的理由分别坚持bash和切换到zsh 。 看起来我必须同时调查! 哦,好:) 有没有人有争论双方的意见?

伪terminal不会被分配,因为stdin不是terminal

我正在尝试编写一个在远程服务器上创build一些目录的shell脚本,然后使用scp将文件从本地计算机复制到远程计算机上。 以下是我到目前为止: ssh -t user@server<<EOT DEP_ROOT='/home/matthewr/releases' datestamp=$(date +%Y%m%d%H%M%S) REL_DIR=$DEP_ROOT"/"$datestamp if [ ! -d "$DEP_ROOT" ]; then echo "creating the root directory" mkdir $DEP_ROOT fi mkdir $REL_DIR exit EOT scp ./dir1 user@server:$REL_DIR scp ./dir2 user@server:$REL_DIR 每当我运行它,我得到这个消息: Pseudo-terminal will not be allocated because stdin is not a terminal. 剧本永远挂起。 我的公钥在服务器上是可信的,我可以运行脚本以外的所有命令。 有任何想法吗?