「シェルスクリプトの基礎 - ファイルとディレクトリ」の版間の差分

ナビゲーションに移動 検索に移動
(文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…)
 
129行目: 129行目:
== ファイルの処理 ==
== ファイルの処理 ==
==== ワイルドカードの使用 ====
==== ワイルドカードの使用 ====
ワイルドカード(*)を使用して、カレントディレクトリ内のファイルを順に処理することができる。
ワイルドカード(*)を使用して、カレントディレクトリ内のファイルを順に処理することができる。<br>
以下の例では、全てのファイルを繰り返し処理している。
以下の例では、全てのファイルを繰り返し処理している。<br>
  <syntaxhighlight lang="sh">
  <syntaxhighlight lang="sh">
  for FILENAME in *; do
  for FILENAME in *; do
137行目: 137行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
特定の拡張子を持つファイルのみを列挙する場合は、以下のように記述する。
特定の拡張子を持つファイルのみを列挙する場合は、以下のように記述する。<br>
以下の例では、全てのPNGファイルを繰り返し処理している。
以下の例では、全てのPNGファイルを繰り返し処理している。<br>
  <syntaxhighlight lang="sh">
  <syntaxhighlight lang="sh">
  for PNGFILE in *.png; do
  for PNGFILE in *.png; do
145行目: 145行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
また、次のように1行で記述することもできる。
また、次のように1行で記述することもできる。<br>
  <syntaxhighlight lang="sh">
  <syntaxhighlight lang="sh">
  for PNGFILE in *.png; do echo "$PNGFILE"; done
  for PNGFILE in *.png; do echo "$PNGFILE"; done
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
ワイルドカードを使用する場合、アスタリスク(*)をクォートの中に入れると、シェルによるワイルドカードの展開が行われない。<br>
<br>
<syntaxhighlight lang="sh">
# 推奨する記述
## パス部分は安全にクォートされて、アスタリスクはワイルドカードとして機能する
rm -r "$HOME/.cache/"*
# 間違った記述
## アスタリスクがクォート内にあるため、*は文字列として扱われてワイルドカードとして機能しない
rm -r "$HOME/.cache/*"
## パスにスペースが含まれている場合、パスが正しく解釈されない
## また、変数が未定義の場合、意図しない動作につながる可能性がある
rm -r $HOME/.cache/*
</syntaxhighlight>
<br>
==== findコマンドの結果の使用(再帰処理) ====
==== findコマンドの結果の使用(再帰処理) ====
以下の例では、findコマンドで検索したファイルを、while文で順に処理している。
以下の例では、findコマンドで検索したファイルを、while文で順に処理している。

案内メニュー