バッククォートの打ち方は?シェル中のコマンド起動に必須の記号

2017年6月15日

今日ですね、60爺は師匠の 50オヤジと話をしていた中で、「shellの変数名と言うか、shellの中で変数を扱うところがいつもエラーになってしまって動かない」ことを話しました。

すると、さすが師匠です。すぐさま回答をくれました。

それを、会話形式で見てみましょう(50:50オヤジ、60:60爺です)。

50「変数を囲う文字に何を使っています?ひょっとして、『’』(引用符)(shift+7)じゃないですよね?」
60「そうに決まってんじゃん」
50「やっぱり、やだな、『`』バッククォート(shift+@) に決まってんじゃないすか。常識ですよ、常識」
60「素人の60爺に、そんな常識は無い」(開き直り^^;)

という会話もあり、『`』バッククォート(shift+@)という文字を知った60爺は、この文字について少し追いかけることにしました。

鉄は熱いうちに打て!ですよね。

スポンサーリンク

『`』バッククォートとは

シェル中のコマンド起動に使う記号バッククォートとは何なのでしょうか?

バッククォートとは?

シェル中のコマンド起動にはバッククォート『`』という記号を用いねばなりません!

この「@」の上にある奴です。

バッククォート『`』の打ち方は shift+@

バッククォートは、shiftキーを押しながら、@キーを押します。

エエエエ!

皆さん知ってましたか?

シェル中でコマンド起動を行う際、コマンドをバッククォート『`』で囲うことで、コマンドが実行できるんです。

知らなかった!

私の作るシェルは変数を扱おうとすると、いつもエラーとなって動かない謎が解けました。

師匠には「非常識」と言われましたが、これで、60爺はひとつ知識を得て、少し、お利口になったのです。

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+@)という新しい文字があることを知ったのです。

この『`』バッククォートですが、ちょっと見、『’』に見えちゃいますよね。でも、全然違う文字です。

これを得たことで長年の謎が解け、シェルの中でのエラーが消え去りました!

■思えば「打ち方・出し方」の記事も増えてきました

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら