在 IBM i qsh 中使用 Unix ls 将对象列表添加到 ifs 上的文件
list of objects to a file on ifs using Unix ls in IBM i qsh
我发现我可以对 IBM i (as400) 对象使用 qsh to 运行 unix 命令。
我想在 IBM i qsh 中使用 ls 将对象列表流式传输到 ifs 上的文件。这有效,但输出似乎是 EBCDIC 格式,可读性不强。有没有办法转换成 ASCII?
ls -ails /QSYS.LIB/ERP.LIB > all_ERP_files.txt
您是对的,只需在 qsh
中重定向 ls
的输出即可得到 EBCDIC。但是您可以通过 iconv
管道输出,将其转换为 utf-8,如下所示:
ls -ails /QSYS.LIB/ERP.LIB | iconv -f37 -t1208 > all_ERP_files.txt
-f37
假设美国 CCSID(那是我的)。如有必要,您可以将其替换为您的以获得更好的转换。
考虑到 John 的回答,我尝试使用 PASE call qp2term
,当我这样做时,我不必通过 iconv
管道输出,文件是在 CCSID 819 中创建的。
对一般Unix社区的熏陶,qsh
是IBM i平台上的Unix类型shell,ibm-midrange
。该平台使用 EBCDIC 而不是像其他 Unix 一样使用 ASCII。
由于 Qshell(由 qsh
或 strqsh
调用)在 EBCDIC 中运行,您至少可以使用几个解决方法:
- 尝试在 PASE 中执行相同的命令。
要调用 PASE shell(而不是 Qshell),请在 CL 命令提示符下执行 CALL QP2TERM
。从那里,大多数相同的 Unix 风格的命令都可用,除了 shell 明确地以 ASCII 运行。
- 事后将流文件转换为 ASCII。
除了@jmarkmurphy 的建议外,您还可以在 CL 中使用 CPY
命令:
CPY &STMF TOOBJ(&STMF) TOCCSID(819) DTAFMT(*TEXT) REPLACE(*YES)
在上面,将 &STMF
替换为您要转换的流文件的名称。 CCSID 819 是 Latin-1;你可以使用最适合你的任何东西。
供其他人在以后的搜索中使用:从 IBM i 传输数据时,很可能需要转换为 ASCII。
IBM i FTP 服务器在不 传输二进制文件时将 EBDIC 动态转换为 ASCII Latin1。模式 ASCII 是必需的。
有关详细信息,请参阅此 PDF for FTP Support from IBM。
我发现我可以对 IBM i (as400) 对象使用 qsh to 运行 unix 命令。 我想在 IBM i qsh 中使用 ls 将对象列表流式传输到 ifs 上的文件。这有效,但输出似乎是 EBCDIC 格式,可读性不强。有没有办法转换成 ASCII?
ls -ails /QSYS.LIB/ERP.LIB > all_ERP_files.txt
您是对的,只需在 qsh
中重定向 ls
的输出即可得到 EBCDIC。但是您可以通过 iconv
管道输出,将其转换为 utf-8,如下所示:
ls -ails /QSYS.LIB/ERP.LIB | iconv -f37 -t1208 > all_ERP_files.txt
-f37
假设美国 CCSID(那是我的)。如有必要,您可以将其替换为您的以获得更好的转换。
考虑到 John 的回答,我尝试使用 PASE call qp2term
,当我这样做时,我不必通过 iconv
管道输出,文件是在 CCSID 819 中创建的。
对一般Unix社区的熏陶,qsh
是IBM i平台上的Unix类型shell,ibm-midrange
。该平台使用 EBCDIC 而不是像其他 Unix 一样使用 ASCII。
由于 Qshell(由 qsh
或 strqsh
调用)在 EBCDIC 中运行,您至少可以使用几个解决方法:
- 尝试在 PASE 中执行相同的命令。
要调用 PASE shell(而不是 Qshell),请在 CL 命令提示符下执行 CALL QP2TERM
。从那里,大多数相同的 Unix 风格的命令都可用,除了 shell 明确地以 ASCII 运行。
- 事后将流文件转换为 ASCII。
除了@jmarkmurphy 的建议外,您还可以在 CL 中使用 CPY
命令:
CPY &STMF TOOBJ(&STMF) TOCCSID(819) DTAFMT(*TEXT) REPLACE(*YES)
在上面,将 &STMF
替换为您要转换的流文件的名称。 CCSID 819 是 Latin-1;你可以使用最适合你的任何东西。
供其他人在以后的搜索中使用:从 IBM i 传输数据时,很可能需要转换为 ASCII。
IBM i FTP 服务器在不 传输二进制文件时将 EBDIC 动态转换为 ASCII Latin1。模式 ASCII 是必需的。
有关详细信息,请参阅此 PDF for FTP Support from IBM。