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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

4346閲覧

linuxで改行を含むコマンド文をコピペして、コマンドを連続実行した際の解釈について

domidomi

総合スコア34

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/07/27 02:12

とくにこういう事がしたいという質問ではないのですが疑問に思ったのでお手すきの方がいらっしゃいましたら回答いただけると幸いです。

##疑問
改行を含むコマンド文を書いたメモ帳の文をlinux入力にコピペした際

1);,&,&&のうちどれでコマンドを繋いだ時と同じ挙動をしているのか?
2)\r\nのようなものでは再現できなかったが、コピペする際に使われる改行コードを手動で再現する事は出来るのか?
3)メモ帳コピー、linuxへの貼り付け実行の処理の過程で改行はどのようにコンピュータに解釈されているのか?

##詳細

例えば以下の文をメモ帳からコピーしてlinuxのコマンドを打つ場所(標準入力といいのでしょうか?)にペーストします。(正直コマンドはなんでもいいです)

git checkout tekitou git branch tekitou2 git branch tekitou3

するとそれぞれ1-3行目全てが実行されます。

疑問出現!
これはコマンドを連続実行する記号;,&,&&のうち;で繋いでコマンドを実行した時と同じ事?

また、メモ帳からコピペした際に改行コードを含んでコピーされている為、自分で改行コードを入れれば;,&,&&を使わなくてもコマンドを連続実行できるのかな?と思い

git checkout tekitou\rgit branch tekitou2(\rを入れている)

等思いつく改行コードを入力し実行してみましたがうまくいきませんでした。

疑問出現!
手動で改行コードを再現することは不可能なの?

コピーというのはホストOS(window)上のどこかしらに一時的に保存する行為だと思いますが、このコピーという処理では\r\n等の改行コードとは全く違った形(例えば★イエーイ★)で保存されているのでしょうか?(そしてペーストする際にその特殊な★イエーイ★がきたらエンター改行した事と同じこととして出力するのように)うーむわかりません。

疑問出現!
内部的にはどうやって解釈されているのだろう?

雑ですがよろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

貼り付けは、Linuxの機能じゃなくて端末エミュレーターの機能です。
もしくは、仮想化ソフトのコンソール端末に直接貼り付けた場合は、仮想化ソフトの機能です。

Linux的には、キーボードから改行が入力されたのと同じ事です。区別は出来ません。
Windowsの改行CRLFをLinux側にどう伝えるかは、端末エミュレーターとか仮想化ソフトの機能次第です。

投稿2018/07/27 03:16

otn

総合スコア84423

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

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

domidomi

2018/07/27 10:30

回答ありがとうございます。エミュレータが担ってくれていたのですね
guest

0

たんにシェルが1行づつ読み出して実行しているだけかと。
コンソールはある程度バッファリングされるので、その程度の文字列ならそのまま入ってしまうでしょ。

んで、シェルは、1行読み出して実行、それが終了すればまた1行読み出して、とバッファリングされてる限りはそれで実行される、と。

手動で改行コードを再現することは不可能なの?

手動で、あなたのキーボードにあるEnterと書いてあるキーを押下すれば再現されます

投稿2018/07/27 02:59

y_waiwai

総合スコア87719

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

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

domidomi

2018/07/27 10:31

回答ありがとうございました。
guest

0

手動で改行コードを再現することは不可能なの?

キーボードで改行を打ち込んでください。

内部的にはどうやって解釈されているのだろう?

貼り付けたものは、いったん端末エミュレーターが解釈して、キー入力相当のものとしてシェルに渡しています。

投稿2018/07/27 02:24

maisumakun

総合スコア145121

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

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

domidomi

2018/07/27 10:31

ご回答ありがとうございます。 エミュレータがよしなにやってくれていたのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問