标签: ksh

删除文件的第一行

如何删除文件的第一行并保留更改?

我试过这个,但它删除了文件的全部内容。

$sed 1d file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)

ksh sed shell-script

150
推荐指数
6
解决办法
42万
查看次数

通过分隔符分割字符串并获得第 N 个元素

我有一个字符串:

one_two_three_four_five
Run Code Online (Sandbox Code Playgroud)

我需要从上面的字符串中保存一个变量Atwo和变量Bfour

我正在使用 ksh。

ksh string cut split

150
推荐指数
6
解决办法
53万
查看次数

$* 和 $@ 有什么区别?

考虑以下代码:

foo () {
    echo $*
}

bar () {
    echo $@
}

foo 1 2 3 4
bar 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

它输出:

1 2 3 4

1 2 3 4

我正在使用 Ksh88,但我也对其他常见的 shell 感兴趣。如果您碰巧知道特定 shell 的任何特殊性,请务必提及它们。

我在 Solaris 上的 Ksh 手册页中找到了以下内容:

$* 和 $@ 的含义在不引用或用作参数赋值或文件名时是相同的。然而,当用作命令参数时,$* 等价于 ``$1d$2d...'',其中 d 是 IFS 变量的第一个字符,而 $@ 等价于 $1 $2 ....

我尝试修改IFS变量,但它不会修改输出。也许我做错了什么?

shell ksh quoting arguments

119
推荐指数
6
解决办法
4万
查看次数

为什么不带引号的带空格的参数扩展在双括号“[[”内起作用,而在单括号“[”内不起作用?

我对使用单括号或双括号感到困惑。看看这段代码:

dir="/home/mazimi/VirtualBox VMs"

if [[ -d ${dir} ]]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

尽管字符串包含空格,但它工作得很好。但是当我将其更改为单括号时:

dir="/home/mazimi/VirtualBox VMs"

if [ -d ${dir} ]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

它说:

./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected
Run Code Online (Sandbox Code Playgroud)

当我将其更改为:

dir="/home/mazimi/VirtualBox VMs"

if [ -d "${dir}" ]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

它工作正常。有人可以解释发生了什么吗?什么时候应该在变量周围分配双引号,"${var}"以防止空格引起的问题?

bash ksh quoting test

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

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

仅使用 du 文件获取大小

如何使用 du 命令获取所有文件及其子目录中所有文件的大小。

我正在尝试使用以下命令来获取所有文件(以及子目录中的文件)的大小

find . -type f | du -a

但这也会打印出文件夹大小。如何获取子目录中所有文件和文件的大小列表?我也尝试过,exec flag但我不确定在执行findinto的结果后如何将输出通过管道传输到另一个命令中du

操作系统是带有 ksh shell 的 AIX 6.1。

ksh find disk-usage aix files

72
推荐指数
4
解决办法
7万
查看次数

壳ksh93死了吗?

在 2013-01-10 Glenn Fowler 将此发布到ast-users 邮件列表

正如在 AST 和 UWIN 列表中多次指出的那样,AT&T 对 OpenSouce 软件的支持很少,这就是为什么我们很少有人参与我们相当大的 AST 软件集合。尽管如此kshnmakevczipUWIN和其他 AST 工具仍在几个 AT&T 项目中继续使用。

事实证明,软件并不是唯一缺乏支持的东西:dgk (David Korn)(AT&T 研究员,服务 36 年)和 gsf (Glenn Fowler)(AT&T 研究员,服务 29 年)都已终止,10 月生效10. 我们的第三个主要合作伙伴 Phong Vo(AT&T 研究员,服务 32 年)几个月前离开了 Google。UWIN 维护者 Jeff Fellin 仍在 AT&T 工作,并为一些关键操作提供 UWIN 支持。

dgk 和 gsf 都将继续在 AST 软件上工作,并且实际上可能有更多的时间(至少在短期内)专注于它。

下载站点和邮件组将至少在接下来的几个月内保留在 AT&T 中。我们的 AT&T 同事 dr.ek,AST 用户和错误检测器,将维护该站点。我们已经保护了 astopen.org 域,并且正在研究非 AT&T 托管选项,包括带有错误跟踪功能的存储库。

改变的过程需要时间;用户社区的耐心将不胜感激。在一个基本上稳定了近 30 年的环境中工作后,有 …

development ksh history

58
推荐指数
4
解决办法
1万
查看次数

什么时候使用大括号扩展?

我了解什么是大括号扩展,但我不知道如何最好地使用它。

你什么时候使用它?
如果你有自己的小窍门,请教我一些方便和出色的例子。

shell bash ksh zsh brace-expansion

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

导出带有点 (.) 的变量

如何导出带有点的变量。当我尝试时,我得到“无效的变量名”:

 export my.home=/tmp/someDir
-ksh: my.home=/tmp/someDir: invalid variable name
Run Code Online (Sandbox Code Playgroud)

即使转义元字符点 (.) 也无济于事

$ export my\.home=/tmp/someDir
export: my.home=/tmp/someDir: is not an identifier
Run Code Online (Sandbox Code Playgroud)

shell ksh environment-variables

50
推荐指数
2
解决办法
9万
查看次数

如何颜色差异输出?

我想有条件地格式化 Unix 文件,我目前正在处理diff命令,想知道是否可以格式化diff命令输出的文本。

例子:

匹配的值应显示为绿色。
不匹配的值应显示为红色。

假设我有两个文件file1file2我的命令diff file1 file2

现在我希望假设输出包含 5 个不匹配,那么这些不匹配应该以红色显示。如何使用unix实现这一目标?

简而言之,“对于不匹配的值,将 diff 命令的输出颜色更改为红色”

colors bash ksh diff

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