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

2017年6月15日

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

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

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

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

スポンサーリンク

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

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

バッククォートとは?

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

バッククォート『`』の入力方法は shift+@

エエエエ!

皆さん知ってましたか?シェル中でコマンド起動を行う際、コマンドをバッククォート『`』で囲うことで、コマンドが実行できるんです。

知らなかった!

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

師匠には「非常識」と言われましたが、これで、私はひとつ利口になったのです。

60爺

60爺は、こんな文字『`』(バッククォート)があることさえ知らなかったんです。

読み方は、以下にあるように3通りあるみたいです。

  • バッククォート
  • バックコーテーション
  • アクサングラーブ

ちなみに、shift+7 で入力する『’』の読み方も載せておきます。

  • シングルクオーテーション
  • 引用符
  • アポストロフィ

このバッククォートとシングルクオーテーションですが、ちらりと見ただけでは判断つきませんよねエ…。


早速試してみた

早速、動かなかった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 の世界。何かわかったら、また報告します。

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

60爺

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

TIPS

Posted by 60爺