X



【tc厨が】bash3.0登場!!【嫉妬する】
00011NGNG
ついに出たぞ、おマイら。俺はついさっきコンパイルしたばかりだ。
まだしっかりドキュメントを読んでないのでその破壊力は未知数
だが

$ echo {1 .. 5}
1 2 3 4 5
つうのは気に入ったぞ。
0094名無しさん@お腹いっぱい。2006/05/17(水) 14:01:30
$ cat <<< hoge
hoge
って3.0から?
0096名無しさん@お腹いっぱい。2006/05/17(水) 20:57:18
>>95
そういう意味じゃねーよww
0099名無しさん@お腹いっぱい。2006/07/22(土) 20:46:00
"\ek":copy-backward-word
Control-k: "\ek\C-y"

cp hoge C-k

cp hoge hoge
になるので、バックアップを作るときやファイル名を変えるときに便利。
0101名無しさん@お腹いっぱい。2006/07/23(日) 04:57:10
ファイル名をちょこっと変えるのに、ほとんど同じ
ファイル名を2回入力するのは面倒じゃん。
0102名無しさん@お腹いっぱい。2006/07/23(日) 07:14:40
人によってやることは全然違うから
自分が便利だと思っても、他人が便利だと思うのは大間違い
0107名無しさん@お腹いっぱい。2006/07/24(月) 03:04:45
必要か不必要かは見ている人が勝手に判断すればいいと思うんです

必要と思う人はありがたく使わしてもらえばいいし、不要もしくは改良を
要する人は使わない、もしくは改良後をフィードバックすればいいし

みんなで幸せになろう
0108名無しさん@お腹いっぱい。2006/07/25(火) 21:13:54
改良。
Control-k: "\C-w\C-y \C-y"
というか、前のやつピリオドを含むファイル名でテストしてなかった(笑)
0109名無しさん@お腹いっぱい。2006/07/26(水) 08:24:13
じゃあ自分のサイトでやればいいんじゃないのか?
例えばここに無駄な書き込みをする事によって、次に見る人がいれば転送量が増える。
その転送量が増える事によって、また無駄な商用サービスが始まってくんでしょ

この書き込みが無だって言うって言うのも無駄ね。
この書き込みで以下のこの書き込み以上の書き込みを抑制できるのなら
無駄にはならない
0115名無しさん@お腹いっぱい。2006/07/29(土) 21:21:24
使いなれてみないとわからない便利さみたいなのもあるよ。
C-t なんて初めは使いにくくて意味不明だったが、
しばらく意識して使ってたらなくてはならない操作になった。

だから自分にとって C-t は便利なコマンドなのだが、
C-t イラネという人の気持ちもわかるし、
イラネという人の何割かは使い慣れれば
好きになるんじゃないかとも思う。
0116名無しさん@お腹いっぱい。2006/07/29(土) 21:33:45
> イラネという人の何割かは使い慣れれば
> 好きになるんじゃないかとも思う。
これがおせっかいなんじゃないかと思う
01171152006/07/29(土) 21:49:24
もちろんおせっかいだろうよ。
俺自身もあえて勧めたりはしない。
0121名無しさん@お腹いっぱい。2006/11/14(火) 20:16:35
bash使いなんですが、bash 3のバグを発見しました(bash 2では問題なし)。
「プロンプトに色を使うと補間リスト(タブを何回か押したときに表示される)表示時にコマンドラインにゴミが入る」というものです。

【再現】
Cygwinのデフォルトのプロファイル(カスタマイズしている人は「bash --init-file /etc/profile」にてデフォで起動します)
は「PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '」というプロンプトを使っています。
これは複数行なのですが、\nを抜いて1行にするとバグを再現できます。
「PS1='\[\e]0;\w\a\]\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '」
このプロンプトでgccと打ってタブを何回か押してみてください。
補間リストが表示されるとともに、コマンドラインに「gcccc」とゴミが2文字ほど入るはずです。
私が実際に使ってるプロンプトでは5文字ほどゴミが入ります。
bash 2ではなにも問題なかったのに、bash 3になったら突然これです。ほんとウザイです。

これはバグですよね?
GNUに報告した方がいいですか?
0123名無しさん@お腹いっぱい。2006/11/14(火) 23:04:56
>>122
まじですか〜、試していただいてありがとうございます。
おっしゃる通り私がバグを確認したのはCygwinにおいてのことでして、
あした学校にいったらLinuxがあるので、そこでは正常にふるまうかどうかを確認してきます。


この場合、メジャーバージョンの2とか3とかよりも下位のレベル(パッチレベル?)での違いかもしれませんね
0125名無しさん@お腹いっぱい。2006/11/16(木) 10:38:16
学校のLinuxはbash 2でしたOrz
もちろん正常にふるまいます^^;

どうしたもんか・・・
0127名無しさん@お腹いっぱい。2006/11/19(日) 03:58:48
cmd()というシェル関数があるときに、これを呼ばず
$PATHからcmdを検索させる方法はありますか?
01301272006/11/19(日) 15:00:42
>>128 では駄目で、>>129 でできました。ありがとうございます。
ついでに、ビルトインの command でも十分でした。
01311212006/11/20(月) 23:32:19
>>122
「uname -a」と「bash --version」を教えていただけますでしょうか?

>>126
なるほど。homeでのコンパイルは管理者権限いらないんですか?
0132名無しさん@お腹いっぱい。2006/11/21(火) 06:08:43
>>131
コンパイル用のコマンドのパーミッション次第だが、
たいていはインストール先をユーザ権限で置ける場所に
変更すればいけるはず。

./configure --prefix="$HOME/bin"
make
make install

とか。
0133名無しさん@お腹いっぱい。2006/11/21(火) 08:23:35
いや、bashの場合は、bashコマンド1個のバイナリ単独で動くから、
自分の$HOMEあたりにソース展開して、普通に
./configure; make
したあと、bashファイルだけ、$HOME/bin あたりに手動コピーして使えばいい。
別に --prefixの指定は要らない。
0136名無しさん@お腹いっぱい。2006/11/21(火) 13:26:51
つーか、bashの場合、メッセージカタログ自体ねーよ。
>>133 で、「1個のバイナリ単独で動く」って言ってるだろ。
0138名無しさん@お腹いっぱい。2006/11/21(火) 20:39:40
>>131(>>121)
> なるほど。homeでのコンパイルは管理者権限いらないんですか?

>>125に「学校のLinuxは…」という発言があったので、Linux上でコンパイルする
ときの話ですよね。多くの学生が使う演習室環境とか、そういうのかな?
そのLinuxシステムでは、>>131だけでなく、多くのユーザがいるかと思います。
# たとえ>>131専用のマシンで動くLinuxシステムであっても、"root"と呼ばれる
# 管理者用ユーザアカウントが存在するはずです。
で、その(一般)ユーザ自身のためのディレクトリってものがあるはずです、それが
ホームディレクトリ。そのディレクトリの中は、そのユーザ自身が好きに使える
(ファイルの作成/編集/削除が自由に行える)。

ビルド時は、
 ・configureスクリプト実行時にMakefileが生成される
 ・コンパイル時にオブジェクトファイル(.oファイル)が生成される
 ・実行ファイルbashが生成される
といった変化があるわけですが、これら生成されるファイルがホームディレクトリ
の中のどこかであれば、
  root権限なくてもビルド(コンパイル)できます

>>132が言っていることはそういうこと。ただし、>>132の、--prefixの指定は
間違っているな。それだと、実行ファイルbashは $HOME/bin/bin/ にインストール
されることになるから。
 % ./configure --prefix="${HOME}/bash"
 % make
 % make install
こう実行すれば、${HOME}/bash/以下に、実行ファイルやマニュアルなどが入る。
0139名無しさん@お腹いっぱい。2006/11/21(火) 20:40:57
>メッセージカタログ
tcshに存在する「メッセージカタログ」は独自のものだけど、それと同等のものが
bashにも存在したりしないか?ロシアの環境ではメッセージがロシア語になるとか、
そういうの。
bashでは、gettextを利用してこの機能を実現してると思うんだけど。
0140名無しさん@お腹いっぱい。2006/11/21(火) 21:20:47
>>139
bashの場合、libcにある汎用エラーメッセジについては *.moを読みに行くが、
bash自体の bash.moは存在しないね。
だから、bash単独で動作させて桶。

LC_MESSAGES=ja_JP.eucJPとかなら、libc側のメッセージカタログはOS側にあるので、
「そのようなファイルやディレクトリはありません」みたいなメッセージは出るよ。

それに、仮にbash自身の bash.moが存在したとしても、
それを $HOME/locale/ja/LC_MESSAGES/bash.mo みたいな埋め込みPATHで
読みに来られたら、それはそれでいやだぞ。

bashの場合は必要ないが、bash以外のソフトの場合、
可能ならば ./configure --disable-nls して、メッセージカタログを
外してしまうのが吉。
01411212006/11/23(木) 14:55:34
>>138
どうも詳しい説明をありがとうございました。
実際にやってみましたので報告します。

まず、Linuxについてです。
最新のbash 3.2のソースを取ってきて、パッチも5まであてて
3.2.5の構成に成功しました。
ここで>>121のバグが再現されるかをテストしてみたら、再現されませんでした(正常にふるまう)。

次に、Cygwinについてです。
同様のソースとパッチで3.2.5を構成しようと試みましたが、なにやらエラーが起きました。
lib/glob/glob.cの484行目のREAL_DIR_ENTRY (dp)が原因のようで、これが構造体に置き換わっているのですが、
その置き換わったものが指しているメンバが存在しないようです。この部分を1または0にすると構成に成功しました。
しかし、どちらの場合もバグは再現されてしまいました。

以上のことを踏まえまして、
1.glob.cが今回のバグに関係のあるファイルの場合
     このファイルが原因
2.glob.cが今回のバグに関係のないファイルの場合
     Cygwinが原因
という結論を得ました。

どなたか、glob.cが何を司ってるファイルかわかる方はいらっしゃいますでしょうか?
また、Linuxでは問題ないのに、Cygwinでは問題が発生するというメカニズムの何らかの可能性をご存知の方はいらっしゃいますでしょうか?
0142名無しさん@お腹いっぱい。2006/11/23(木) 16:48:22
>>141
OpenBSD4.0(-stable)上のBash(3.1.17)では再現せず。
ソース見てないけど、ファイル名的にはグロビング関係なのかな。
そこまでやる気力があるなら自分でfixしちゃえばいいのに・・・。
0146名無しさん@お腹いっぱい。2006/12/01(金) 19:28:41
>>145
野良RPMは知らないけどFC6のデフォルトのリポジトリでは無いと思う。
漏れもFC6入ってるけど、3.1.6が今のところ最新の模様。
01471452006/12/04(月) 03:56:57
>>146
なるほど、FC6公式の(?)パッケージとしては3.1止まりなわけですね。
# 細かい話ですが、こちらでもインストールしているFC6では
#  % rpm -qa | grep 'bash'
#  bash-3.1-16.1
#  %
# となりました。3.1.6ではなくて3.1-16かな?

ってことで、最新バージョンを使いたければ、ソースコードから自分でビルドして
rpmbuildとかで自分でパッケージ作ってインストールすることになるのかな?

(Linuxは使い始めてからまだ日が浅くてよく分かってなかったりしますが。。)
01481462006/12/04(月) 04:13:38
>>147
ごめん、typoだった。仰る通り3.1.16だと思う。
(gnuの公式サイトでは17までpatchが出てるみたいだけど)

最新版を使いたければ、
http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-00{1..5}
を落としてきて普通にコンパイルすればOK。
(現時点での最新版は3.2.5だと思う)

あと、RPMについてはよくわからんので、L犬板あたりでよろ。
ちなみに漏れは普通にconfigure && make && make installで
/usr/local以下に入れちゃってる。
昔からの習慣のせいなのか、これが一番落ち着くんだよね。
あと、割合configureオプション多いから吟味した方がいいよ。
0149145=1472006/12/04(月) 13:06:58
>>148(=>>146)
即レス感謝。
FreeBSDは結構使っていてソフトウェアは全部ソースコードからビルドしてるけど、
Linux系OS(FC6とか)でもやっぱりそうした方がいいのかなぁ。

*** 以下、bashに限らない話で、脱線気味

> 昔からの習慣のせいなのか、これが一番落ち着くんだよね。
確かにそれはある :)
んでも、configureスクリプトに渡すオプションなど、インストール方法を覚えて
おくのって難しいんだよね(つーか不可能)
インストールメモを作って保管してるけど、結構大変。その点、RPMは
 ・どのファイル(/bin/bash,/usr/share/man/man1/bash.1.gzとか)がブチ込
  まれたか(% rpm -ql bash-3.1-16.1)
 ・いつインストールしたか等(% rpm -qi bash-3.1-16.1)
といった情報も保管されているので、その点は便利かも。

> あと、割合configureオプション多いから吟味した方がいいよ。
これも、ソースコードからビルドする人の特権ですな。bashのソースコードで使え
るオプションを全部把握するのは難しそうだけど、まぁ調べてみますです。
01501482006/12/04(月) 16:21:00
> FreeBSDは結構使っていてソフトウェアは全部ソースコードからビルドしてるけど、
> Linux系OS(FC6とか)でもやっぱりそうした方がいいのかなぁ。
ごめん、これについては何とも言えない。
うっかりしたこと言うと宗教戦争になりそうだ(w
個人的には、よく使うソフトはRPMは無視して
自分でソースからビルドしちゃってるなぁ。
cronを回して、差分パッチが出たら即座にver.upみたいな感じで。

##以下はネタ
> どのファイルがブチ込まれたか
make install | tee bash.log

> いつインストールしたか
ls -l bash.log
0151名無しさん@お腹いっぱい。2006/12/04(月) 21:58:11
autoconfがらみのソフトウェア(たいていの場合はそう)の場合、
% make (-n) install
の表示って複雑すぎて一見何をしているのかが分かりずらいんですよね。(丹念に
読めば理解できなくもないが…)

> > いつインストールしたか
> ls -l bash.log
それもいいけど、script(1)で記録してたのなら、最初と最後の1行に時刻が記録
されてるだろうから、それを見るという方法もありますな。

まぁ、スレ違い気味なんでこの辺にしときましょうか

> cronを回して、差分パッチが出たら即座にver.upみたいな感じで。
激しいっすね。さすが
0152名無しさん@お腹いっぱい。2006/12/05(火) 08:16:01
checkinstallというソフトを使うのもいいよ。open関係をhookして
どこに新しいファイルがインストールされたか記録できる。
0154名無しさん@お腹いっぱい。2007/01/10(水) 01:24:40
bash3 になってから zsh みたいに command history に command を実行した
日時も記録する機能が加わっていたみたい、知らんかった。
0160名無しさん@お腹いっぱい。2007/08/22(水) 11:04:43
#!/bin/sh -x

cmd
cmd

#ここからこのシェルのstderrの出力をファイルにリダイレクトできますか?

cmd
cmd
0163名無しさん@お腹いっぱい。2007/08/22(水) 12:00:13
read -e のreadlineの処理で、
この入力履歴を独自のヒストリーファイルに保存することってできますか?
0165名無しさん@お腹いっぱい。2007/09/08(土) 22:38:01
今頃になってC-rの存在に気がついてウンコちびった
0175名無しさん@お腹いっぱい。2007/09/18(火) 17:25:43
>>174
bash - sh = tcsh - csh
これでどうだ。

追加機能はファイル名補完機能とか、TABでの補完、
ヒストリの再利用、コマンドライン編集あたりか?
0187名無しさん@お腹いっぱい。2009/02/25(水) 14:51:58
bash 4.0 がでたみたいだな。
3.0 系と何が変わったか、誰か教えてくれ
0192名無しさん@お腹いっぱい。2009/02/28(土) 17:57:31
JCLの亊?とは思うけど、あまり気にならないなぁ。
シェルスクリプトをシェルと言うのは、凄く気になる。
0193名無しさん@お腹いっぱい。2009/02/28(土) 18:45:32
まぁMS-DOSのバッチファイルからの流れだろうなぁ
シェルスクリプトをバッチと呼ぶのは。

メインフレーム文化からというよりは。
0194名無しさん@お腹いっぱい。2009/02/28(土) 19:15:45
>>190
自分がどの拡張構文使っているか分からない時は、
#!/bin/bashとか#!/bin/zshとか書いてる。

>>192
文脈で大体分かるけど、たしかにイラっとすることもあるね。
レスを投稿する


ニューススポーツなんでも実況