标签: ksh

将通配符传递给别名

我使用modifies list命令作为别名(在KSH中):

alias ltf='ls -lrt -d -1 $PWD/*'

所以命令ltf显示如下:

-rw-r--r-- 1 myuser mygroup 0 Apr 18 12:00 /usr/test.txt
-rw-r--r-- 1 myuser mygroup 0 Apr 18 12:00 /usr/test.log

现在我想使用通配符.但使用ltf *.log不起作用.

实现这一目标的最佳方法是什么?


更新:我想指定我的问题,因为到目前为止答案并没有解决我的问题:该命令ls -lrt -d -1 $PWD/*执行带有一些选项的列表命令并显示完整路径,这对我来说非常重要.

不幸的是,别名方法不允许使用通配符参数.我的目标是使这成为可能.可能这是将命令创建为函数的最佳方法.这在答案中提到,但它还没有工作(见评论).

有任何想法吗?

unix shell ksh

5
推荐指数
1
解决办法
3916
查看次数

我应该使用$(())来计算ksh中的算术表达式吗?

1)如果我操作整数,我应该使用$(())吗?

>typeset -i x=0
>typeset -i y=0
>typeset -i z=0
>y=$(($x+1))
>print $y
1
>z=$x+1
>print $z
1
Run Code Online (Sandbox Code Playgroud)

如您所见,z和y都有正确的结果.
仅在变量未声明为整数的情况下才有区别:

>typeset j
>typeset k
>j=$(($x+1))
>print $j
1
>k=$x+1
>print $k
0+1
Run Code Online (Sandbox Code Playgroud)

2)$(($ x + 1))和$((x + 1))之间有什么区别?

print $(($ x + 1))
1
print $((x + 1))
1

let有同样的情况:

x = 1
让x = $ x + 1
打印$ x
2
让x = x + 1
打印$ x
3

unix ksh

5
推荐指数
1
解决办法
4826
查看次数

Awk和多文件处理可能吗?

我需要处理两个文件内容.我想知道我们是否可以使用一个nawk声明来解决它.

文件A内容:

AAAAAAAAAAAA  1
BBBBBBBBBBBB  2
CCCCCCCCCCCC  3
Run Code Online (Sandbox Code Playgroud)

文件B内容:

XXXXXXXXXXX  3
YYYYYYYYYYY  2
ZZZZZZZZZZZ  1
Run Code Online (Sandbox Code Playgroud)

我想比较,如果$2(第二场)在文件中的是相反$2的文件B.我不知道如何写规则NAWK多文件处理?我们如何将A $2与B 区分开来$2

编辑:我需要将A的第一行(即1)的2美元与B的最后一行(再次为1)的2美元进行比较.然后比较A中第2行的2美元和第2行的第2行中的2美元.等.....

unix file-io awk ksh nawk

5
推荐指数
2
解决办法
8598
查看次数

如何删除ksh中字符串变量的最后一个字符?

我有一个字符串变量,我想删除它的最后一个字符.

例如:从"testing1"传递到"testing".

我怎样才能在KSH中做到这一点?

string variables ksh var

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

如何从给定时间戳中查找超过N天的文件

我想从格式为YYYYMMDDHH的给定时间戳中查找超过N天的文件

我可以使用以下命令找到超过2天的文件,但是这会查找具有当前时间的文件:

find /path/to/dir -mtime -2 -type f -ls
Run Code Online (Sandbox Code Playgroud)

让我们说我timestamp=2011093009要输入我想要查找2011093009之前2天以上的文件.

一直在做我的研究,但似乎无法搞清楚.

unix shell ksh find

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

如何检查文本文件的行尾以查看它是unix还是dos格式?

如果文件是unix格式(仅在每行的末尾),我需要将文本文件转换为dos格式(以每行结束0x0d0x0a,而不是0x0a0x0a结束).

我知道如何转换它(sed 's/$/^M/'),但不知道如何检测文件的行尾字符.

我正在使用ksh.

任何帮助,将不胜感激.

[更新]:有点想通了,这是我的ksh脚本来做检查.

[qiangxu@host:/my/folder]# cat eol_check.ksh
#!/usr/bin/ksh

if ! head -1 $1 |grep ^M$ >/dev/null 2>&1; then
  echo UNIX
else
  echo DOS
fi
Run Code Online (Sandbox Code Playgroud)

在上面的脚本,^M应该插在viCtrl-VCtrl-M.

想知道是否有更好的方法.

unix ksh dos end-of-line

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

Heredoc 中的 Concat 变量

我有以下 KornShell (ksh) 脚本:

VAR='/this/is/a/path/'
DAT='01_01_2014'

cat << EOF
... what should I do here to concat variables with strings? ...
$VARfoldername$DAT
EOF
Run Code Online (Sandbox Code Playgroud)

然而,这只给了我(因为变量 $VARfoldername 被评估,这显然不存在):

01_01_2014
Run Code Online (Sandbox Code Playgroud)

我需要将 $VAR 与另一个字符串连接,然后与 $DAT 连接,这样运行脚本会导致:

/this/is/a/path/foldername01_01_2014
Run Code Online (Sandbox Code Playgroud)

string variables shell ksh concatenation

5
推荐指数
1
解决办法
1037
查看次数

如何使用mailx以文本形式发送文件并向电子邮件正文添加额外文本?

如何在电子邮件中随文件内容一起发送一些文本,不想将文件作为附件发送?是否可以通过mailx命令?

mailx -s "Email log file" abc@mail.com <$log_file;
Run Code Online (Sandbox Code Playgroud)

$log_file 内容通过电子邮件发送但下面不起作用

echo "Comment: log contains last month report" | mailx -s "Email log file" abc@mail.com < $log_file
Run Code Online (Sandbox Code Playgroud)

电子邮件中需要的输出:

Comment: Log contains last month report

 <All contents of $LOG_FILE as text>
Run Code Online (Sandbox Code Playgroud)

shell ksh mailx

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

在 AIX 中使用单个 AWK 从字段中提取子字符串

我有一个文件,file内容如下:

stringa    8.0.1.2     stringx
stringb    12.01.0.0    stringx
Run Code Online (Sandbox Code Playgroud)

我必须从字段 2 中获取子字符串(前两个带点的值)。我目前正在做cat file | awk '{print $2}' | awk -F. '{print $1"."$2}'并得到预期的输出:

8.0
12.01
Run Code Online (Sandbox Code Playgroud)

我怎样才能用一个 AWK 来做到这一点?

我尝试过使用 match(),但我没有看到向后引用的选项。

aix awk grep ksh

5
推荐指数
1
解决办法
1484
查看次数

如何在 jq 脚本文件的命令中使用环境变量?

我正在处理大量 OpenAPI 3.0.0 文件,我需要从中创建 html 页面。每个 OpenAPI 文件代表大对象模型中的一个实体。Swagger Viewer、redoc-cli 和其他工具无法生成我需要的文档类型。这是一个示例文件:

{
    "openapi": "3.0.0",
    "paths": {},
    "info": {
        "title": "My File",
        "version": "1.0.0"
    },
    "components": {
        "schemas": {
            "my_entity_name": {
                "type": "object",
                "description": "....",
                "properties": {
                    "propertyOne": {
                        "type": "string",
                        "description": "..."
                    },
                    "propertyTwo": {
                        "type": "string",
                        "format": "date",
                        "description": "..."
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的解决方案中,我使用 jq 来解析文件(macOS、ksh)。由于有这么多,我想将一个环境变量传递给jq。这在 shell 中很简单:

 % entity_name=my_entity_name
 % jq -r 'select(.components.schemas.'$entity_name'.properties != null)' file.json
Run Code Online (Sandbox Code Playgroud)

在脚本文件中,方法是类似的,我得到了我期望的结果。但是,考虑到我想要做的事情的性质,我想使用 jq -f 选项将 jq 命令放入文件中。

我尝试将以下内容放入名为的文件中jqscript.jq

 select(.components.schemas.'$entity_name'.properties …
Run Code Online (Sandbox Code Playgroud)

json ksh jq

5
推荐指数
1
解决办法
4065
查看次数

标签 统计

ksh ×10

unix ×5

shell ×4

awk ×2

string ×2

variables ×2

aix ×1

concatenation ×1

dos ×1

end-of-line ×1

file-io ×1

find ×1

grep ×1

jq ×1

json ×1

mailx ×1

nawk ×1

var ×1