bashで補完スレat UNIX
bashで補完スレ - 暇つぶし2ch200:名無しさん@お腹いっぱい。
05/01/21 19:40:27
うぁ読み難いですね。
質問したいことは二つあります。

1.i-searchで履歴を検索する時に大文字小文字を区別できませんか?

2.TABでmenu-completeに設定してるんですけど
*abc*<TAB>
等と入力するのが面倒なので
TABで先頭一致補完、Ctrl+TABでインクリメンタル補完にしたいんですけど
ワイルドカードを使わずにインクリメンタル補完する方法ってありますか?

よろしくお願いします。

201:名無しさん@お腹いっぱい。
05/01/21 19:41:43
度々すいません。訂正です。
うぁ読み難いですね。
質問したいことは二つあります。

1.i-searchで履歴を検索する時に大文字小文字を区別できませんか?

1.i-searchで履歴を検索する時に大文字小文字を区別しないようにできませんか?

202:名無しさん@お腹いっぱい。
05/01/23 01:21:31
タブを押したとき、直前の単語に * が含まれていればマッチするもの全てに展開、
含まれていなければ候補を1つずつ回って行くという挙動にできますか?


203:名無しさん@お腹いっぱい。
05/01/23 10:23:22
>>202
zsh に乗り換える

204:名無しさん@お腹いっぱい。
05/01/23 11:01:14
展開うざくね?

205:名無しさん@お腹いっぱい。
05/01/28 23:33:32
### で始まる文字列が来るまで
テキストを表示する
というスクリプトを書きたいんだけど
最も短く記述するには
なにがいいかな

206:名無しさん@お腹いっぱい。
05/01/28 23:39:05
>>205
bashとの関係は・・・
漏れならこんなの書きそうだが
gawk '/^###/{exit} {print $0}' ファイル名


207:名無しさん@お腹いっぱい。
05/01/29 00:20:58
sed -n -e '/^###/q' -e p
の方が短い

208:名無しさん@お腹いっぱい。
05/01/29 00:59:33
i-searchで履歴を検索する時に大文字小文字を区別しないようにできませんか?

209:名無しさん@お腹いっぱい。
05/02/16 23:13:21
ヒアドキュメント内で痴漢したいんですけど、どうしたらいいですか?
こんな感じで使いたいですが

name="usagi"
cat > tmp.txt <<'SAILORMOON'
tsukino $name
SAILORMOON

210:名無しさん@お腹いっぱい。
05/02/17 09:51:42
>>209
パラメータ展開したいんなら、
終了文字列をクォートしちゃいかん。

name="usagi"
cat > tmp.txt << SAILORMOON
tsukino $name
SAILORMOON

あと、bash補完の話題じゃないので、シェルスクリプトスレに書いてくれ。

211:名無しさん@お腹いっぱい。
05/02/17 13:16:48
>>210
それだと
tsukino usagi
にならず
tsukino $name
のままなんですよ

あと、続きはシェルスクリプトスレを探してみます

212:名無しさん@お腹いっぱい。
05/02/17 13:37:17
>>211
んなこたぁない。

cat > tmp.txt << 'SAILORMOON'

を、↓

cat > tmp.txt << SAILORMOON

にしてもう一回やってみろ。
(どこが違ってるかわかってる?)

ちゃんと、
tsukino usagi
と表示されるよ。

213:名無しさん@お腹いっぱい。
05/02/17 15:17:40
できtらー!ありがとー!

214:名無しさん@お腹いっぱい。
05/02/18 00:30:45
Windowsのコマンドプロンプトのように
ファイル名やパス名を補完した結果の文字列を
ダブルクォートで囲むようにしたいのですが、
どうしたらよいでしょうか?

cd My<tab>
    ↓
cd "My Documents"


completeコマンドでprefix,suffixにダブルクォートを指定しても
うまくいきません・・・



215:名無しさん@お腹いっぱい。
05/02/20 16:56:40
zshなら勝手になる

216:名無しさん@お腹いっぱい。
05/02/20 17:30:42
>>214
cd "My<tab>
じゃあダメかね?

217:名無しさん@お腹いっぱい。
05/02/21 22:37:05
>>214
cd My¥ Documents となると思ふけど,それぢゃ具合悪くって?

218:名無しさん@お腹いっぱい。
05/02/21 22:59:57
レスどうもー。

>>215
できればbashでやりたいな、と。

