トップページunix
1001コメント289KB

シェルスクリプト総合 その20

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/06/08(金) 00:35:51.19
シェルスクリプトの総合スレです。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。

□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)

□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。

前スレ
シェルスクリプト総合 その19
http://toro.2ch.net/test/read.cgi/unix/1323515200/
0215名無しさん@お腹いっぱい。2012/07/08(日) 09:40:18.88
>>213
コマンドの戻り値が0で真が気持ち悪いというのが>>207が言っている事。

それに対して、算術展開とか持ち出した>>208の間抜けさを指摘しているのだ。 バカには難しすぎかい?


>>214
バカすぎる。つーか意味不明。当たり前のように理解不能。
行頭の$は何だよプロンプトか? w
0216名無しさん@お腹いっぱい。2012/07/08(日) 09:45:04.93
>>215
>当たり前のように理解不能。

↑敗北宣言乙w
0217名無しさん@お腹いっぱい。2012/07/08(日) 10:04:40.89
>>215
> >>214
> 行頭の$は何だよプロンプトか? w

その通りだよw
0218名無しさん@お腹いっぱい。2012/07/08(日) 10:12:49.26
なんだbashの記法か。マジで知らんかったわ。w
で、それが「戻り値が0で真は気持ち悪い」となんの関係があるんだ? マヌケ
0219名無しさん@お腹いっぱい。2012/07/08(日) 13:35:39.83
ここはシェルスクリプトのスレなんだから、bashはbashスレでやれ。
0220名無しさん@お腹いっぱい。2012/07/08(日) 15:01:13.59
分かってねえやつは黙ってろマヌケw
0221名無しさん@お腹いっぱい。2012/07/08(日) 19:16:09.74
戻り値がゼロのとき菊地真
0222名無しさん@お腹いっぱい。2012/07/08(日) 19:58:11.85
シェルから使う外部コマンドは正常終了するとき exit(EXIT_SUCCESS) するわけで
/usr/include/stdlib.h:#define EXIT_SUCCESS 0 /* Successful exit status. */
になっているのだからしょうがないでしょうよ。
0223名無しさん@お腹いっぱい。2012/07/08(日) 21:08:41.46
本当、ここはマヌケばかりだw

色々と勉強しなおせ
0224名無しさん@お腹いっぱい。2012/07/08(日) 21:14:25.84
ん? 何スレか前の /dev/tcpで大恥かいた奴が暴れてるのか?w
0225名無しさん@お腹いっぱい。2012/07/08(日) 21:18:14.89
>>222
しょうがないのはいいんだけど、こういうときに頭がこんがらがる

test -f hoge.txt が成功したら「真」だから
test -f hoge.txt && echo unko
のときにちゃんとunkoが出るんだけどさ、ここまでいいんだけど

test -f hoge.txt の結果、$?ってゼロじゃん? だからさっきのも
ゼロ && echo unko
みたいな感じで unko出ねぇ って一瞬思っちゃうんだよ
0226名無しさん@お腹いっぱい。2012/07/08(日) 21:23:20.80
アゼンブラで、演算結果が0の時に Zフラグが1になる(0なのに1になる)
という感覚に慣れていればどうってことない。
0227名無しさん@お腹いっぱい。2012/07/09(月) 09:44:10.37
>>226
Zフラグでもなんでもどういうたとえを使ってもいいけど、
そのたとえを当てはめるまでにタイムラグがおこる
0228名無しさん@お腹いっぱい。2012/07/09(月) 10:56:32.71
lua だと 0 でも 1 でも "" でも真だからどうってことない。
0229名無しさん@お腹いっぱい2012/07/10(火) 21:53:14.00
VMCPU="cotex-a8"
QEMUOPTS="${VMCPU:+-cpu $VMCPU}"
この文の
VMCPU:+ ってのは何のためにあるんでしょうか?
0230名無しさん@お腹いっぱい。2012/07/10(火) 21:56:15.24
>>229
>>229
$VMCPU に値が設定されている時のみ -cpu $VMCPU に展開する。

