質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

4回答

785閲覧

bash: コマンドライン冒頭の "$" を無視して解釈させたい

退会済みユーザー

退会済みユーザー

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

1クリップ

投稿2020/09/03 13:53

ウェブ上からコマンドをコピペする際 $ echo "hello" のように "$" ごとコピーしてきてしまうことがあります。

bash

1$ $ echo "hello" 2bash: $: command not found

bash

1$ $echo "hello" 2bash: hello: command not found

▲ そのままコピペするとこうなる、これを防ぎたい

冒頭に "$" があっても command not found を出さず正しく解釈してくれるようになったら僕の時間は大幅に節約されます......実現する方法はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/04 06:05

> 冒頭に "$" があっても command not found を出さず正しく解釈してくれるようになったら僕の時間は大幅に節約されます......実現する方法はありますか? 「$」に対してbashが正しく、「$」というコマンドは見つからないと解釈した結果が、 「command not found」であると思います。 間違った入力に対して、「command not found」を出さずに、それっぽく動くようにできるか、 という質問でしょうか。
退会済みユーザー

退会済みユーザー

2020/09/04 06:34

> 間違った入力に対して、「command not found」を出さずに、それっぽく動くようにできるか、 という質問でしょうか。 はい、おっしゃる通りです。他の方の回答でいただいている「"$" というファイルを作って実行権限を与えておく」は質問の目的に合致しています。 $ $ echo "hello" はその方法で解決できるようですが $ $echo "hello" はやはり難しそうでしょうか。
guest

回答4

0

その文字をコピーしないようにしましょう

投稿2020/09/03 14:04

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

冒頭に "$" があっても command not found を出さず正しく解釈してくれる

プロンプトは自由に変更できます。
「#」や「%」などプロンプトに使える全ての文字を無効にしたいのですか?

投稿2020/09/03 15:18

technocore

総合スコア7337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2020/09/03 18:42

「ウェブ上からコマンドをコピペする」場合の話なので、手元のマシンのプロンプト設定は関係ないんじゃないかと。
guest

0

パスの通ったところ(~/binとか)に、$というファイルを下記の内容で置いて、chmod +x '$'しておく。

Bash

1#!/bin/sh 2"$@"

実行:

Bash

1$ $ date 2Thu Sep 3 23:17:22 JST 2020 3⇒ これは問題なし。 4$ $date 5⇒ これはさすがに駄目。どうしようも無い。

投稿2020/09/03 14:19

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/09/03 14:20

まるかぶり。
退会済みユーザー

退会済みユーザー

2020/09/04 06:49

ありがとうございます。そちらで解決できました! $ $date の方は諦めて手動で削除するなりコピーしないなりしようと思います(遭遇する頻度は $ $ dateよりさらに低いのでもし解決できたらめっけもんという感じでした)。
guest

0

ベストアンサー

決してオススメするわけではありませんが…、
'$'というファイル名でで以下のような内容のファイルを作って、実行権限を与えてPATHの通ったところに配置しておけば実現できるような気がします。
「$ echo "hello"」のほうは出来そうですが、「$echo "hello"」のほうはこの方法では無理そうですね。

bash

1#!/bin/bash 2exec $@

※コメントを受けて追記

$ $echo "hello" の方はやはり無理なようですね。

「$echo」の場合にだけ対処するなら、.bashrcなどに

bash

1export echo=echo

の記述を入れておけば一応対応できます。($echoを展開すると「echo」という文字列となるようにする)
もちろん、コマンドラインの先頭にくるのは「echo」とは限らないので、

bash

1export echo=echo 2export awk=awk 3export sed=sed 4export ls=ls 5export find=find 6(以下必要なコマンドの分だけ続く)

のように延々と書いていく必要があり現実的ではありません。
また上記の記述が本来の環境変数の設定とバッティングするようなことも起こるかもしれません。

投稿2020/09/03 14:12

編集2020/09/04 07:11
hidezzz

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidezzz

2020/09/03 14:18 編集

蛇足ですが大昔、DOSでshbangの挙動を実現する「#!.exe」というフリーソフトがあったのを思い出しました。
退会済みユーザー

退会済みユーザー

2020/09/04 06:47

ありがとうございます。そちらで解決できました! $ $echo "hello" の方はやはり無理なようですね。
hidezzz

2020/09/04 07:11

回答に追記しました。
退会済みユーザー

退会済みユーザー

2020/09/05 07:01

$echo の方が現実的でない理由も教えていただきありがとうございました。$ echo の方が解決して随分楽になりました......!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問