>>216
その"を打つのが面倒なので補完したいのです・・・。

>>217
具合悪いです・・・。
cygwinからwinアプリを起動する時の引数として
それだとうまくいかないんですよねぇ。

219:名無しさん@お腹いっぱい。
05/02/22 02:30:35
フォルダ名変えちまえ

220:名無しさん@お腹いっぱい。
05/02/22 02:47:09
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
>>220
ありがとうございます。
しかし、思ったような動作はしませんでした。
うまい方法はないようですね。
bashを直接いじることにします。

222:名無しさん@お腹いっぱい。
05/03/12 22:46:10
A.txt というファイルに、

AAA='/home/user/sample.conf'

と書かれている行があって、これの引数部分を変数に代入するのに

PARA=`sed -ne "s/^AAA.*'\(.*\)'/\1/p" A.txt`

とやると一応、値の後ろに一文字空白がくっついてしまいます。
これを取るにはどうすれば良いのでしょうか。

223:名無しさん@お腹いっぱい。
05/03/12 23:51:21
>>222
PARA=`sed -ne "s/^AAA.*'\(.*\)' */\1/p" A.txt`

224:名無しさん@お腹いっぱい。
05/03/13 00:13:47
>>223
bash か sed か、どちらのミスなのか迷ってたのですが、
sedの方でしたか。
上手く行きました!ありがとうございます。

225:名無しさん@お腹いっぱい。
05/03/17 14:44:29
sedでカンマの前に値が入ってなかったらnullという文字列を入れる処理を作っているのですが
どうもうまくいきません。
実際に打ち込んでるコマンドは
sed 's/,[:space:]*,/,null,/g' < a > b

aのファイルには
a,b,,d,e,f,,
,,,,,,,,,,
となっています。

すみませんが誰かご教授お願いします。

226:名無しさん@お腹いっぱい。
05/03/17 15:25:05
期待している出力例がわかりまへん。

227:225
05/03/17 16:04:49
すいません
期待してる出力例は
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
>>225
あまりきれいじゃないが:
sed -e 's/.*/,&,/' -e ':1' -e 's/,[[:space:]]*,/,null,/' -e 't 1' -e 's/,\(.*\),/\1/'

229:225
05/03/17 16:45:45
>>228
まだ、駆け出しですが是非参考にさせてもらいます。
本当にありがとうございます。

sage忘れすいません。

