バッククォートの打ち方は?シェル中のコマンド起動に必須の記号
今日ですね、60爺は師匠の 50オヤジと話をしていた中で、「shellの変数名と言うか、shellの中で変数を扱うところがいつもエラーになってしまって動かない」ことを話しました。
すると、さすが師匠です。すぐさま回答をくれました。
それを、会話形式で見てみましょう(50:50オヤジ、60:60爺です)。
50「変数を囲う文字に何を使っています?ひょっとして、『’』(引用符)(shift+7)じゃないですよね?」
60「そうに決まってんじゃん」
50「やっぱり、やだな、『`』バッククォート(shift+@) に決まってんじゃないすか。常識ですよ、常識」
60「素人の60爺に、そんな常識は無い」(開き直り^^;)
という会話もあり、『`』バッククォート(shift+@)という文字を知った60爺は、この文字について少し追いかけることにしました。
鉄は熱いうちに打て!ですよね。
『`』バッククォートとは
シェル中のコマンド起動に使う記号バッククォートとは何なのでしょうか?
バッククォートとは?
シェル中のコマンド起動にはバッククォート『`』という記号を用いねばなりません!
この「@」の上にある奴です。
バッククォート『`』の打ち方は shift+@
バッククォートは、shiftキーを押しながら、@キーを押します。
エエエエ!
皆さん知ってましたか?
シェル中でコマンド起動を行う際、コマンドをバッククォート『`』で囲うことで、コマンドが実行できるんです。
知らなかった!
私の作るシェルは変数を扱おうとすると、いつもエラーとなって動かない謎が解けました。
師匠には「非常識」と言われましたが、これで、60爺はひとつ知識を得て、少し、お利口になったのです。
60爺は、こんな文字『`』(バッククォート)があることさえ知らなかったんです。
読み方は、以下にあるように3通りあるみたいです。
- バッククォート
- バックコーテーション
- アクサングラーブ
ちなみに、shift+7 で入力する『’』の読み方も載せておきます。
- シングルクオーテーション
- 引用符
- アポストロフィ
このバッククォート(左)とシングルクオーテーション(右)ですが、ちらりと見ただけでは判断つきませんよねエ…。
「‘」「’」
それぞれの文字を拡大してみました!
「‘」「’」
文字を特大(48px)で比べると、確かに形は違いますが、標準の大きさでは見極めずらいですな!
早速試してみた
早速、動かなかったshellがあるので試してみました。
スピーカテスト用のサンプルです。
こちらは、『’』引用符(shift+7)で書いています。
pi@raspberrypi:~ $ cat sample_web_aplay.sh
#! /bin/sh
# Directry set
d=/usr/share/sounds/alsa
# /usr/share/sounds/alsa
# all file loop
for f in 'ls ${d}' ; do
# aplay command odio file
aplay "$d/$f"
# 1 secont sleep
sleep 1
done
このため、実行すると当然エラーとなります。
pi@raspberrypi:~ $ sudo sh ./sample_web_aplay.sh
/usr/share/sounds/alsa/ls ${d}: そのようなファイルやディレクトリはありません
今日教えてもらった「バッククォート」『`』(shift+@)で書き換えました。
pi@raspberrypi:~ $ cat sample_web_aplay.sh
#! /bin/sh
# Directry set
d=/usr/share/sounds/alsa
# /usr/share/sounds/alsa
# all file loop
for f in `ls ${d}` ; do <----- この部分です!
# aplay command odio file
aplay "$d/$f"
# 1 secont sleep
sleep 1
done
これで実行すると、指定した wavファイル全てを鳴らしてくれました。すばらしい。
pi@raspberrypi:~ $ sudo sh ./sample_web_aplay.sh
再生中 WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Front_Left.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Front_Right.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Noise.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Rear_Center.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Rear_Left.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Rear_Right.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Side_Left.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
再生中 WAVE '/usr/share/sounds/alsa/Side_Right.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
pi@raspberrypi:~ $
指定のディレクトリの中身を出しておきますね。
pi@raspberrypi:~ $ cd /usr/share/sounds/alsa/
pi@raspberrypi:/usr/share/sounds/alsa $ ls
Front_Center.wav Noise.wav Rear_Right.wav
Front_Left.wav Rear_Center.wav Side_Left.wav
Front_Right.wav Rear_Left.wav Side_Right.wav
まだまだ、知らないことのある Linux の世界。何かわかったら、また報告します。
最後に
何のことはない会話から新たな知識を得ました。
『`』バッククォート(shift+@)という新しい文字があることを知ったのです。
この『`』バッククォートですが、ちょっと見、『’』に見えちゃいますよね。でも、全然違う文字です。
これを得たことで長年の謎が解け、シェルの中でのエラーが消え去りました!
■思えば「打ち方・出し方」の記事も増えてきました
ディスカッション
コメント一覧
まだ、コメントがありません