我使用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/*执行带有一些选项的列表命令并显示完整路径,这对我来说非常重要.
不幸的是,别名方法不允许使用通配符参数.我的目标是使这成为可能.可能这是将命令创建为函数的最佳方法.这在答案中提到,但它还没有工作(见评论).
有任何想法吗?
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
我需要处理两个文件内容.我想知道我们是否可以使用一个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美元.等.....
我有一个字符串变量,我想删除它的最后一个字符.
例如:从"testing1"传递到"testing".
我怎样才能在KSH中做到这一点?
我想从格式为YYYYMMDDHH的给定时间戳中查找超过N天的文件
我可以使用以下命令找到超过2天的文件,但是这会查找具有当前时间的文件:
find /path/to/dir -mtime -2 -type f -ls
Run Code Online (Sandbox Code Playgroud)
让我们说我timestamp=2011093009要输入我想要查找2011093009之前2天以上的文件.
一直在做我的研究,但似乎无法搞清楚.
如果文件是unix格式(仅在每行的末尾),我需要将文本文件转换为dos格式(以每行结束0x0d0x0a,而不是0x0a仅0x0a结束).
我知道如何转换它(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应该插在vi同Ctrl-V和Ctrl-M.
想知道是否有更好的方法.
我有以下 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) 如何在电子邮件中随文件内容一起发送一些文本,不想将文件作为附件发送?是否可以通过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) 我有一个文件,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(),但我没有看到向后引用的选项。
我正在处理大量 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)