230:(´д`)ノ ◆zAyjllBm/g
05/03/21 18:01:04
$ cd // && pwd
裏面に行けるズラ

231:名無しさん@お腹いっぱい。
05/03/21 18:13:26
$ cd / && pwd
/
$ cd // && pwd
//
$ cd /// && pwd
/

裏面キター

232:名無しさん@お腹いっぱい。
05/03/21 18:33:02
ls //bin

233:(´д`)ノ ◆zAyjllBm/g
05/03/21 18:35:58
[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
ごめんうそついた。
ほんとは一般ユーザでやった


ノシ

235:名無しさん@お腹いっぱい。
05/03/21 19:19:11
ダブった / はカウントされないだけ

236:名無しさん@お腹いっぱい。
05/03/21 19:46:39
>>231 みたいに一貫性がないのは、実害はないけどバグでしょ。

237:名無しさん@お腹いっぱい。
05/03/21 21:50:28
>>236
仕様。
URLリンク(www.faqs.org)
の E10

238:名無しさん@お腹いっぱい。
05/03/21 22:45:22
仕様という名のバグだろ。

Q.□ボタンが凹むのですが
A.仕様です

アホか

239:名無しさん@お腹いっぱい。
05/03/21 23:28:17
>>238
>>237 のリンク先読んだ?
意図てきにそうしてあるよ。

240:名無しさん@お腹いっぱい。
05/03/21 23:39:04
> 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
bashdbって使ったことありますか?
簡単なステップ実行できますね。

242:名無しさん@お腹いっぱい。
05/04/04 14:12:45
>>241
もっと詳しく

243:名無しさん@お腹いっぱい。
05/04/04 14:22:16
>>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


244:名無しさん@お腹いっぱい。
05/04/04 14:35:38
>>243
すばらしそうだな

245:名無しさん@お腹いっぱい。
05/04/04 15:24:02
>>244
ソースの./bash-3.0/examples/bashdb/bashdbに入ってるよ。
引数にシェルスクリプトを指定すればすぐ使えます。

246:名無しさん@お腹いっぱい。
05/05/01 22:32:09
-aalias
-bbuiltin
-ccommand
-ddirectory
-eexport
-ffile
-ggroup
-jjob
-kkeyword
-sservice
-uuser
-vvariable


247:名無しさん@お腹いっぱい。
05/05/08 23:07:20
bashのコマンドラインからコマンド打つときの
引数の長さや数の上限は、環境変数で変更できるの?

248:名無しさん@お腹いっぱい。
05/05/15 20:29:49
bashの保管ってコンテキストで変えられるの?
たとえば
man TAB
だとmanのあるやつがリストアップとか

249:名無しさん@お腹いっぱい。
05/05/15 21:11:28
>>248
URLリンク(www.google.no) の9番目

250:名無しさん@お腹いっぱい。
05/05/15 21:37:40
プログラマぶるか


251:名無しさん@お腹いっぱい。
05/05/24 18:02:54
bashでファイルをインクルードする方法ってないでしょうか?
Aというファイルに関数abcというのがあり、
BというスクリプトからAの中にある関数abcを呼び出したいんですが
検索しても見つからなかったのでご教授お願いします。


252:名無しさん@お腹いっぱい。
05/05/24 18:10:25
>>251
.とか。

253:名無しさん@お腹いっぱい。
05/05/25 09:02:06
>>251
ソース

254:名無しさん@お腹いっぱい。
05/05/25 17:32:54
初心者です。251がどこを検索したのか知りたいんですが教えて下さい。

255:名無しさん@お腹いっぱい。
05/05/25 17:55:22
>>254
このスレ


256:名無しさん@お腹いっぱい。
05/05/26 14:04:15
タブ補完でディレクトリを手繰るとき、ディレクトリがシンボリックリンクだと
2回タブキーを押さないといけないのがうざったいですが、なんとかなりませんか?

bash2.05です。昔は、普通のディレクトリでもディレクトリへのシンボリックリンクでも
タブ1回で済んでいたような気がします。

257:名無しさん@お腹いっぱい。
05/05/29 13:14:08
>>256
echo set mark-symlinked-directories on >> ~/.inputrc

258:名無しさん@お腹いっぱい。
05/07/07 10:34:34
whichコマンドでjavacを指定すると
/usr/fuga/bin/javac
となるんですが、
これを
/usr/java/j2sdk1.4.2_05/bin/javac
に変更したいのですが、どうすればよいでしょうか?

.bash_profileの中身には
PATH=$PATH:$HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
($HOMEはfuga)
となっていますが、これは変えたくないのですが・・・

ご教授お願いします。

259:名無しさん@お腹いっぱい。
05/07/07 10:36:23
>>258
alias javac=/usr/java/j2sdk1.4.2_05/bin/javac

bash なら which より type 使え。

260:七資産@尾名課一敗
05/08/06 13:07:42
bash の Trap 設定ってデフォルトで以下が入ってしまうのは?

--------------------------
bash$ trap
trap -- '' SIGINT
trap -- '2' SIGQUIT
bash$
--------------------------
何かの罠?

Solaris8 (SPARC)です。
--------------------------
$ pkginfo -l SMCbash
PKGINST: SMCbash
NAME: bash
CATEGORY: application
ARCH: sparc
VERSION: 3.0
BASEDIR: /usr/local
VENDOR: FSF
PSTAMP: Steve Christensen
INSTDATE: x月 xx 2005 hh:mm
EMAIL: steve@smc.vnet.net
STATUS: 完全にインストールされました。
FILES: 261 installed pathnames
5 shared pathnames
22 directories
21 executables
16794 blocks used (approx)
$
--------------------------

261:名無しさん@お腹いっぱい。
05/08/06 14:08:39
>>260
パッチあてれ。

262:名無しさん@お腹いっぱい。
05/08/06 14:09:38
>>260
/etc/profile

263:
05/10/20 20:46:12
起動したら最後PID見てkillするしか止める方法が無いプログラムの
start、stopをbashで書こうと思っているのですが(XXXXctlみたいな奴です)
PIDを取得するのに良い方法はあるんでしょうか?

今は$(ps -ef | grep プログラム名 | cut -c 9-14 | sed -e "s/\s//g")とかやって
配列に突っ込んでるんですが、、、
そもそもpsの出力って固定長でしたっけ?

ちなみにOSはRHES3です

264:名無しさん@お腹いっぱい。
05/10/20 22:13:22
>>263
$!

265:名無しさん@お腹いっぱい。
05/11/05 12:15:34
>>263
お前それ板違いだろ。コママンドライン補完でもないし…

/FYI/ pgrepが入っているはずだよ。

266:名無しさん@お腹いっぱい。
05/12/25 11:37:35
~/.inputrc に

"\M-p": history-search-backward
"\M-n": history-search-forward

と書いてあるんだが、3.1 にしたら効かなくなったみたい。

"\ep": history-search-backward
"\en": history-search-forward

なら

267:名無しさん@お腹いっぱい。
06/01/20 22:53:24
$ man find -print0

man にイタズラできるズラ

268:名無しさん@お腹いっぱい。
06/02/13 06:13:36
zsh が流行りだけど漏れは bash も軽くて好きだ。補完は…

shopt -s hostcomplete
complete -d cd pushd rmdir
complete -c type which man

これくらいしかやってない('A')

しかしデフォルトでドットファイルが補完対象になるのはちょっとウザいな。
これを止めさせる方法誰か知らないかい?


269:名無しさん@お腹いっぱい。
06/02/13 06:21:37
ぐわ、自己解決だスマソ
~/.inputrc に

set match-hidden-files off

を加えればいいようだ。


270:名無しさん@お腹いっぱい。
06/02/13 11:38:34
Tab補完候補をカラー表示したくてzsh使ってるが
ホントにbashの方が軽いんだろうか?


271:名無しさん@お腹いっぱい。
06/03/25 01:58:40
zshスレで出てきたやつをパクッて改造しただけなんだが

function cd {
if builtin pushd ${1:-$HOME} > /dev/null ; then
    if [ $(/bin/ls  $argv |wc -l) -le 50 ] ; then
>---/bin/ls -F
    else    
>---echo "many files exists"
    fi
fi
}

function pd {
builtin pushd +1 > /dev/null
pwd
/bin/ls -F
}

function nd {
builtin pushd -0 > /dev/null
pwd
/bin/ls -F
}



272:名無しさん@お腹いっぱい。
06/03/25 15:16:52
ずんwikiにいろいろ書いといた。
変だったら直しておいて。

273:名無しさん@お腹いっぱい。
06/04/05 14:53:52
bashって、zshみたいに、
**/Imakefileって、`find . -name Imakefile`に相当すること出来ないの?

274:名無しさん@お腹いっぱい。
06/04/21 13:46:32
>>263
ps -C プログラム名 -o pid=

275:名無しさん@お腹いっぱい。
06/08/03 23:08:47
cd の補完候補に$CDPATHを含めたかったので
bash_completionから↓この辺だけ.bashrcにコピペしたのですが
complete_cdpath() { ... }
complete -F complete_cdpath cd
_cd() {... }
if shopt -q cdable_vars; then
    complete -v -F _cd $nospace $filenames cd
else
    complete -F _cd $nospace $filenames cd
fi
こんなエラーが出てしまいます。
bash: ./.bashrc: line 171: syntax error in conditional expression: unexpected token `('
bash: ./.bashrc: line 171: syntax error near `?(\'
bash: ./.bashrc: line 171: `    if [[ "$cur" == ?(\\)\$* ]]; then'
. bash_completion するとエラーはでないのですが、
どう直せばいいんでしょうか?

276:名無しさん@お腹いっぱい。
08/03/09 16:23:13
インクリメンタルサーチを使いたいのですが
Ctrl+Rで前に戻れるけど、これだけでは意味がわからないです。
Ctrl+Sを押すと停止してしまってCtrl+Qを押すまで復帰しません。
使い物にならないのですがどうにかならないでしょうか

277:名無しさん@お腹いっぱい。
08/03/09 16:28:30
>>276
Ctrl-S/Ctrl-Qは、シリアル通信用のXON/XOFFとして使われてるので、
Ctrl-Sで停止したりするのは端末の仕様。
これをやめさせるには、

$ stty -ixon

を実行しておく。

278:名無しさん@お腹いっぱい。
08/03/25 14:31:52
常識的に考えてzshでいいだろ。

279:名無しさん@お腹いっぱい。
08/03/25 18:01:59
と常識の無いアホが申しております

280:名無しさん@お腹いっぱい。
08/09/28 17:15:57
/usr/local/bin/hoge-abc-xyz

なんつう実行ファイルがあったとして、
これ、bc って打ってタブ打ったら
候補としてあがってくるようにとかできないもんかな。
コマンドの途中しか覚えてないことがあるんだけど、
そういう時ってどうやってる?

俺は結局 locate で調べてます。

281:名無しさん@お腹いっぱい。
08/09/28 19:23:49
>>280
っ【find】
っ【alias】

282:名無しさん@お腹いっぱい。
08/09/28 21:12:20
>>281
欲嫁
> コマンドの途中しか覚えてない
って言ってるんだからその答えは外してる。

>>280
答えは、
echo /usr/local/bin/*bc*

283:名無しさん@お腹いっぱい。
08/09/29 01:30:24
/usr/local/bin/ にあるってことすら忘れてるんじゃないの

284:名無しさん@お腹いっぱい。
08/10/25 09:38:04
tcshのpostcmdというのと同じことをbashでやりたいんですが,
何か良いやり方はありませんか?

285:名無しさん@お腹いっぱい。
08/10/25 11:16:31
>>284
PROMPT_COMMAND

286:284
08/10/25 11:54:03
いや,それはtcshでいうところの precmdであって,
postcmdはコマンドを実行する直前に動作するものなので
それだと目的が実現できないんですよ

287:名無しさん@お腹いっぱい。
09/03/05 16:29:17
bashでTabをうつとファイル名が補完されますが
補完対象から「.」で始まるファイルを外すことはできますか。
いつも「.svn」が補完対象に入ってうざいんです。

288:名無しさん@お腹いっぱい。
09/03/05 17:59:10
>>287
echo 'set match-hidden-files Off' >>~/.inputrc

289:名無しさん@お腹いっぱい。
09/03/08 20:52:51
Objective-BashとかBash++とか、そういうの誰か作ってください。

290:名無しさん@お腹いっぱい。
09/03/08 20:58:47
>>289
URLリンク(ostatic.com)

291:名無しさん@お腹いっぱい。
09/04/18 21:03:14
AAA_1996.txt
AAA_1997.txt
AAA_1998.txt
AAA_1999.txt
AAA_2000.txt
AAA_2001.txt
AAA_2002.txt
AAA_2003.txt
AAA_2004.txt
というファイルがあるときに、AAA_1999.txtからAAA_2002.txtまでをあるコマンドの引数に
与えたいと思うのですが、
command AAA_{1999|2000|2001|2002}.txt
とやってもだめでした。こういう場合はどう書けばよいでしょうか?


292:名無しさん@お腹いっぱい。
09/04/18 21:06:42
>>291
AAA_{1999..2002}.txt

293:名無しさん@お腹いっぱい。
09/04/18 21:18:31
ありがとうございます。
先のコマンドというのはunzipなんですが、lsとかだと教えてもらった書き方でいけたのですが、
unzipだと上手くいきません。ワイルドカード的な書き方に拘らず、全部書いてしまってもいいかとも
思うのですが、、、もし書き方があったら教えてください。

$ unzip AAA_{1999..2002}.zip
Archive: AAA_1999.zip
caution: filename not matched: AAA_2000.zip
caution: filename not matched: AAA_2001.zip
caution: filename not matched: AAA_2002.zip
結局何も解凍されず。

$ ls AAA_{1999..2002}.zip
AAA_1999.zip AAA_2000.zip AAA_2001.zip AAA_2002.zip
ちゃんと表示された。

294:名無しさん@お腹いっぱい。
09/04/18 21:33:13
>>293
それは、unzipの仕様で、複数のファイルを列挙では指定できないため。

for文使うしかないな。

for f in AAA_{1999..2002}.zip; do unzip $f; done

295:名無しさん@お腹いっぱい。
09/04/18 21:36:34
>>294
すげぇ、、、、
あんたゴルゴみたいだな。


296:名無しさん@お腹いっぱい。
09/04/19 21:45:56
このスレの存在意義を否定するわけじゃないが
あんまりbashの補完にねちねち拘るくらいなら、zsh使ったほうがいいよ

297:名無しさん@お腹いっぱい。
09/04/20 19:08:02
>>295
意味わからん。

298:名無しさん@お腹いっぱい。
09/04/20 20:33:49
>>297
的確に的を射た解答をしてくれるって意味じゃないの


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch