私はできます。
$ echo $COLUMNS
95
結果を得るが、もし私が
env | grep COLUMNS
または
set | grep COLUMNS
私は何も得られませんでした。
(更新:ちょうどbashで動作が異なることがわかりました。私はzshを使用しています。)
第二に、列を含むリストをどのように/どこで取得できますか? (直接回答することは除く。)
答え1
set | grep COLUMNS
「バイナリファイル(標準入力)の一致」を表示する必要があります(GNU grepを使用)。ムル犯人は正しく識別されました。 zsh では、IFS
標準文字のスペース、タブ、改行に加えて null バイトも含まれています。
set | grep --text COLUMNS
grepがバイナリファイルをスキップする傾向を無視するように実行します。
runはset
多くのシェルで出力があいまいであるため、現在設定されているパラメータを一覧表示する移植可能で信頼できる方法ではありません(変数の値の一部である改行文字と変数を区切る改行文字を区別できません)。 zshset
の出力はあいまいにならないように引用されていますが、解析するのは難しいです。grep
偽の肯定がまだ返されることがあります。 zshのすべてのパラメータを一覧表示するには、配列のキーを列挙しますparameters
。
print -rl ${(ko)parameters}
答え2
推測しなければならないと疑うだろう。IFS
。またset
リストされていますIFS
。私にとって、IFS
それは(スペース、水平タブ、改行、nul)でした。
$ printf "%s" "$IFS" | od -a
0000000 sp ht nl nul
0000004
\0
NUL文字()がある場合はgrep
バイナリとして扱われるため、ユーザーによっては次のようにgrep
表示されることがあります。
$ set | grep COLUMNS
Binary file (standard input) matches
grep
入力がテキストとして処理されるように強制できます。
-a, --text
Process a binary file as if it were text; this is equivalent
to the --binary-files=text option.
だから:
$ set | grep COLUMNS --text
COLUMNS=239