全般/ファイルディスクリプタとリダイレクト
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(全般)
''ファイルディスクリプタとリダイレクト関連''
#contents
/////////////////////////////////////////////////////////...
*ファイルディスクリプタ番号とは [#g121c7cb]
ファイルディスクリプタとは、プログラムがアクセスするファ...
のデバイスを仮想化して識別するために用いる識別子。
0から順番に整数の番号が割り当てられる。
標準では、0が標準入力、1が標準出力、2が標準エラー出力に割...
事前に CON デバイスがオープンされている。
3番以降は、プログラムがオープンするファイル等に割り当てら...
/////////////////////////////////////////////////////////...
*リダイレクトとパイプ [#d9176460]
記号 < によって入力のリダイレクト、> によって出力のリダイ...
それぞれ0番、1番のファイルディスクリプタが対象となる。~
他の番号のディスクリプタをリダイレクトする場合は、< > の...
数字は0から9までで、10> と書いても、10はディスクリプタ番...
リダイレクト先は、ファイルや CON や NUL 等のデバイスの他...
同じと言う指定が出来る。
例えば、標準出力と標準エラー出力の両方を同じファイルにリ...
dir xxx >file 2>&1
と書く(順序が重要)。
また、標準出力は | によるパイプ機能で他のプログラムの標準...
route 2>&1 | more
のように標準エラー出力を標準出力と同じものにリダイレクト...
ちなみに、1だけをファイルに書きたい場合、
echo 1>file
では、1がディスクリプタ番号と見なされるため駄目で、
echo ^1>file
と、^ で 1 をクォートするか、
>file echo 1
と書く必要がある(次項も参照)。
/////////////////////////////////////////////////////////...
*リダイレクトの記述位置 [#kd452953]
リダイレクトは、コマンドのどこに書いても良い。
echo ABC>file.txt → ABC が書き込まれる
echo ABC >file.txt → ABC の後ろに空白がついて書き...
echo >file.txt ABC → 空白が ABC の前について書き込...
>file.txt echo ABC → ABC が書き込まれる
>file.txt @echo ABC → エコー抑止の@は文頭に書くので...
@>file.txt echo ABC → エコー抑止はこう書く
echo の例を示したが他のコマンドでも同じである。ただし、fo...
構造を持った構文全体をリダイレクトするには、( ) で囲むこ...
>ping.out ping %HOST% → 正しい
>file.txt for %%A in (*) do echo %%A → 誤り
for >file.txt %%A in (*) do echo %%A → 誤り
for %%A in (*) do >>file.txt echo %%A → echoに対し...
>file.txt (for %%A in (*) do echo %%A) → 正しい
echo で複数行を1行ずつファイルに書く場合、
> tmp1.bat echo @echo off
>>tmp1.bat echo setlocal
>>tmp1.bat echo set N=0
>>tmp1.bat echo for /f "delims=" %%%%A in (%%1) do set /...
のように行頭に書くと見やすい。
後ろに書くと、リダイレクトの位置が縦に揃わないので見にく...
(縦にそろえると、余分な空白が後ろについてしまう)
または、
(echo @echo off
echo selocal
echo set N=0
echo for /f "delims=" %%%%A in (%%1^) do set /a N+=1) >...
でも良いが、途中の ) を ^ でクォートする必要がある。
type NUL >out.txt
for /l %%I in (1,1,10) do echo %%I>>out.txt
は、
(for /l %%I in (1,1,10) do echo %%I) >out.txt
と、for文全体を ( ) で囲んでリダイレクトしたほうがきれい...
また、
set AA=A 1
echo.%AA%>temp
では、AA の末尾にある 1 がファイルディスクリプタ番号と見...
1 はファイルに書き込まれない。このように中身が何であるか...
set AA=A 1
>temp echo.%AA%
とする必要がある。
/////////////////////////////////////////////////////////...
#navi(全般)
終了行:
#navi(全般)
''ファイルディスクリプタとリダイレクト関連''
#contents
/////////////////////////////////////////////////////////...
*ファイルディスクリプタ番号とは [#g121c7cb]
ファイルディスクリプタとは、プログラムがアクセスするファ...
のデバイスを仮想化して識別するために用いる識別子。
0から順番に整数の番号が割り当てられる。
標準では、0が標準入力、1が標準出力、2が標準エラー出力に割...
事前に CON デバイスがオープンされている。
3番以降は、プログラムがオープンするファイル等に割り当てら...
/////////////////////////////////////////////////////////...
*リダイレクトとパイプ [#d9176460]
記号 < によって入力のリダイレクト、> によって出力のリダイ...
それぞれ0番、1番のファイルディスクリプタが対象となる。~
他の番号のディスクリプタをリダイレクトする場合は、< > の...
数字は0から9までで、10> と書いても、10はディスクリプタ番...
リダイレクト先は、ファイルや CON や NUL 等のデバイスの他...
同じと言う指定が出来る。
例えば、標準出力と標準エラー出力の両方を同じファイルにリ...
dir xxx >file 2>&1
と書く(順序が重要)。
また、標準出力は | によるパイプ機能で他のプログラムの標準...
route 2>&1 | more
のように標準エラー出力を標準出力と同じものにリダイレクト...
ちなみに、1だけをファイルに書きたい場合、
echo 1>file
では、1がディスクリプタ番号と見なされるため駄目で、
echo ^1>file
と、^ で 1 をクォートするか、
>file echo 1
と書く必要がある(次項も参照)。
/////////////////////////////////////////////////////////...
*リダイレクトの記述位置 [#kd452953]
リダイレクトは、コマンドのどこに書いても良い。
echo ABC>file.txt → ABC が書き込まれる
echo ABC >file.txt → ABC の後ろに空白がついて書き...
echo >file.txt ABC → 空白が ABC の前について書き込...
>file.txt echo ABC → ABC が書き込まれる
>file.txt @echo ABC → エコー抑止の@は文頭に書くので...
@>file.txt echo ABC → エコー抑止はこう書く
echo の例を示したが他のコマンドでも同じである。ただし、fo...
構造を持った構文全体をリダイレクトするには、( ) で囲むこ...
>ping.out ping %HOST% → 正しい
>file.txt for %%A in (*) do echo %%A → 誤り
for >file.txt %%A in (*) do echo %%A → 誤り
for %%A in (*) do >>file.txt echo %%A → echoに対し...
>file.txt (for %%A in (*) do echo %%A) → 正しい
echo で複数行を1行ずつファイルに書く場合、
> tmp1.bat echo @echo off
>>tmp1.bat echo setlocal
>>tmp1.bat echo set N=0
>>tmp1.bat echo for /f "delims=" %%%%A in (%%1) do set /...
のように行頭に書くと見やすい。
後ろに書くと、リダイレクトの位置が縦に揃わないので見にく...
(縦にそろえると、余分な空白が後ろについてしまう)
または、
(echo @echo off
echo selocal
echo set N=0
echo for /f "delims=" %%%%A in (%%1^) do set /a N+=1) >...
でも良いが、途中の ) を ^ でクォートする必要がある。
type NUL >out.txt
for /l %%I in (1,1,10) do echo %%I>>out.txt
は、
(for /l %%I in (1,1,10) do echo %%I) >out.txt
と、for文全体を ( ) で囲んでリダイレクトしたほうがきれい...
また、
set AA=A 1
echo.%AA%>temp
では、AA の末尾にある 1 がファイルディスクリプタ番号と見...
1 はファイルに書き込まれない。このように中身が何であるか...
set AA=A 1
>temp echo.%AA%
とする必要がある。
/////////////////////////////////////////////////////////...
#navi(全般)
ページ名: