bashで補完スレ
..
2:名無しさん@お腹いっぱい。
02/02/07 03:17.net
2Get
3:名無しさん@Emacs
02/02/07 03:20.net
>>1
> bash2で補完機能が強化されているようですが
> 皆さんいかがお過ごしでしょうか?
氏ね
4:名無しさん@お腹いっぱい。
02/02/07 03:24.net
complete -d cd
complete -c man
complete -u {su,finger}
5:名無しさん@お腹いっぱい。
02/02/07 07:59.net
autoload -U compinit;compinit
6:名無しさん@お腹いっぱい。
02/02/08 00:49.net
gccの引数として*.cを補完させたいときどうすればいいの?
7:名無しさん@お腹いっぱい。
02/02/08 15:20.net
>>6
漏れも教えてほすぃ
8:名無しさん@お腹いっぱい。
02/02/08 15:31.net
mv !$ ~/trash
みたいなAlias書きたいのですが、、、
どうかいたらいいですかね?
9:名無しさん┃】【┃Dolby
02/02/08 16:29.net
>>6 bash-2.0.5aの
examples/complete/complete* を眺めた感じでは
complete -f -X '!*.c' gcc
だと思う。誰か試してくれ
10:名無しさん@お腹いっぱい。
02/02/09 07:07.net
>>8
!$が何か知りませんが
function rm () { command mv $@ ~/trash/ ; }
とかどうでしょう?
rmとmvのオプションの違いとかを吸収していませんが
>>9
カレントディレクトリのファイルはうまく補完できるみたいです
lprとかで印刷するときなどにディレクトリ名も補完しながら
探せると便利だと思うんですが
complete -f -X'!*.ps' lpr
と真似してみたところディレクトリは補完されないようです
11:名無しさん@お腹いっぱい。
02/02/09 13:59.net
>>10
rm -r怒られるのちと痛いんでsedかawkでちょっとだけ
引数修正したいね。
12:名無しさん@お腹いっぱい。
02/02/10 01:03.net
bashよりzshつかうべき?
13:名無しさん@お腹いっぱい。
02/02/10 08:05.net
>>12
悩むなら bash より zsh 使えば良い。
14:名無しさん@お腹いっぱい。
02/02/10 21:30.net
っつー事で zsh スレ
スレリンク(unix板)
15:名無しさん@お腹いっぱい。
02/02/11 02:56.net
>>14
そりゃ反則ですよ
16:名無しさん@お腹いっぱい。
02/02/12 04:07.net
bash2って何処で手にはいるの?
17:名無しさん@お腹いっぱい。
02/02/12 04:22.net
>>16
FreeBSDやLinuxのほとんどのディストリビューションに
はいってますよ。
18:名無しさん@お腹いっぱい。
02/02/14 02:46.net
bash2補完機能もっとがんばれage
19:名無しさん@お腹いっぱい。
02/02/21 00:20.net
ええと、自慢の.bashrcをアプし合うスレはここですか?
20:名無しさん@お腹いっぱい。
02/02/21 04:59.net
>>19
いいえ。ゴミなら/dev/nullにどうぞ。
21:名無しさん@お腹いっぱい。
02/02/21 06:37.net
おまえらのシステムにはこういうゴミが有りますか?
/usr/man/man1/..1.gz
/usr/man/man1/:.1.gz
22:名無しさん@お腹いっぱい。
02/02/21 07:48.net
complete: usage: complete [-abcdefjkvu] [-pr]
[-A action] [-G globpat] [-W wordlist] [-P prefix]
[-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
使い方が判らんのれす
23:名無しさん@お腹いっぱい。
02/02/22 00:03.net
>>19
.bashrc
とりあえずネラーなら
MAILPATH="/var/mail/mona?メール キタ━━━(゜∀゜)━━━ !!!!! "
MAILCHECK=5
だろう。メールボックスのパスは自分で変えろよ。
24:名無しさん@お腹いっぱい。
02/02/23 17:30.net
>>22
禿道
25:名無しさん@お腹いっぱい。
02/02/24 00:35.net
man bash2 に結構書いてあった。
しかし -C の挙動が理解できない。
26:名無しさん@お腹いっぱい。
02/02/24 00:36.net
スクリプトとかで /bin/bash が使われた時に
complete 無いぞ メッセージが出るんで
[ "$BASH_VERSINFO" = "2" ] で回避してみた。
27:名無しさん@お腹いっぱい。
02/02/27 23:17.net
URLリンク(www.KU3G.org)
ここで少しだけ紹介されていた。ここにあるリンク先
URLリンク(www.caliban.org)
にあるbash-completion-20020225.tar.gzのなかにたくさん
補完候補があったよ。但し、2.05以降でしか使えないみたい
だから2.04とかのひとはがんばってgoogleとかで探さないとね。
28:名無しさん@お腹いっぱい。
02/03/01 11:58.net
>>27
ありがとうage
29:名無しさん@お腹いっぱい。
02/03/03 12:44.net
>>26
対話的利用時の設定は、
PS1が設定されている場合だけ行うのが、Bourne系shellの流儀です。
if [ ${PS1:-not_interactive} = not_interactive ]; the
対話的利用時の設定(alias,completeなど)
fi
こうしないと別の人間が/のscriptを使った時に、
aliasの設定等により別の動作をしてしまう可能性があります。
bashは、$-にiが含まれていても対話的利用と分かります。
30:名無しさん@お腹いっぱい。
02/03/03 15:21.net
>>29
> bashは、$-にiが含まれていても対話的利用と分かります。
$-かぁ。知らなかった。
31:名無しさん@お腹いっぱい。
02/03/03 16:08.net
>>29
> こうしないと別の人間が/のscriptを使った時に、
#! /bin/bashのscriptを使った時に、
の編集ミスね。
32:名無しさん@Emacs
02/03/08 17:16.net
誰か >>10 の
> と真似してみたところディレクトリは補完されないようです
を解決する関数を書いた人はいませんか? いたらウプして下さい。
bash-completion-20020306 を試してみたけどなさそうです。
33:32
02/03/11 17:51.net
誰も反応してくれないので自分で書いたよ。
もっとシンプルに書けんもんかのう…せめて関数にパターンが渡せれば。
いちいち関数定義なんかしてられんよ。
_gs()
{
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $( compgen -d -- $cur ) \
$( compgen -f -X '!*.@(?(e)ps|?(E)PS)' -- $cur ) )
return 0
}
complete -F _gs -o filenames gs ghostview
34:名無しさん@お腹いっぱい。
02/03/11 21:32.net
halt
35:名無しさん@お腹いっぱい。
02/03/19 20:23.net
reboot
36:名無しさん@お腹いっぱい。
02/03/22 10:04.net
login:
37:名無しさん@お腹いっぱい。
02/03/25 13:19.net
login: root
Password:
38:名無しさん@お腹いっぱい。
02/05/13 04:47.net
/sbin/shutdown -r now
39:名無しさん@お腹いっぱい。
02/05/13 09:14.net
login:
40:名無しさん@お腹いっぱい。
02/05/13 23:12.net
>>32
おれももディレクトリを補完できないで悩んでいたんだ。ありがとう。
33を試させてもらいます。
41:40
02/06/03 20:31.net
ずいぶん返事が遅れてすまぬ。
33でうまくいってます。
しかし33のいうとおり一つ一つ関数定義するのメンドイね。
何かいい方法ないかな?
42:名無しさん@お腹いっぱい。
02/06/07 09:38.net
bashがよくわ<tab>
43:名無しさん@お腹いっぱい。
02/06/30 14:34.net
>>42
% bashがよくわ<tab>
からない かる かりたい らう
% bashがよくわ_
44:名無しさん@お腹いっぱい。
02/06/30 14:51.net
英語がよくわ<tab>
45:名無しさん@お腹いっぱい。
02/06/30 17:30.net
% 英語がよくわ<tab>
たしを苦しめる
% 英語がよくわ_
46:名無しさん@お腹いっぱい。
02/06/30 22:27.net
$ tcshやzshはどうして<Ctrl-D>
で保管をリスティングするのだろう?
$ tcshやzshはどうして
$ promptを%<tab>
って書いている奴は本当にbash使ってるのかと(略
$ promptを%
47:名無しさん@お腹いっぱい。
02/06/30 22:31.net
俺zshだけど%使ってる。
48:名無しさん@お腹いっぱい。
02/07/15 17:17.net
bashでtcshみたいに
$ s
って入力してから履歴見ると
履歴の中で「s」で始まるのだけ表示してくれるようにって出来る?
49:名無しさん@お腹いっぱい
02/07/15 23:08.net
>>46
コマカイコトイウナヨーオマエ
50:名無しさん@お腹いっぱい。
02/07/16 01:49.net
>>46
% 俺は途中乗|<tab>
換でbash使い始めたけど$は落ち着かないから%にしてる
% 俺は途中乗|
% |
% う|<tab>
うるせーばか
% う|
51:名無しさん@お腹いっぱい。
02/07/23 14:29.net
「bashがマルチバイト文字に正式対応」
URLリンク(slashdot.jp)
これって日本語のファイル名とかもlsで表示できるってこと?
52:名無しさん@お腹いっぱい。
02/07/23 15:20.net
こういう時はageたほうがいいような。
よくわからんのでさっそく2.05bをいれてみたんだが、行の折り返しで化ける問題
もマルチバイト文字を2文字として認識してる問題も、まるっきり変わってない
ような気が。
buildの仕方に問題あったのかなあ。
あ、でも補完機能すごいね。
補完リストが1画面分より長いと、途中で止めてくれるわ。これは便利かも。
53:名無しさん@お腹いっぱい。
02/07/23 15:33.net
いっしょに話題になったreadlineをインスコした。
readlineを使ったプログラム、うちの場合はPostgreSQLの
フロントエンドpsqlなのだが、ロケールの設定を日本語に
しておくと、漢字部分でのカーソル移動がちゃんと2文字分
になってて、削除も漢字1文字ごとやってくれる。
多分新Bashもこんな感じなのかな。psqlではおかげで
日本語レコードの操作が楽になったので新Bashでは
ターミナルでのマルチバイト処理がしやすくなってる
と推測。あくまで推測 (w
54:53
02/07/23 15:34.net
まてよ、psqlは前からマルチバイト扱えたっけ?
うーん、今では確認しようがない。スマソ。
55:名無しさん@お腹いっぱい。
02/07/23 15:51.net
>>54
psqlは日本語パッチがあって、それ当ててれば日本語の編集がウマーだったよ
うな気がする。
56:名無しさん@お腹いっぱい。
02/07/23 16:08.net
>>55
今のpsqlにはパッチ当ててない。それで日本語が
まともになったということは。やはりreadlineですかね。
なんかglibcといい、bashといい、マルチバイト対応が
すごいですね。ロケールの切り替えだけで多言語対応できる
Unixマンセー。
57:名無しさん@お腹いっぱい。
02/07/23 16:26.net
>>52
コンパイルオプション増えた?>自分でやりって言わないで・・
58:名無しさん@お腹いっぱい。
02/07/24 00:45.net
>>52
libcがヘボいと(たぶん)configure時に「マルチバイト駄目じゃん」と
判断されて従来通りコンパイルされるよ。
だからCitrus無しのNetBSDとかCygwinなんかだと悲しい…
59:名無しさん@お腹いっぱい。
02/09/01 12:17.net
バスケットシューズあげ
60:名無しさん@お腹いっぱい。
02/09/01 17:38.net
バトミントンシューズsage
61:名無しさん@XEmacs
02/09/01 23:31.net
>48
.inputrc に
"\C-n":history-search-forward
"\C-p":history-search-backward
とか書くとか。
62:名無しさん@お腹いっぱい。
02/09/09 11:53.net
bashのパターン照合について
複数のパターンで文字列を抽出
する方法ありましたらご指南お願いします。
(もっとも一旦変数に格納し、分ければ
いいのですが、可能ならばその方法を知りたいです。)
例えば、
$data="/export/user1/test-20020909.log"
で20020909の文字を抽出する場合、一度に
${${data##/*-}%.*}
の様にしたいのですが、
bad substitution
とエラーが出てしまいます。
63:名無しさん@お腹いっぱい。
02/09/09 12:00.net
>>62
こっちで。
シェル、オークの質問コーナー
スレリンク(unix板)
64:名無しさん@お腹いっぱい。
02/09/09 12:18.net
>>62
誘導ども。
逝ってきます。
65:名無しさん@お腹いっぱい。
02/09/17 06:57.net
補完じゃないんですけど教えてください。
emacsと同様に ALT+Backspaceで一語消したいのですが、
どうやったら良いのでしょうか?
66:名無しさん@XEmacs
02/09/17 09:41.net
>65
あり、 ALT+BS ってデフォルトで消えなかったっけ?
ALT+h なら .inputrc に下を書けばいいんだけど。。。
"\M-h":backward-kill-word
67:65
02/09/17 23:25.net
>>66
あっ、すみません!
家の中に、デフォルトで消えるbashと消えないbashがあるのに気付きました。
#うーん、なんでだろう??
68:名無しさん@XEmacs
02/09/18 04:16.net
>67
version の違いですかね?
挙動の違いといえば、チルダの展開も変わってたりしてハマりますなぁ。。。
69:67
02/09/18 04:56.net
それが、どうもバージョンじゃないみたいなんで悩んでます。(--versionしてみた)
しかも、消せるほうのbashのバイナリを消せないホストにコピーすると、ちゃーんと
消せるようになるんで、設定ファイルとかのせいでも無いみたい...
コンパイル時のオプションかと思うんですけど、もうコンパイルしたときの
作業したソースとか全部消しちゃったんで、ちゃんと動かせるオプション試行錯誤して見つけないと
確かめられなさそう...(コンパイル時のオプション情報なんてバイナリに残らないですよね...)
70:名無しさん@お腹いっぱい。
02/10/20 17:29.net
bashで
"\ep": history-search-backward
"\en": history-search-forward
をC-pとかに割り当てたい
71:名無しさん@お腹いっぱい。
02/10/20 17:49.net
cat .zsh-history |xargs ssh remote cat >> .zsh-history
72:名無しさん@お腹いっぱい。
02/10/28 10:03.net
aae
73:山崎渉
03/01/15 13:25.net
(^^)
74:山崎渉
03/03/13 18:00.net
(^^)
75:名無しさん@お腹いっぱい。
03/03/18 22:46.net
$ このス^I
このスレって、もう死に体だね!
$ このスレって、もう死に体だね!_
76:名無しさん@お腹いっぱい。
03/03/19 06:29.net
>>70
割り当てろよ
77:山崎渉
03/04/17 12:15.net
(^^)
78:あぼーん
あぼーん.net
あぼーん
79:名無しさん@Meadow
03/04/26 19:21.net
パラメータに入れた文字列を、パス展開させたいんだけど、
どうしたらようござんしょう?
例えば、
files="hoge*" && パス展開 && [ ${#files[*]} -ne 0 ]
とか、したいわけよ。
80:79
03/04/26 19:40.net
とりあえず、パス名展開はでけたが、配列になってない…(T_T)
> touch hogea hogeb hogec
> echo hoge*
hogea hogeb hogec
> files="hoge*" && echo ${#files}
5
> files="hoge*" && tmp=`echo $files` && echo ${#tmp}
17
で $files がパス名展開されてることが分かったが、
> files="hoge*" && tmp=`echo $files` && echo ${#tmp[*]}
1
むきーっ
81:79
03/04/26 20:21.net
もれはアホだー!!
> files=(hoge*) && echo ${#files[*]}
3
82:あぼーん
あぼーん.net
あぼーん
83:あぼーん
あぼーん.net
あぼーん
84:名無しさん@お腹いっぱい。
03/06/14 12:32.net
どうせならmigemo呼び出して日本語ファイル名補完とかして欲すぃ。
誰か実装してたりしませんか。
85:あぼーん
あぼーん.net
あぼーん
86:名無しさん@お腹いっぱい。
03/06/15 11:23.net
>>56
PS1= の内容については、マルチバイト文字が認識されてないっぽい。
87:名無しさん@お腹いっぱい。
03/06/18 22:47.net
menu-completeは引数を受け取れるとmanに書いてあるけど、
こういう引数付きコマンドを.inputrcで何らのキーに割り当てるにはどうするの?
色々やってみたんだが…。
88:名無しさん@お腹いっぱい。
03/07/13 22:28.net
kshとbashどちらを先に覚えた方がいいですか?
89:あぼーん
あぼーん.net
あぼーん
90:名無しさん@お腹いっぱい。
03/07/19 22:38.net
cygwinのbashには/etc/bash_completionが入ってないなー。
91:名無しさん@お腹いっぱい。
03/07/26 22:49.net
Mainte
92:名無しさん@お腹いっぱい。
03/07/31 11:23.net
bashにはtcshのコンプリート機能はないにょ?
93:名無しさん@お腹いっぱい。
03/07/31 11:28.net
bash には bash のコンプリート機能があるにょ。
94:名無しさん@お腹いっぱい。
03/07/31 12:08.net
>>93 あったにょ?知らなかったにょ
95:ぼるじょあ ◆yBEncckFOU
03/08/02 04:59.net
∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎―――◎ 山崎渉&ぼるじょあ
96:コンプマン
03/10/15 14:57.net
今日はすごい裏技を紹介します。
題して、 「 1から255までループ 」
まず、 1から255までの連続したファイル名を用意します。
中身は空でかまいません。
そのファイルをどこかのディレクトリに格納します。
そして、そのディレクトリに移動したら
for i in *; do echo $i; done
これでばっちり1〜255までループできますね!
【応用編】
1万回ループしたいときは、ファイルを
1〜10000まで用意するといいですよ
97:名無しさん@お腹いっぱい。
03/10/15 15:10.net
>>96
$ for i in *; do echo $i; done
1
10
100
101
102
103
104
105
106
107
108
109
11
110
111
...
先生!順番が…
98:コンプマン
03/10/15 15:13.net
>>97
新たな投稿ありがとう。 ミッションスタート!!
ファイル名を
000
001
002
・・・
254
255
と書き換えましょう
99:名無しさん@お腹いっぱい。
03/10/15 15:49.net
裏技やるのにファイル作るの面倒な人用↓
a=0;while [ $a -le "255" ];do touch $a;let a="${a}+1";done
こいつで裏技バッチリ。
100:コンプマン
03/10/15 16:53.net
応援ありがとう!!
だが、それではファイル名が>>97のようになってしまい
とても不完全なものとなるのでした。
そこで>>99を添削してみました。 caseが美しいですね。
a=1;
while [ $a -le "255" ]; do
case `echo ${#a}` in
"1") s="00$a" ;;
"2") s="0$a" ;;
"3") s="$a" ;;
esac; touch $s; a=$((a+1));
done
101:今婦てぃっく
03/10/15 18:37.net
>>100
a=0;while [ $a -le "255" ];do touch `printf %03d\\n $a` ;let a="${a}+1";done
102:今婦てぃっく
03/10/15 18:39.net
>>101
\\nいらね〜・・・touch ``なしで実験したんだよもん
103:名無しさん@お腹いっぱい。
03/10/15 18:54.net
桁数そろえるには、こんな感じかな。
for i in *;do mv $i `echo $i |sed "s/^\([0-9]\)$/00\1/;s/^\([0-9][0-9]\)$/0\1/"`;done
104:名無しさん@お腹いっぱい。
03/10/16 09:50.net
GNU coreutils の seq でいいよ...
105:コンプマン
03/10/16 10:35.net
>>104
for i in `seq -w 255`; do touch $i; done
と、こうくるわけですか。さすが グニュー使いは裏技使い!
もちろん動作も最も速くて完璧超人ですか・・・
でももしこれが 255000 だったりしたらたいへんです
なかなか始まりません。 これが今日の裏技。
106:名無しさん@お腹いっぱい。
03/10/16 10:45.net
seq -w 255000 | while read i;do echo $i;done
だと、ちっとまし?
107:今婦てぃっく
03/10/16 14:17.net
>>105
のまえにラインバッファの限界こないか?
xargsとかつかいな
108:名無しさん@お腹いっぱい。
03/10/16 14:31.net
>>104
> GNU coreutils の seq でいいよ...
zsh だとビルトインですが何か?
109:コンプマン
03/10/16 14:40.net
>>107
それは大丈夫だ。
100万個のループでも我慢して待てば動作するぞ!
だが 1000000 は 1e+06 と表現されるから注意が必要だ。
キミも渡来!
110:名無しさん@お腹いっぱい。
03/10/16 14:48.net
>>108
何でもかんでも built-in にするのキモい。
111:名無しさん@お腹いっぱい。
03/10/16 17:47.net
>>110
思想的にちょっぴり同意。
112:名無しさん@お腹いっぱい。
03/10/16 18:46.net
busybox立場無いなぁ とか思ったりしたけど バッシュレ?
113:名無しさん@お腹いっぱい。
03/10/16 19:13.net
built-inだと誇らしげに言ってるあたりがイタイね
114:名無しさん@お腹いっぱい。
03/10/16 21:03.net
void main (){}
をa.outとコンパイルして
a.out && echo "sage"
とするとsageと表示されるのですがそんなものなのですか?
返り値を返してはいないのですが。。。
不定の結果なのでしょうか?
115:名無しさん@お腹いっぱい。
03/10/16 21:26.net
>>114
./a.out; echo $?
だとどう?
116:名無しさん@お腹いっぱい。
03/10/16 23:25.net
>>110
> 何でもかんでも built-in にするのキモい。
>>113
> built-inだと誇らしげに言ってるあたりがイタイね
そうかな。coreutils, bash を両方インストールするのが無駄
117:名無しさん@お腹いっぱい。
03/10/17 01:23.net
>>116
coreutils = fileutils + textutils + sh-utils
どのみち使う。無駄なわけない
118:名無しさん@お腹いっぱい。
03/10/17 02:18.net
zsh はいつか perl も built-in にしそうだな。
119:名無しさん@お腹いっぱい。
03/10/17 02:39.net
ゆくゆくは Emacs を
120:名無しさん@お腹いっぱい。
03/10/17 02:58.net
>>117
> coreutils = fileutils + textutils + sh-utils
> どのみち使う。無駄なわけない
Linux ゆーざだけでは?
121:名無しさん@お腹いっぱい。
03/10/17 10:35.net
ああ、>>117 の 3 つがまとまった coreutils は GNU の産物だからね。
Linux 使いは coreutils パッケージとしてまとめてインストールしておいたほうが
本気で細々したプログラム群を個別にインストールしなくていいので楽。
coreutils が要らないって人は別のパッケージングや管理方法を使ってるんでしょう。たぶん。
122:名無しさん@お腹いっぱい。
03/10/17 10:39.net
>>121
> Linux 使いは coreutils パッケージとしてまとめてインストールしておいたほうが
> 本気で細々したプログラム群を個別にインストールしなくていいので楽。
板違い。
> coreutils が要らないって人は別のパッケージングや管理方法を使ってるんでしょう。たぶん。
OS 附属のものを使ってます。
123:名無しさん@お腹いっぱい。
03/10/17 14:07.net
>>112
あれは限定された環境で使うためのものじゃん。
124:名無しさん@お腹いっぱい。
03/11/10 09:22.net
補完の話じゃなくて申し訳ないが質問。
十年以上 tcsh使ってて、
たまーに Linuxとか cygwin入ってる Windowsとかで bashを使うことが
あって、そのたびに面倒だなーと思ってるんだけど
bash で tcsh の implicitcd に相当することをするにはどうするの?
(ディレクトリ名タイプだけで cdする機能)
125:名無しさん@お腹いっぱい。
03/11/10 20:22.net
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
...
126:名無しさん@お腹いっぱい。
03/11/16 20:55.net
bashが当たり前に動いてるUNIXってあるんですか?
127:名無しさん@お腹いっぱい。
03/11/16 22:07.net
linux
128:名無しさん@お腹いっぱい。
03/11/16 22:19.net
cygwin
129:名無しさん@お腹いっぱい。
03/11/16 22:24.net
>>126
ずいぶん前から Solaris にも入ってるよ。
130:名無しさん@お腹いっぱい。
03/11/17 21:27.net
solarisですか!勉強になりました。調べてみます。
131:仕様書無しさん
04/02/15 19:32.net
補完の質問ではないのですが、他にbashのスレが無いようなので
ここに書かせていただきます。
ls -l | grep '^d'
のようなパイプラインの実現方法なのですが、
@foo.shのようなファイルに記述してそこにパスを通す
A.bashrcで関数function foo{...}と定義する
上記の@とAのどちらが適切なのでしょうか。
132:名無しさん@お腹いっぱい。
04/02/15 20:20.net
・シェル関数はカレントシェルのプロセス内で実行される
・シェルスクリプトはサブシェル内で実行される
ls -a | grep なんとか
というコマンド列はどっちでも変わらない。
133:名無しさん@お腹いっぱい。
04/02/15 21:52.net
>>131
どちらがといわれても、どっちも空白にしか見えない。
134:コンプマン
04/03/01 11:40.net
今日はbashのif文で質問だ!
if文は便利だが、AND条件でちょっと困ったことがある
if [ "$HOGE"="hoge" and "$PIYO"="piyo" ]; then 〜
みたいなことをやりたいときは どうするのが賢いかな?
if文if文、またif文!?
135:名無しさん@お腹いっぱい。
04/03/01 11:51.net
あきらめて下さい。
136:名無しさん@お腹いっぱい。
04/03/01 12:08.net
if [ list1 -a list2 ]; then 〜
137:名無しさん@お腹いっぱい。
04/03/01 13:00.net
>>134
if [ "$HOGE" = hoge ] && [ "$PIYO" = piyo ]; then
補完関係ないし。
138:名無しさん@お腹いっぱい。
04/03/01 13:20.net
[ が何だかわかってるのかな
139:コンプマン
04/03/01 13:45.net
>>138
今知った! 賢くなった!
>>137
ありがとう! 紳士よ!
140:名無しさん@お腹いっぱい。
04/03/01 13:54.net
>>134
help test
or
man test
141:名無しさん@お腹いっぱい。
04/04/13 13:15.net
if文で文字列の辞書比較
142:名無しさん@お腹いっぱい。
04/04/14 15:15.net
if文で文字列の辞書比較
はどうやら出来そうも無い
143:名無しさん@お腹いっぱい。
04/04/17 14:48.net
if文で文字列の辞書比較
はどうやら出来そうも無い
別の方法で実現することに
144:名無しさん@お腹いっぱい。
04/04/17 15:01.net
if文で文字列の辞書比較
はどうやら出来そうも無い
別の方法で実現することに
したいと僕のアナルが報告
145:名無しさん@お腹いっぱい。
04/04/27 21:52.net
if文で文字列の辞書比較
はどうやら出来そうも無い
別の方法で実現することに
したいと僕のアナルが報告
するためにローションを
146:名無しさん@お腹いっぱい。
04/05/01 16:45.net
if文で文字列の辞書比較
はどうやら出来そうも無い
別の方法で実現することに
したいと僕のアナルが報告
するためにローションを
ぬ<tab>
ぬか ぬっころす ぬりたくり ぬるぽ
if文で文字列の辞書比較
はどうやら出来そうも無い
別の方法で実現することに
したいと僕のアナルが報告
するためにローションを
ぬ
147:名無しさん@お腹いっぱい。
04/05/01 22:55.net
>146 ガッ!! AA(ry
148:名無しさん@お腹いっぱい。
04/05/11 10:20.net
uniqするにはsortしなければならないけど
sortしてuniqしたあと、sort前に戻したい
というか、sortなしでuniqしたい
どうしたらいいかな?
自分で書いたらかっこよくなかった
スタイリッシュな方法キボン
149:名無しさん@お腹いっぱい。
04/05/11 10:24.net
cshがあれば他はいらなくね?
ぬるぽ
150:名無しさん@お腹いっぱい。
04/05/11 10:59.net
番号つけてsortしてuniqして番号順にsortして番号消すってのが、
かっこよくない方法か?>>148
151:名無しさん@お腹いっぱい。
04/05/11 11:03.net
補完と関係あるのか?
152:名無しさん@お腹いっぱい。
04/05/11 11:41.net
>>150
番号つけてソートしたら番号順にソートされて
つまりそれってソートされないんじゃ?
153:名無しさん@お腹いっぱい。
04/05/11 11:56.net
>>152
番号以外の部分でソートするってことです。
154:名無しさん@お腹いっぱい。
04/05/11 12:21.net
丁寧にソートするですね
そーっと
ウェーハッハッハ
155:名無しさん@お腹いっぱい。
04/05/11 12:23.net
tcsh
156:名無しさん@お腹いっぱい。
04/05/11 17:18.net
ソートしてみた。
視覚化になんとJavaVMを使用しています。
* #!/usr/local/bin/bash
* declare -a array[15];
* while :; do
* array=(`cat /dev/urandom|od -tu1 \
* | sed -e 's/^..........//g'| head -n 1`);
* for ((I = 0;I < 16; I++)); do
* echo -n " ${array[${I}]}";
* done
* echo -e "";
* for ((I = 0;I < 15; I++)); do
* for ((J = 15; J > ${I}; J--)); do
* if [ ${array[J - 1]} -gt ${array[J]} ]; then
* tmp=${array[J - 1]};
* array[J - 1]=${array[J]};
* array[J]=${tmp};
* fi
* for ((K = 0;K < 16; K++)); do
* echo -n " ${array[${K}]}";
* done
* if [ ${I} -lt 14 ]; then
* echo -n $'\r';
* fi
* java -version > /dev/null 2>&1;
* done
* done
* echo -e '\n' '\n';
* done
157:名無しさん@お腹いっぱい。
04/05/13 05:48.net
csh, tcshはうんこ
158:名無しさん@お腹いっぱい。
04/06/09 00:40.net
バージョン 2.05bで、
コマンド ./bin/mycommand を補間しようとして、
./b のあとに補完すると、
./bin を補完してくれるのですが、
「n」のあとに余分なスペースを一つ入れられてしまいます。
期待しているのは
./bin/ と(スペースなしで)補完してくれることなんですが、
どう設定すればいいかご存知の方、
教えて下さい。
159:名無しさん@お腹いっぱい。
04/06/09 01:43.net
zsh を使う
160:名無しさん@お腹いっぱい。
04/06/14 02:44.net
>>158
そういう設定にしちゃってるんじゃない?
新しいアカウントでもそうなる?
setやcompleteの出力を確認してみてみ。
161:名無しさん@お腹いっぱい。
04/06/16 03:08.net
>>160
設定の問題ではなさそうで、
2.05aでは問題なしだった。
162:名無しさん@お腹いっぱい。
04/06/16 03:28.net
うちじゃ 2.05b でも、たとえば ls ./b <tab> で ls ./bin/ になるよ。
コマンドに対して complete でなんか設定しているんじゃないの?
163:名無しさん@お腹いっぱい。
04/06/16 03:33.net
>>162
コマンドの引数じゃなくてコマンドそのものの補完の時。
というか公式パッチ確かめたら、出てました。
bash205b-003でした。
164:名無しさん@お腹いっぱい。
04/07/29 22:01.net
bash 3は{1..10}を展開するようになったんだね。
**/Makefileも展開して欲しいなあ。
165:名無しさん@お腹いっぱい。
04/07/30 00:06.net
>>164
でも{01..10}は展開してくれないんだ…
よって価値無し(wgetでアレなことするには)。
166:名無しさん@お腹いっぱい。
04/07/30 11:24.net
$ for i in `seq -w 1 10`;do wget URLリンク(www.example.com)
seqがないシステムだとどうやって苧としてるの?>all
167:名無しさん@お腹いっぱい。
04/07/30 11:42.net
>>166
man 1 curl
168:166
04/07/30 11:49.net
>>167
curlだとそんな芸当ができたのかorz
169:名無しさん@お腹いっぱい。
04/07/30 11:52.net
seqがないシステムって多いの?
170:名無しさん@お腹いっぱい。
04/08/27 14:59.net
>>166
まず、 1から255までの連続したファイル名を用意し
171:名無しさん@お腹いっぱい。
04/08/27 15:00.net
コマンドの実行結果って何で見れるんだっけ?
exit(x); とかのxの値のことね
$!だと思ったけどなんか違った
172:名無しさん@お腹いっぱい。
04/08/27 15:49.net
manくらい読めよ。
$?な
173:名無しさん@お腹いっぱい。
04/08/27 16:53.net
for ((i=0; i<20; i=i+1));do
wget URLリンク(www.hoge.com) "%02d"`.jpg $i;
done
174:名無しさん@お腹いっぱい。
04/08/27 16:55.net
あう...
for ((i=0; i<20; i=i+1));
do wget URLリンク(www.hoge.com) "%02d\n" $i`.jpg;
done
175:名無しさん@お腹いっぱい。
04/08/27 17:44.net
>>172
URLリンク(www.linux.or.jp)
書いてないんだよね
Linuxはウンコなのかなぁ・・・
176:名無しさん@お腹いっぱい。
04/08/27 18:29.net
>>175
URLリンク(www.linux.or.jp)
あるじゃん。
bash は Linux 専用じゃないよ。
177:名無しさん@お腹いっぱい。
04/08/27 18:43.net
>>174
curl 'URLリンク(www.example.com)' -o '#1.jpg'
178:名無しさん@お腹いっぱい。
04/09/08 16:22.net
perlは反則?
$ perl -e "('001'..'100'){s#(.*)#`wget URLリンク(www.hoge.com)"
179:名無しさん@お腹いっぱい。
04/09/08 16:37.net
>>178 スレタイ読んでみれば。
180:名無しさん@お腹いっぱい。
04/09/08 21:22.net
こっちでやろうよ。
連番のH画像を一気にダウンロードする
スレリンク(unix板)
181:名無しさん@お腹いっぱい。
04/09/16 23:17:08.net
for i in *
do
done
ではエラーになってしまいます。
bashで空文はどうすればいいのでしょうか?
182:名無しさん@お腹いっぱい。
04/09/16 23:18:44.net
>>181
for i in *
do
:
done
183:名無しさん@お腹いっぱい。
04/09/17 01:07:56.net
bash-2.05b$ たまには
たまには補完スレらしく補完してみたり。 たまには糞スレを荒らしてみたり。
bash-2.05b$ たまには
184:名無しさん@お腹いっぱい。
04/09/19 22:09:56.net
$( < /etc/passwd ) と $( cat /etc/passwd )
は同じ事ですか?
アドバイスお願いします。
185:名無しさん@お腹いっぱい。
04/09/19 22:24:29.net
>>184
違う
catという名前のrootにsetuidされたrmコマンドがパスの通ったところの最初にあったら怖いだろ
186:名無しさん@お腹いっぱい。
04/09/19 22:49:57.net
>>185
レスありがとうございます。
具体的には$( < /etc/passwd )の方が安全と言うことなのでしょうか?
いまいちつかめないのですが・・・
187:名無しさん@お腹いっぱい。
04/09/20 03:18:38.net
全然違います。
188:名無しさん@お腹いっぱい。
04/09/21 23:12:43.net
ところで小数の計算ってどうやるの?
for(i=0.0;i<10.0;i=i+0.1){}みたいにしたいのに、やり方がさっぱりわからん。
どなたかやり方教えてください。
189:名無しさん@お腹いっぱい。
04/09/21 23:53:31.net
>>188
10倍して整数で計算しようぜ
190:名無しさん@お腹いっぱい。
04/09/22 00:29:58.net
Cシェルでファイルを読み込む方法を教えて下さい。
191:名無しさん@お腹いっぱい。
04/09/22 00:51:09.net
?
192:名無しさん@お腹いっぱい。
04/09/22 01:55:54.net
>>190
set `cat hoge`
193:名無しさん@お腹いっぱい。
04/09/22 08:06:34.net
>>190
あなたの想定している「ファイルを読み込む」を説明してください.
194:名無しさん@お腹いっぱい。
04/09/22 13:04:13.net
>>188
整数部分と小数部分でダブルループにする
195:188
04/09/22 22:15:29.net
レスしてくれた人、ありがとうございます。
参考にさせていただきます。
196:名無しさん@お腹いっぱい。
04/09/22 23:15:01.net
>>192
>>192
神様へ。
レスありがとうございます。
何がやりたいかというとですねぇ・・・
Cシェルで、ある実行ファイルを実行したいときに、それに渡すためのパラメタを、
ファイルから読み込みたいということなんです。
イメージとして、
// イメージここから
#!/bin/csh
read init.ini // iniファイルを読み込む
Hoge $aaa // 実行ファイルHogeに対して、読み込んだinit.iniに記述している項目を$aaaに設定し、
// パラメタとして指定するということです。
// イメージここまで
197:名無しさん@お腹いっぱい。
04/09/23 09:41:02.net
>>196
Hoge `cat init.ini`
198:名無しさん@お腹いっぱい。
05/01/18 18:03:46 .net
aliasで外部アプリ起動時に引数を渡すには
スクリプトを書く以外に方法はありませんか?
alias hage='/d/program\ files/hage/hage.exe $* &'
みたいなaliasを登録したいんですけど。
199:名無しさん@お腹いっぱい。
05/01/21 19:38:31 .net
i-searchで履歴を検索する時に大文字小文字を区別できませんか?
TABでmenu-completeに設定してるんですけど
*abc*<TAB>
等と入力するのが面倒なので
TABで先頭一致補完、Ctrl+TABでインクリメンタル補完にしたいんですけど
ワイルドカードを使わずにインクリメンタル補完する方法ってありますか?
200:名無しさん@お腹いっぱい。
05/01/21 19:40:27 .net
うぁ読み難いですね。
質問したいことは二つあります。
1.i-searchで履歴を検索する時に大文字小文字を区別できませんか?
2.TABでmenu-completeに設定してるんですけど
*abc*<TAB>
等と入力するのが面倒なので
TABで先頭一致補完、Ctrl+TABでインクリメンタル補完にしたいんですけど
ワイルドカードを使わずにインクリメンタル補完する方法ってありますか?
よろしくお願いします。
201:名無しさん@お腹いっぱい。
05/01/21 19:41:43 .net
度々すいません。訂正です。
うぁ読み難いですね。
質問したいことは二つあります。
1.i-searchで履歴を検索する時に大文字小文字を区別できませんか?
↓
1.i-searchで履歴を検索する時に大文字小文字を区別しないようにできませんか?
202:名無しさん@お腹いっぱい。
05/01/23 01:21:31 .net
タブを押したとき、直前の単語に * が含まれていればマッチするもの全てに展開、
含まれていなければ候補を1つずつ回って行くという挙動にできますか?
203:名無しさん@お腹いっぱい。
05/01/23 10:23:22 .net
>>202
zsh に乗り換える
204:名無しさん@お腹いっぱい。
05/01/23 11:01:14 .net
展開うざくね?
205:名無しさん@お腹いっぱい。
05/01/28 23:33:32 .net
### で始まる文字列が来るまで
テキストを表示する
というスクリプトを書きたいんだけど
最も短く記述するには
なにがいいかな
206:名無しさん@お腹いっぱい。
05/01/28 23:39:05 .net
>>205
bashとの関係は・・・
漏れならこんなの書きそうだが
gawk '/^###/{exit} {print $0}' ファイル名
207:名無しさん@お腹いっぱい。
05/01/29 00:20:58 .net
sed -n -e '/^###/q' -e p
の方が短い
208:名無しさん@お腹いっぱい。
05/01/29 00:59:33 .net
i-searchで履歴を検索する時に大文字小文字を区別しないようにできませんか?
209:名無しさん@お腹いっぱい。
05/02/16 23:13:21 .net
ヒアドキュメント内で痴漢したいんですけど、どうしたらいいですか?
こんな感じで使いたいですが
name="usagi"
cat > tmp.txt <<'SAILORMOON'
tsukino $name
SAILORMOON
210:名無しさん@お腹いっぱい。
05/02/17 09:51:42 .net
>>209
パラメータ展開したいんなら、
終了文字列をクォートしちゃいかん。
name="usagi"
cat > tmp.txt << SAILORMOON
tsukino $name
SAILORMOON
あと、bash補完の話題じゃないので、シェルスクリプトスレに書いてくれ。
211:名無しさん@お腹いっぱい。
05/02/17 13:16:48 .net
>>210
それだと
tsukino usagi
にならず
tsukino $name
のままなんですよ
あと、続きはシェルスクリプトスレを探してみます
212:名無しさん@お腹いっぱい。
05/02/17 13:37:17 .net
>>211
んなこたぁない。
cat > tmp.txt << 'SAILORMOON'
を、↓
cat > tmp.txt << SAILORMOON
にしてもう一回やってみろ。
(どこが違ってるかわかってる?)
ちゃんと、
tsukino usagi
と表示されるよ。
213:名無しさん@お腹いっぱい。
05/02/17 15:17:40 .net
できtらー!ありがとー!
214:名無しさん@お腹いっぱい。
05/02/18 00:30:45 .net
Windowsのコマンドプロンプトのように
ファイル名やパス名を補完した結果の文字列を
ダブルクォートで囲むようにしたいのですが、
どうしたらよいでしょうか?
cd My<tab>
↓
cd "My Documents"
completeコマンドでprefix,suffixにダブルクォートを指定しても
うまくいきません・・・
215:名無しさん@お腹いっぱい。
05/02/20 16:56:40 .net
zshなら勝手になる
216:名無しさん@お腹いっぱい。
05/02/20 17:30:42 .net
>>214
cd "My<tab>
じゃあダメかね?
217:名無しさん@お腹いっぱい。
05/02/21 22:37:05 .net
>>214
cd My¥ Documents となると思ふけど,それぢゃ具合悪くって?
218:名無しさん@お腹いっぱい。
05/02/21 22:59:57 .net
レスどうもー。
>>215
できればbashでやりたいな、と。
>>216
その"を打つのが面倒なので補完したいのです・・・。
>>217
具合悪いです・・・。
cygwinからwinアプリを起動する時の引数として
それだとうまくいかないんですよねぇ。
219:名無しさん@お腹いっぱい。
05/02/22 02:30:35 .net
フォルダ名変えちまえ
220:名無しさん@お腹いっぱい。
05/02/22 02:47:09 .net
function qwinpath { cygpath -mal "$@" | while read; do f=${REPLY//\//\\}; echo \"$f\"; done }
function amp { winamp $(qwinpath "$@" ) & }
cygwinスレでwinampにスペースを含むパスを送りたいから助けてくれと書き込んだ時に教えてもらった。
>cygwinからwinアプリを起動する時の引数
を用意してくれる。
221:名無しさん@お腹いっぱい。
05/02/25 20:42:15 .net
>>220
ありがとうございます。
しかし、思ったような動作はしませんでした。
うまい方法はないようですね。
bashを直接いじることにします。
222:名無しさん@お腹いっぱい。
05/03/12 22:46:10 .net
A.txt というファイルに、
AAA='/home/user/sample.conf'
と書かれている行があって、これの引数部分を変数に代入するのに
PARA=`sed -ne "s/^AAA.*'\(.*\)'/\1/p" A.txt`
とやると一応、値の後ろに一文字空白がくっついてしまいます。
これを取るにはどうすれば良いのでしょうか。
223:名無しさん@お腹いっぱい。
05/03/12 23:51:21 .net
>>222
PARA=`sed -ne "s/^AAA.*'\(.*\)' */\1/p" A.txt`
224:名無しさん@お腹いっぱい。
05/03/13 00:13:47 .net
>>223
bash か sed か、どちらのミスなのか迷ってたのですが、
sedの方でしたか。
上手く行きました!ありがとうございます。
225:名無しさん@お腹いっぱい。
05/03/17 14:44:29 .net
sedでカンマの前に値が入ってなかったらnullという文字列を入れる処理を作っているのですが
どうもうまくいきません。
実際に打ち込んでるコマンドは
sed 's/,[:space:]*,/,null,/g' < a > b
aのファイルには
a,b,,d,e,f,,
,,,,,,,,,,
となっています。
すみませんが誰かご教授お願いします。
226:名無しさん@お腹いっぱい。
05/03/17 15:25:05 .net
期待している出力例がわかりまへん。
227:225
05/03/17 16:04:49 .net
すいません
期待してる出力例は
225にあるaのファイルを
a,b,null,d,e,f,null,null
null,null,null,null,null,null,null,null,null,null,null
としてb出力するようになるようにしたいです。
申し訳ありません。
228:名無しさん@お腹いっぱい。
05/03/17 16:39:10 .net
>>225
あまりきれいじゃないが:
sed -e 's/.*/,&,/' -e ':1' -e 's/,[[:space:]]*,/,null,/' -e 't 1' -e 's/,\(.*\),/\1/'
229:225
05/03/17 16:45:45 .net
>>228様
まだ、駆け出しですが是非参考にさせてもらいます。
本当にありがとうございます。
sage忘れすいません。
230:(´д`)ノ ◆zAyjllBm/g
05/03/21 18:01:04 .net
$ cd // && pwd
裏面に行けるズラ
231:名無しさん@お腹いっぱい。
05/03/21 18:13:26 .net
$ cd / && pwd
/
$ cd // && pwd
//
$ cd /// && pwd
/
裏面キター
232:名無しさん@お腹いっぱい。
05/03/21 18:33:02 .net
ls //bin
233:(´д`)ノ ◆zAyjllBm/g
05/03/21 18:35:58 .net
[root@hoge /]$ find ./ -name //
[root@hoge /]$
[root@hoge /]$ mkdir /
mkdir: ディレクトリ `//' を作成できません: ファイルが存在します
[root@hoge /]$ touch //
touch: `//' のタイムスタンプを設定中: 許可がありません
[root@hoge /]$ cd //
[root@hoge //]$
('A')....w
rm ーfr //
はこわいからできない。
234:(´д`)ノ ◆zAyjllBm/g
05/03/21 18:47:34 .net
ごめんうそついた。
ほんとは一般ユーザでやった
ノシ
235:名無しさん@お腹いっぱい。
05/03/21 19:19:11 .net
ダブった / はカウントされないだけ
236:名無しさん@お腹いっぱい。
05/03/21 19:46:39 .net
>>231 みたいに一貫性がないのは、実害はないけどバグでしょ。
237:名無しさん@お腹いっぱい。
05/03/21 21:50:28 .net
>>236
仕様。
URLリンク(www.faqs.org)
の E10
238:名無しさん@お腹いっぱい。
05/03/21 22:45:22 .net
仕様という名のバグだろ。
Q.□ボタンが凹むのですが
A.仕様です
アホか
239:名無しさん@お腹いっぱい。
05/03/21 23:28:17 .net
>>238
>>237 のリンク先読んだ?
意図てきにそうしてあるよ。
240:名無しさん@お腹いっぱい。
05/03/21 23:39:04 .net
> This is, I presume, for historical compatibility. Certain versions of
> Unix, and early network file systems, used paths of the form
> //hostname/path to access `path' on server `hostname'.
み、見たことねぇ……(;´Д`)
241:名無しさん@お腹いっぱい。
05/04/04 11:46:01 .net
bashdbって使ったことありますか?
簡単なステップ実行できますね。
242:名無しさん@お腹いっぱい。
05/04/04 14:12:45 .net
>>241
もっと詳しく
243:名無しさん@お腹いっぱい。
05/04/04 14:22:16 .net
>>242
こんな感じ。
Administrator[ 2:22PM]% bashdb a.sh M-SAKAI1:~
Bash Debugger version 1.2.4
Reading source from file: a.sh
Stopped at line 3
a.sh:3 >ls
bashdb> ?
bashdb commands:
break N set breakpoint at line N
break list breakpoints & break condition
condition foo set break condition to foo
condition clear break condition
delete N clear breakpoint at line N
delete clear all breakpoints
display EXP evaluate and display EXP for each debug step
display show a list of display expressions
undisplay N remove display expression N
list N M display all lines of script between N and M
list N display 5 lines of script either side of line N
list display 5 lines if script either side of current line
continue continue execution upto next breakpoint
next [N] execute [N] statements (default 1)
print expr prints the value of an expression
trace toggle execution trace on/off
ftrace [-u] func make the debugger step into function FUNC
(-u turns off tracing FUNC)
help print this menu
! string passes string to a shell
quit quit
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
22日前に更新/88 KB
担当:undef