Questions tagged «ksh»

Korn外壳程序(ksh)是具有高级脚本功能的外壳程序,通常在商业单位和某些BSD系统上找到,但很少在Linux上使用。

2
为什么要在shell脚本中转​​义琐碎的字符?
我刚刚打开了一个旧的shell脚本(在Solaris上用旧的ksh88编写),发现在整个代码中重复了以下内容: [ -f $myfile ] && \rm -f $myfile 转义的反斜杠使我感到奇怪。 我知道这是故意的,因为在整个代码中都重复了这种(显然无用的)转义。原始作者早已不在,我无法与他取得联系以询问他。 这仅仅是作者的一个有趣的特质,还是某种在某个时间点变得有意义的已弃用的良好实践?也许实际上是推荐的做事方式,而我完全错过了一些东西?

7
在运行时确定脚本中的shell
据我所知,要确定我们echo $0在外壳中使用的当前外壳。而是我希望我的脚本检查它在哪个外壳中运行。因此,我尝试$0在脚本中进行打印,并按原样返回了脚本的名称。因此,我的问题是如何找到运行时脚本运行在哪个shell中?
22 linux  shell  ksh 


5
有没有一种方法可以汇总列出的文件大小?
这是我用来列出一些文件的命令: find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \; -rw-r--r-- 1 qa1wrk15 test 1265190 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_7.20110929.extract.sys -rw-r--r-- 1 qa1wrk15 test 1345554 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_2.20110929.extract.sys -rw-r--r-- 1 qa1wrk15 test 1370532 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_3.20110929.extract.sys -rw-r--r-- 1 qa1wrk15 test 1399854 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_8.20110929.extract.sys 等等。 现在,我想通过累加第5列来计算这些文件的总大小。我想到要使用awk来执行此操作,因此我在特定目录中测试了以下内容 …

2
// 1 /是什么意思
使用Korn Shell的QNX4操作系统。这是在.profile文件中。 export VARDIR=//1/usr/pvcs // 1 /代表什么?
19 ksh  qnx 


12
如何比较色差输出?
我想有条件地格式化Unix文件,我目前正在处理diff命令,并且想知道是否可以格式化文本文件。diff命令输出。 例: 匹配的值应显示为绿色。 不匹配的值应显示为红色。 假设我有两个文件file1,file2并且我的命令是diff file1 file2。 现在我想假设输出包含5个不匹配项,那么这些不匹配项应以红色显示。如何使用unix实现? 简而言之,“对于不匹配的值,将diff命令的输出颜色更改为红色”
18 bash  ksh  diff 


2
一段时间后如何使根外壳超时?
有没有一种方法可以使根shell(例如in gnome-terminal)“超时”,以便在一定时间内不发出任何命令后,shell退出? 我正在寻找可在bashFedora和kshOpenBSD 上使用的解决方案。
15 bash  ksh 

8
检查变量是像Bourne这样的shell中的数组吗?
在像shell这样的Bourne中,它支持数组变量,我们可以使用一些解析来检查变量是否为数组。 下面的所有命令都在运行后运行a=(1 2 3)。 zsh: $ declare -p a typeset -a a a=( 1 2 3 ) bash: $ declare -p a declare -a a='([0]="1" [1]="2" [2]="3")' ksh93: $ typeset -p a typeset -a a=(1 2 3) pdksh 及其派生词: $ typeset -p a set -A a typeset a[0]=1 typeset a[1]=2 …
14 bash  shell  zsh  ksh  yash 

4
如何使用正则表达式进行scp
我正在尝试在ksh中复制所有不以字母“ a”开头的文件。 从源计算机复制到目标计算机工作正常: scp -p !(a*) user@machine:/path/directory/. 但是,如果我在目标服务器上并想从源服务器复制,则失败: scp -p user@machine:/path/!(a*) . 有任何想法吗?
13 ksh  scp 

1
ksh93如何避免命令替换中的派生
给定 cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))' 炮弹往往需要制作两个叉子才能实现 strace-f(){ strace -f "$@" 2>&1; }; for sh in dash bash zsh ksh; do printf "$sh\t" ; strace-f $sh -c "$cmd" |grep -e clone -e fork -c; done 除了ksh英勇地使它不分叉一次: dash 2 bash 2 zsh 2 ksh 0 它是如何做到的? 编辑: 插入管道的情况如下: …

7
如何安全获取ksh的版本?
如何从ksh脚本中安全地获取ksh的版本? 我已经看到以下解决方案: ksh --version echo ${.sh.version} echo $KSH_VERSION 在适当的情况下,所有这些方法都可以正常工作。但是,我关心的是不完美的情况。 具体来说,我使用的几台机器具有较旧的ksh版本,出于我的目的,这些版本严重缺乏功能。无论如何,我要(以编程方式)检查版本的原因是要查看ksh版本是否为功能较弱的版本之一。如果是这样,我想用不太出色的代码执行分支。 但是,在有问题的机器上,shell的能力不足导致无法检查版本... 如果我尝试ksh --version,它什么也不打印,并打开一个新实例ksh! 如果尝试echo ${.sh.version},ksh将其视为语法错误,不能使用丢弃2> /dev/null。 $ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution 当然echo $KSH_VERSION看起来可以正常工作-我的意思是它不会崩溃-尽管在这些机器上它是空白的。另外,我看到的地方是KSH_VERSION只被设定pdksh。 问题: 如何安全地以ksh编程方式检查版本?就我的目的而言,我并不在乎实际的版本号是多少,而只是它是否是的过时版本ksh。 是否$KSH_VERSION足够好?我的意思是,如果空白,那么ksh一定是过时的版本吗?该其他论坛是否正确,即使对于较新版本的,也可能未设置ksh? 根本没有办法检查吗?

3
tar到管道,但将-v详细输出与STDERR分开
普通的tar命令 tar cvf foo.tar ./foo >foo.out 2>foo.err 具有三个输出IO流 将数据存档到foo.tar 文件名列表到STDOUT(重定向到foo.out) 错误消息到STDERR(重定向到foo.err) 然后,我可以检查foo.err中是否有错误消息,而不必阅读文件名列表。 如果我想对存档数据做一些事情(通过netcat或特殊的压缩程序通过管道传输),则可以使用tar的 -f -选项 tar cvf - ./foo 2>foo.err | squish > foo.tar.S 但是现在我的文件名列表和我的错误消息混在一起了,因为tar的-v输出显然无法转到STDOUT(这是存档数据流的地方),因此tar巧妙地将其写入了STDERR。 使用Korn Shell,有一种方法可以构造一个命令,该命令将存档流传输到另一个命令,但仍然捕获-v输出与任何错误消息。
12 tar  ksh  io 

2
蠕动删除6个月以上的文件
每月设置一次cron作业以启动脚本。 脚本是每个月过大时轮换一个文件,然后重命名旧文件。当文件超过六个月时,我希望将其删除。 希望每月运行一次此脚本。可以删除旧的吗? 如果还不够清楚,请告诉我。
12 scripting  ksh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.