<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Shellscript on Momori Nakano</title><link>https://momori.dev/tags/shellscript/</link><description>Recent content in Shellscript on Momori Nakano</description><generator>Hugo -- 0.147.0</generator><language>en-us</language><lastBuildDate>Wed, 07 Sep 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://momori.dev/tags/shellscript/index.xml" rel="self" type="application/rss+xml"/><item><title>『入門 UNIX シェルプログラミング』で UNIX の世界を学ぶ</title><link>https://momori.dev/posts/intro-to-unix-shell/</link><pubDate>Wed, 07 Sep 2022 00:00:00 +0000</pubDate><guid>https://momori.dev/posts/intro-to-unix-shell/</guid><description>&lt;p>&lt;a href="https://www.sbcr.jp/product/4797321946/">『入門 UNIX シェルプログラミング シェルの基礎から学ぶ UNIX の世界』&lt;/a> は UNIX シェルプログラミングの入門書です.&lt;/p>
&lt;p>良いと思ったのは網羅的で実用的なところです.&lt;br>
おそらく一通りの基礎的なトピックスに触れていて, 本書を読んでおけば大抵のことには対応できる土台が身に付くと感じました. 基礎だけにとどまらず, 豊富な実例を伴った解説がなされるので, 辞書やクックブックとしても使えそうです.&lt;/p>
&lt;h2 id="基本的だけど知らなかったこと">基本的だけど知らなかったこと&lt;/h2>
&lt;p>検索しづらいようなトピックスがきちんと紹介されているのが嬉しいポイントです.&lt;br>
これまで何となく知っているけどよく分からずにいたことが分かって, 知りたいことが知れたという気分がしました.&lt;/p>
&lt;h3 id="binsh-とは何か">&lt;code>#/bin/sh&lt;/code> とは何か&lt;/h3>
&lt;p>シェルスクリプトの最初の行に書くシェバンというものですが, これはスクリプトを実行するのインタープリタを指定する記述です.&lt;/p>
&lt;p>シェバンがなければ余計な手順が掛かり, 意図したのとは異なるシェルでスクリプトが実行される可能性があります.&lt;br>
シェルはまず exec システムコールでコマンド実行を試みますが, シェルスクリプトは実行ファイルではないので exec は失敗します. 次にファイルに実行権限があればシェルスクリプトだと判定し, 現在のシェルでスクリプトを実行します.&lt;/p>
&lt;p>余計な手間を省く, 実行されるシェルを統一するという役割があるのです.&lt;br>
そういうわけなので, スクリプトとして実行されないファイルであればシェバンは不要です. 例えば関数を定義してドットコマンド &lt;code>.&lt;/code> で読み込んで使うファイルの場合です.&lt;/p>
&lt;h3 id="ドットコマンド-">ドットコマンド &lt;code>.&lt;/code>&lt;/h3>
&lt;p>ファイルの内容を展開するコマンドです. 例えば &lt;code>. abc&lt;/code> とするとファイル abc の内容が実行されます. C 言語の &lt;code>#include&lt;/code> のようなものですね. 用途としては, 関数を定義しておいたり, 環境変数を設定したりするのに便利です.&lt;/p>
&lt;p>こういう記号はネットでは検索しづらいので本に書いてあると助かります. 教科書的な本を読む利点だと思います.&lt;/p>
&lt;h3 id="ワイルドカード">ワイルドカード&lt;/h3>
&lt;p>&lt;code>ls ~/*&lt;/code> でホームディレクトリ以下の全てのファイルが見られますが, これはワイルドカードという機能の一部です. 以下のような記号でファイルを指定できます.&lt;/p>
&lt;ul>
&lt;li>&lt;code>*&lt;/code> : 任意の文字列&lt;/li>
&lt;li>&lt;code>?&lt;/code> : 任意の 1 文字&lt;/li>
&lt;li>&lt;code>[ABC]&lt;/code>: A/B/C のいずれかの文字&lt;/li>
&lt;li>&lt;code>[!ABC]&lt;/code>: A/B/C 文字の文字&lt;/li>
&lt;/ul>
&lt;p>よって &lt;code>echo *&lt;/code> とすれば &lt;code>ls&lt;/code> と同じ効果が得られます. もちろん &lt;code>ls [!0-9][a-zA-Z]??*&lt;/code> のように組み合わせて使うこともできます.&lt;/p></description></item></channel></rss>