$VMCPU が設定されていない時に -cpu のオプションだけが QEMUOPTS に代入されるのを防ぐ。
0231名無しさん@お腹いっぱい。2012/07/10(火) 22:04:39.97
>>230
だから、VMCPUには常に値を代入してるんですが、、
02322292012/07/10(火) 22:34:35.51
>230
:-
:+
:=
こんな使い方があったんですね。ありがとうございました
0233名無しさん@お腹いっぱい。2012/07/12(木) 17:37:48.08
##### evalの危険性について #####
シェルスクリプト学習中の初心者です。

evalを使うとセキュリティー上どのような事が、問題となるのでしょうか?
変数を展開する際に意図せぬ結果となり、エラーでスクリプトが止まったり、コマンドが起動される事はなんとなく分かります。

初心者の考える危険な例
:   ; from_net_1='apple'; from_net_2='banana'; from_net_3='; uname -a'
:   ; OPT="$from_net_1 $from_net_2 $from_net_3"
:   ; eval echo "$OPT"

また、この点に気を付ければ良い等、機械的に安全を得るやり方は有りますか?
もしくは、皆さんが使用時に、気を付ける点などあればご教示下さい。
0234名無しさん@お腹いっぱい。2012/07/12(木) 21:28:20.42
> 機械的に安全を得るやり方は有りますか?
無い。信頼できるソース以外からの文字列をevalしてはいけない。
0235名無しさん@お腹いっぱい。2012/07/12(木) 21:57:05.58
そもそもevalなんて滅多に使わないしなー。
evalを頻繁に使うようなトリッキーなコードは読みにくくなりがちだしね。
0236名無しさん@お腹いっぱい。2012/07/12(木) 22:14:43.03
configure発明したやつに言ってやってくれ
0237名無しさん@お腹いっぱい。2012/07/12(木) 22:18:43.10
発明w
0238名無しさん@お腹いっぱい。2012/07/12(木) 22:20:16.41
configureは人間が読み書きするものじゃなくてautoconfに作らせるものだから
0239名無しさん@お腹いっぱい2012/07/13(金) 22:22:49.32
公開鍵を使わず、パスワード認証でsshdを使ってます。
アクセスを集計しようと
cat /var/log/auth.log | grep "Failed password" | awk '{if($9 == "invalid")print $1,$2,$3,$11,$13,$15; else print $1,$2$3,$9,$11,$13}' | uniq -f5 -w12 -c
と書いてみたんですが、思うようにuniqされませ。
どこがマズイでしょうか?
0240名無しさん@お腹いっぱい。2012/07/13(金) 22:36:54.90
カンマが一つ抜けてるんじゃねーの
02412392012/07/13(金) 22:57:53.20
>240
カンマ抜けてました
でも、カンマいれると全てが1行表示になりました。
0242名無しさん@お腹いっぱい。2012/07/13(金) 23:10:09.05
cat /var/log/auth.log | grep "Failed password"
ここが環境依存だから答えられん。
awkに対してどんな入力を期待してるの?
0243名無しさん@お腹いっぱい。2012/07/13(金) 23:40:29.47
関係ないけど、grep|awk っていうパイプラインよく見る気がする。
ついついやりたくなるのは分かるがawkがかわいそうに思えてくる。
0244名無しさん@お腹いっぱい。2012/07/13(金) 23:45:38.52
awkはちょっと強力なcutという用途にしか使われてないことは多そうだな。
かと言って全部awkでしちゃうとgrepとかsedの立場がなくなる。
0245名無しさん@お腹いっぱい。2012/07/13(金) 23:49:01.38
最初のcatが無駄だろっていう人は最近来なくなったのねw
0246名無しさん@お腹いっぱい。2012/07/14(土) 00:33:02.57
cat使ったほうが分かりやすい
0247名無しさん@お腹いっぱい。2012/07/14(土) 00:45:52.23
catを使わなかったら、ファイルを対象にするコマンドと、パイプで入ってくるものを
対象にするコマンドが混在することになるからな

出力はcat、処理はパイプ、と分けた方が、保守性は高まるんじゃないかな
0248名無しさん@お腹いっぱい。2012/07/14(土) 01:19:38.10
cat議論は一スレで二回ぐらい発生するのが恒例行事。
0249名無しさん@お腹いっぱい。2012/07/14(土) 06:53:20.81
議論され尽くしてるものの議論は、やはり面白いですな
0250名無しさん@お腹いっぱい。2012/07/14(土) 07:15:53.03
>>243,244
わかるわww
ただawkを使いこなせるようになるには時間がかかるし、若い奴にこんな時代遅れなものを今から全部学べとは言えないからな。
必要最小限な使い方だけ教えると、grepやsedやuniqなんかと組み合わせた使い方をしてくるんだよね。
02512392012/07/14(土) 07:55:25.81
寝てしまった
Failed password が
Jul 13 13:56:36 xxxxx sshd[17819]: Failed password for root from 59.175.218.166 port 49148 ssh2
Jul 13 13:56:40 xxxxx sshd[17821]: Failed password for invalid user oracle from 59.175.218.166 port 51025 ssh2
の2種類があるので、必要部分だけにして、form のアドレスでまとめたいだけなんです。
連続したアドレスをまとめて、カウントできれば
0252名無しさん@お腹いっぱい。2012/07/14(土) 07:56:18.63
テンプレやいろいろな場所でcshがヤバめというのは自覚してるんですが教えてください。
あのcsh使わされてるんですけど標準入力のアスタリスクを文字として扱えないんですけどどうしたらいいんですか。
標準入力からsetした変数でいろいろ分岐したいんですけど*を入れた場合だけ構文エラーとかワイルドカード展開になってしまいます。
ちなみにUNIX環境は全くわかりません。
マジでお願いします。
0253名無しさん@お腹いっぱい。2012/07/14(土) 08:37:53.40
>251
なら前半は
awk '/failure/{print $1,$2,$3,$(NF-5),$(NF-3),$(NF-1)}' /var/log/messages
で済みそう。時間的な連続性を気にしなければ数え上げもawk内でやりたいが。
02542512012/07/14(土) 09:00:52.31
>253
failureの行をつかうたんですね

思うように集計されないのは、uniqの使い方に問題があったみたいです。
sortが前提みたいですね。
ただ、時間的に連続したfailureのアドレスをまとめたい、できればカウントつきで

0255名無しさん@お腹いっぱい。2012/07/14(土) 09:15:24.77
数え上げはawkじゃなくてuniq -cあたりに任せたいところ。
0256名無しさん@お腹いっぱい。2012/07/14(土) 10:46:53.42
アドレスだけでいいならuniq -c -f 4じゃないの?
0257名無しさん@お腹いっぱい。2012/07/14(土) 15:21:41.03
>>252
こういう事か?

set hoge = "$<"
echo "$hoge"
0258名無しさん@お腹いっぱい。2012/07/14(土) 15:28:23.55
今月はじめ、職場に新しいPC(Core i7の結構ハイエンド構成)が入りました。
多分私が運用保守をまかされそうな雰囲気です。業務的にとある構造分析や
シミュレーションなど行う必要があり、制御コマンドとしてシェルスクリプトを
使用するのは聞いていたのですが、そのファイルを開いて1行目に書かれていたのは
#!/bin/tcshという文字列でした。

「うへぇ〜、よりによってtcshかよ」

ファイル記述子のリダイレクト不可、クオートのネスティング等に無理あり、
今の奴でさえシェル関数は使えないし、パイプラインの終了ステータスもおかしいし、
今時の担当者が扱ってセキュリティは大丈夫なのか不安はつきませんし、
スクリプトとしてのcshは嫌われるのでネット上の情報も少なく調べるのも大変です。
おそらく導入に際して、大学など教育機関で最初にcshに触れて刷りこまれた人間が
強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。

昔、当時、シェルで唯一aliasやhistoryやジョブコントロールの機能が使えた
cshは大学など教育機関に浸透していて、日本のシェル界に多くのバカが輩出しました。

これから私は、おそらくそういうバカが、$*でスペース入りファイル名が扱えないとか
$<でファイルから読めないのかとか、変数に*を入れた場合だけ構文エラーになって
実行できないなどと、シェル通気取りの偏ったどうでもいい我侭を言い出し
(だからcshスクリプト書くんじゃねーよ)それと戦わなければならないのでしょう。
そして時代によって決着している、過去25年のシェル界隈のくだらないそれらの議論が
再現され、それに巻き込まれるのでしょう。もう今からうんざりです。

だからお願いです。教育現場ではbashでもzshでもkshでもashでも
Bourne shでもなんでもいいですがBシェル系のシェルにしてください。

教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
0259名無しさん@お腹いっぱい。2012/07/14(土) 15:32:28.73
どうでもいいけど日本のシェル界なんてものの存在を初めて知った。
0260名無しさん@お腹いっぱい。2012/07/14(土) 16:52:49.19
Solaris編もあったね
0261名無しさん@お腹いっぱい。2012/07/14(土) 16:56:34.37
シェル王が住んでる。
0262名無しさん@お腹いっぱい。2012/07/14(土) 18:01:11.45
なんでこんなコピペ気にいったんだこいつ。
0263名無しさん@お腹いっぱい。2012/07/14(土) 19:39:52.83
>>262
サルにマスかき覚えさせると血が出るまでやめないのと同じだよ
覚えたてで嬉しいんだろう
0264名無しさん@お腹いっぱい。2012/07/14(土) 19:52:41.06
多分、覚えたてのコピペを貼るように>>252が釣った。
今時csh使ってるところなんかあるわけねーだろ。
0265名無しさん@お腹いっぱい。2012/07/14(土) 20:00:46.43
コピペだったのか。マジレスしそうになったよw
0266名無しさん@お腹いっぱい。2012/07/14(土) 22:00:42.21
コピペはさておき、カーソルキーでヒストリ機能を使おうと思うと
tcshが一番手っ取り早い時期があった

bashでの、カーソルキーによるヒストリ機能の正式サポートと実装は、
netnewsでは結構祭レベルで好評だったのに対し、fj界隈では
カーソルキーなんて使わないじゃんSVR4とかwwwみたいに
ガラパゴスってた事が、tcshユーザが大量生産したことと
因果関係は有ると思うね
0267名無しさん@お腹いっぱい。2012/07/14(土) 23:13:13.33
ガラガラ話にしても仕方なかろう

BSD界隈では csh 系にそれなりの人気があり
FreeBSD なんかデフォルトのshellは未だにcshだ(実体はtcsh)
0268名無しさん@お腹いっぱい。2012/07/14(土) 23:16:17.42
WITHOUT_TCSHで問題なく動くけどな。
0269名無しさん@お腹いっぱい。2012/07/15(日) 03:26:56.35
>>267
ashじゃなかったっけ
0270名無しさん@お腹いっぱい。2012/07/15(日) 04:05:13.03
>>269
http://svnweb.freebsd.org/base/head/etc/master.passwd?revision=218047&view=markup
root::0:0::0:0:Charlie &:/root:/bin/csh
0271名無しさん@お腹いっぱい。2012/07/15(日) 07:21:31.45
FreeBSDはなんで今でもcshがデフォルトなの?何か理由あるの?
0272名無しさん@お腹いっぱい。2012/07/15(日) 12:20:29.92
BSD だから,に尽きるんじゃないかな
0273名無しさん@お腹いっぱい。2012/07/15(日) 13:30:12.88
そもそもcsh自体がBSD発祥なんだっけ
0274名無しさん@お腹いっぱい。2012/07/15(日) 17:10:34.35
宗教上の理由でbashが使えないから
0275名無しさん@お腹いっぱい。2012/07/15(日) 20:13:13.73
bashはGNUライセンスだからなんじゃないの?
0276名無しさん@お腹いっぱい。2012/07/15(日) 20:53:59.04
パブリック
0277名無しさん@お腹いっぱい。2012/07/16(月) 02:01:54.23
>>273
Bill Joy先生の作品ですよ。
ジョブコントロール関係のカーネル拡張も。
他にはviとか、page単位の仮想記憶とか。
近代的なUNIXカーネルの創始者の一人。

cshスクリプトの是非については、
csh programming considered harmful.を読めばいい。
0278名無しさん@お腹いっぱい。2012/07/16(月) 16:33:07.10
Linux、bashを使用しています
シェルスクリプトを書いたのですが、
そのスクリプト(***.sh)が入っているディレクトリと入っていないディレクトリで
挙動が変わってしまいます
これはもともとそういう仕様?なのでしょうか
それとも書いたスクリプトに間違いがあってこうなっているのでしょうか
すみませんがアドバイス宜しくお願いします
0279名無しさん@お腹いっぱい。2012/07/16(月) 16:57:50.70
相対パスつこうてるんやろ
0280名無しさん@お腹いっぱい。2012/07/16(月) 17:05:30.38
カレントディレクトリという概念を理解してない。
カレントディレクトリはスクリプトの属性ではなくプロセスの属性。
0281名無しさん@お腹いっぱい。2012/07/16(月) 17:14:22.95
>>279
パスはその都度引数で指定する仕様で
絶対パスで指定しているのでそんなことはない、と思うのですが…
>>280
カレントディレクトリで、なおかつそのスクリプトが入ってるときにしか
動作しない、ということでしょうか…?
すみません、浅学でしてLinuxに関しては学び始めたばかりなのです
0282名無しさん@お腹いっぱい。2012/07/16(月) 17:17:14.41
pastebinか何かにそのスクリプトを晒しなさい
http://pastebin.com/
0283名無しさん@お腹いっぱい。2012/07/16(月) 17:23:10.76
別にLinuxだけの話じゃ無さそうだな
0284名無しさん@お腹いっぱい。2012/07/16(月) 17:24:30.42
>>282
これであってますでしょうか…?
http://pastebin.com/5CHY53XG
0285名無しさん@お腹いっぱい。2012/07/16(月) 17:27:48.35
付け足しですが、こちら「for FILE in _______________」となっていて
inの後ろを穴埋めしろ、という課題なのです
拡張子はtexやdviに限る必要はありません
ただし何かしらの文字列を含まないファイルを
一括で削除するスクリプトを作りましょう、ということなのですが…
0286名無しさん@お腹いっぱい。2012/07/16(月) 17:30:36.51
ls "$DIR"の間違いだろ。
grepのところもegrep -v ".tex$|.dvi$"くらいの意図か?
0287名無しさん@お腹いっぱい。2012/07/16(月) 17:33:28.31
>>286
それも試したんですが削除しますか?と聞かれるファイルがひとつしかないのです>"$DIR"
実際にはもっとたくさんあるんですが…
grepのは特定の文字列を含まないファイルをリストしたいという意図です
".tex$|.dvi$"←これのように「|」を入れないと2つの文字列を除外することはできないのでしょうか?
0288名無しさん@お腹いっぱい。2012/07/16(月) 18:39:06.72
grep -v".txt .dvi" は
何か1文字、t、x、t、スペース、何か1文字、d、v、i
というひとつながりの文字列がある行を除外する。
0289名無しさん@お腹いっぱい。2012/07/16(月) 18:40:30.30
texだたハズカシー

0290名無しさん@お腹いっぱい。2012/07/16(月) 18:52:03.84
>>285
>「for FILE in _______________」となっていて
>inの後ろを穴埋めしろ、という課題なのです

変な課題w

課題関係なしなら
↓で、grep使わずにできる。(lsも使わずに内部コマンドだけで)

cd "$DIR"
for FILE in *
do
case $FILE in
*.tex|*.dvi);;
*) rm -i "$FILE";;
esac
done
0291名無しさん@お腹いっぱい。2012/07/16(月) 19:39:40.80
無理矢理「for FILE in _______________」の中に別のfor文入れちゃえ。
正常に動くよ。

for FILE in `for f in *; do case $f in *.tex|*.dvi)echo "$f";;esac;done`
do
以下略
0292名無しさん@お腹いっぱい。2012/07/16(月) 22:01:42.45
>>288
なるほど…ありがとうございます
検索条件に.○○はダメだったんですね

>>290
正直別なところもいじらせてほしいですorz
スクリプト例もありがとうございます、参考にさせて頂きます

>>291
その手がありましたね…!>for文入れる
有り難うございます、これで行けると思います


長々とどうもすみませんでした
アドバイスしてくれた皆様ありがとうございました
0293名無しさん@お腹いっぱい。2012/07/16(月) 22:05:25.55
あのさぁ…ま いっか
0294名無しさん@お腹いっぱい。2012/07/16(月) 22:27:57.35
ls に絶対パス出力するオプションあるんじゃねーのと思ったらそんなことはなかった
find 使えばいくね?
find "$DIR" -maxdepth 1 -type f

ていうかHOME以下のファイル消すスクリプトとかこえーな
0295名無しさん@お腹いっぱい。2012/07/17(火) 00:37:58.25
>>291 面白w
find -E "$DIR" -type f -regex '.*\.(conf|wrapper)$' -delete
でいいのに

制約があるので>>291よりおふざけ感が低減される
for FILE in `find -E . -type f -regex '.*\.(conf|wrapper)$'`
do
以下略
0296名無しさん@お腹いっぱい。2012/07/17(火) 00:41:30.49
>>295
find -E "$DIR" -type f -regex '.*\.(tex|div)$' -delete
for FILE in `find -E "${DIR}" -type f -regex '.*\.(tex|div)$'`
0297名無しさん@お腹いっぱい。2012/07/17(火) 03:06:32.79
>>292
grep -v -e .tex -e .dvi
egrep -v ".tex|.dvi"

12行目あたりに echo $FILE いれるとか、内容をチェックしてみる癖はつけたほうがいいぞ。
0298名無しさん@お腹いっぱい。2012/07/17(火) 07:26:54.87
>>293
何よ。
0299名無しさん@お腹いっぱい。2012/07/17(火) 15:54:04.83
検索語がまずいのか調べても分からないので、教えてください。

デスクトップ環境(X Window上)のターミナルエミュレータか、
sshログインしたときなどのコンソール上かで、シェルスクリプトの挙動を変えたいのですが、
どのような工夫をすればよいか、何で条件分岐すればよいのか思いつきません。
お願いします。
0300名無しさん@お腹いっぱい。2012/07/17(火) 16:02:19.68
ターミナルエミュレータからsshログインしたときは?
0301名無しさん@お腹いっぱい。2012/07/17(火) 16:03:00.94
>>299
> デスクトップ環境(X Window上)のターミナルエミュレータか、

DISPLAY環境変数が設定されていれば。

> sshログインしたときなどの

SSH_CLIENT環境変数が設定されていれば。

> コンソール上かで、

ttyコマンド使えばこれも判別できる。
0302名無しさん@お腹いっぱい。2012/07/17(火) 16:13:55.08
すみませんが詳しい方のみ回答をお願いします
0303名無しさん@お腹いっぱい。2012/07/17(火) 16:22:19.33
>>301
ありがとう。DISPLAYはsshログインしたときでもたまに設定するので使えません、
ttyコマンドの出力を使う方法は、仮想コンソールだと区別が付きそうですが、
sshログインした場合は区別が付きませんでした。
SSH_CLIENTを見てみました。
SSH_CLIENT, SSH_TTY, SSH_CONNECTIONはsshログインしたときのみに設定されるようなので、
これを使って条件分岐することにします。
ご教示感謝します。>>300さんもありがとうございました。
0304名無しさん@お腹いっぱい。2012/07/17(火) 16:49:06.86
余談だが、
コンソールってのは本体に物理的に接続されてるキーボード/ディスプレーのことな。
パイプオルガンの鍵盤の付いた演奏台由来の名前。
パイプオルガンの本体はパイプだから。
0305名無しさん@お腹いっぱい。2012/07/17(火) 18:45:11.74
先生!ターミナルとコンソールってどう違うんですか?!
0306名無しさん@お腹いっぱい。2012/07/17(火) 18:51:03.45
コンソールはホスト本体の画面とキーボード。
ターミナルはあくまでも別の機械からのリモートログイン。

xtermなどのことをターミナルと呼んでしまうこともあるが、
正しくはターミナルエミュレータなので、純粋なターミナルとは異なる。
0307名無しさん@お腹いっぱい。2012/07/17(火) 19:32:14.58
>>306
本体に接続されたディスプレイとキーボードを使うのに「ターミナル(遠隔操作端末)エミュレータ」だから直感的に混乱するよね。
0308名無しさん@お腹いっぱい。2012/07/17(火) 23:13:42.44
/dev/pts (/dev/pty), /dev/tty, /dev/console
とかのデバイスによって、コンソール、端末(ターミナル、物理端末、制御端末、広義のコンソール等)、
疑似端末(仮想端末、仮想ターミナル、シュードターミナル等)が分かれる。(はずです。多分。)

カーネルをロードしてinit起動してるやつがコンソール
LinuxとかでAlt+2とかで切り替えられる奴がターミナル
他が疑似端末

でOK。(だと思う。多分。)
コンソールだけちょっと特別で、Ctrl+CとかCtrl+Zみたいな制御ができず、あとデーモン類とか
端末持たないプロセス(ps -efとかで見たとき端末のカラムが?になってるプロセス)が標準出力の代わりに/dev/consoleにメッセージ出してきたりする。

まぁ組み込み系の人以外、端末、ターミナル、コンソールをあまり区別せずに使う場合のが多いし、
大抵はそれであまり実害は出ないのでちゃんと覚えなくても良いと思う。
0309名無しさん@お腹いっぱい。2012/07/18(水) 00:05:24.12
>>308
> コンソールだけちょっと特別で、Ctrl+CとかCtrl+Zみたいな制御ができず

スレ違いな上に出鱈目。最低だ。
0310名無しさん@お腹いっぱい。2012/07/18(水) 09:45:01.28
うん、ムチャクチャにもほどがある。

>大抵はそれであまり実害は出ないのでちゃんと覚えなくても良いと思う。

自分がちゃんと覚えていないなら、それをわきまえて黙ってろ。
0311名無しさん@お腹いっぱい。2012/07/18(水) 10:01:19.01
端末のことを英語でターミナルって言うのも知らないんだろな。
端末とターミナルを別物のように説明してるしw
0312名無しさん@お腹いっぱい。2012/07/18(水) 11:07:30.77
>>308がフルボッコにされてるから読んでみたけど
たしかにこれはひどいな
0313名無しさん@お腹いっぱい。2012/07/18(水) 11:13:48.49
>>309
古典/bin/shなrootログインでしかコンソールを触ったことがなかった爺と思われ。
SunOS辺りか?
0314名無しさん@お腹いっぱい。2012/07/18(水) 13:07:04.12
cp file1 /mnt/file2 &
みたいにやっておいて、
mv file2 file3
した場合、最初のコピーにmvが追いついた時ってどうなるの?
■ このスレッドは過去ログ倉庫に格納されています