[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/11 08:58 / Filesize : 268 KB / Number-of Response : 1033
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 12:07:26.41 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
echo.2ch.net/test/read.cgi/unix/1439563321/

242 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 07:59:41.19.net]
内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと
bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧に
表示されたままになって元に戻せません!
前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。
再起動しても表示されたままなんです。
早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・)
至急助けてください!!!
OSはウィンドウズXPです。
よろしくお願いします。

243 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:49:19.54.net]
>>239
金属バットでPCフルスイングすれば?

244 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:51:37.14.net]
ここに到達する知識があるならgoogleで検索すれば見つかるだろうに

245 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:57:00.00.net]
>>238
再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは?
tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに
su - 一般ユーザ名 でテストするのが一番手っ取り早そう。

display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と
tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに
display-manager を起動してログインテストすればいいんじゃないでしょうか。

246 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:07:15.67.net]
>>239
これは履歴とかキャッシュ消せないだろうからどうせバレる

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:25.45.net]
>>238
Linux板へ

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:52.08.net]
>>239
懐かしコピペだな

249 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:49:07.69.net]
>>242
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。

250 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:54:40.49.net]
>>240
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。



251 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 15:19:17.23.net]
>>238
checkbashismsが使えるならそれでBashの機能の有無を確認出来る
ttp://wiki.archlinuxjp.org/index.php/Dash

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 16:15:55.29.net]
/bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから
そもそもそんなことやっちゃいけない

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 02:25:49.77 .net]
>>248
ありがとうございます。
5000 箇所くらい不適合が見つかりました。
パッケージ管理されているシェルスクリプトも多くあり,
全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。

>>249
その通りなんですが dash は bash の4倍早いと聞いたのでつい……。

254 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 02:59:57.01 .net]
>>250
autoconfのconfigureで5-10%速いくらい
https://lists.fedoraproject.org/pipermail/devel/2014-October/202891.html
SysVinitの昔ならともかくsystemdの今では関係ないだろうけどね

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 03:05:36.12 .net]
>>250
chshだけでもしとけば

256 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 08:24:31.41 .net]
>>250
4倍速いなんて誰が言ってたの

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 09:51:33.66 .net]
/bin/sh置き換えるとか奇形児かよ

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 10:19:55.09 .net]
configureで5-10%速いなら4倍どころじゃないだろうな

259 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/02(水) 20:07:41.14 .net]
>>254
debianはそういうとこあるぞ

260 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 07:34:52.42 .net]
あれは必死に直した結果達成したもので、同じような努力をそのdistroで
やらないとできない

そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ



261 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 09:32:35.46 .net]
で、「4倍速い」のソースどこよ

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 09:35:10.81 .net]


263 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 21:23:18.47 .net]
シャア専用シェル

264 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 03:14:55.27 .net]
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。

何がしたいかというと、
stdinからのデータを処理するIPCで、サーバーサイドのプログラムに
シェル側からstdinに流してレスポンスがちゃんとできているかをチェックしたいのです。

サーバープログラムは stdin をistreamで処理するように組んでおり、
stdinで入ってくるデータはEOFで一区切りとし、EOFを検出後に
EOFフラグをクリアして、再度stdinにデータが流れてくるまでブロッキングするというループになっています。

本来はクライアントサイドからstdinへデータを流しますが、
サーバーサイドだけで簡単にチェックするために、

サーバーサイドはmy-server.elfとし、
$ ./my-server.elf
で起動状態にしておきます。
ここに対して、
コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
cat hoge | ./my-server.elf
とかだと、1回しかテストできないので、どうしたらいいでしょうか。
my-server.elfのプロセスIDはわかるので、そこに対してデータを送る方法が

265 名前:あれば教えてください。 []
[ここ壊れてます]

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 04:14:32.69 .net]
移植性がよくわからないけど
cat hoge > /proc/<pid of server>/fd/1

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 08:14:54.70 .net]
EOFってクリアできるものなの? よくわからんが
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 13:23:10.99 .net]
>>261
EOFってstdinの送信側がcloseしたときに送られるんじゃないの?
それ実は再コネクトしてたりしない?

269 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/06(日) 01:34:21.08 .net]
>>261
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
https://en.wikipedia.org/wiki/End-of-Transmission_character

270 名前:名無しさん@お腹いっぱい。 [2017/08/09(水) 11:18:15.17 .net]
1<br>2<br>3<br>4<br>



1
2
3
4

にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・



271 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 11:21:03.77 .net]
>>266
sed

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 11:22:28.73 .net]
sed でもなんでもいいじゃん

273 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 13:07:15.54 .net]
あえてヘッドレスブラウザを使ってみよう

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 13:07:21.78 .net]
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 14:41:10.39 .net]
ありがとうございます
sedで出来ました

というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました

たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・

276 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 14:49:33.52 .net]
unhtmlだと改行入らないっけ

|w3m -dump

277 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 15:47:35.48 .net]
macのファイル名に使われるエンコーディングてutf-16だったんだね
てっきり、utf-8だと思ってた
tama-san.com/hfsplus/

んで、次のOSでは非正規化になるみたい
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/FAQ/FAQ.html

これで少し楽になれそう

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 15:56:24.85 .net]
内部表現はutf-16
ターミナルで扱うときはutf-8

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 18:10:53.30 .net]
知らなかった
ありがとう

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/20(日) 22:32:53.01 .net]
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。
これ今迄知らずに手入力してた。



281 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/20(日) 22:38:57.86 .net]
なんかしらんけど、本当だ(´・ω・`)

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/20(日) 22:39:12.28 .net]
これどういう原理なんだろ

283 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/20(日) 23:03:34.71 .net]
X 使ってないから分からんが、Windows でエクスプローラからコマンドプロンプトにドラッグ&ドロップするとファイルパスが入力されるのと同じ機能かな。
意外と知らない人もいるみたいだけど、便利だよね。

284 名前:名無しさん@お腹いっぱい。 [2017/08/21(月) 01:53:29.93 .net]
でもXってマウスすべるよな

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 08:54:21.72 .net]
Windows でも確認できた。へー,結構便利だな。

286 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 10:52:29.07 .net]
なぜ関係ない話をここでやるの

287 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 17:33:16.40 .net]
じゃあ関係ある話提供してください。

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/ ]
[ここ壊れてます]

289 名前:21(月) 17:38:48.75 .net mailto: どうでもいいけどそれずっとsakuraエディタ使ってやってたわ
エディタ上にファイルペーストすると絶対パスに変換される
[]
[ここ壊れてます]

290 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 18:31:57.12 .net]
どうでもいいなら書き込むな



291 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 19:04:04.21 .net]
じゃあどうでもよくない話提供してください。

292 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/21(月) 19:13:51.68 .net]
DEの機能じゃないの
ファイルマネージャー使わないが

293 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/22(火) 09:14:59.98 .net]
Terminology「ガタッ(呼ばれたか)」

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/22(火) 13:27:24.37 .net]
Terminology って何がすごいの? 画像の表示なら xterm ですら可能なのに。

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/22(火) 18:53:12.44 .net]
lsとかした後ターミナル内でのD&Dとかの変態操作
動画再生と動画壁紙の無駄機能

すごくはない

296 名前:286 mailto:sage [2017/08/23(水) 03:10:27.50 .net]
ターミナル内で D&D できんのか。そりゃすげえ。

297 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/29(火) 10:07:33.36 .net]
unix プログラミング環境という本の問題でpickというプログラムを作ったんだ。
引数ごとに出力するかを対話して、"y"が押されたものだけ出力するという単純なもの。
---
$ pick a b
a? y
a
b? n
$
---

問題ではさらに、「引数が無かった時は標準入力を読みに行くようにせよ」と続く。
まあ、パイプで挟まれたりしても問題なく使えるようにしろってことなんだと思う。

で、以下の様に書いて、問題なく動いたんだけど、
あまりシェル書いたことないもので・・・変な書き方してないかとかコメント頼みます。
---
exec 10<&0 11>&1 0<&2 1>&2

input='echo "$@"'
if [ $# -eq 0 ] ; then
input='cat <&10'
fi

for i in `eval $input`
do
echo -n "$i ? "
read response
case $response in
y*) echo $i >&11 ;;
esac
done
---

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/29(火) 14:45:14.34 .net]
シェルじゃなくてシェルスクリプト

299 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/29(火) 20:34:15.21 .net]
>>292
その本知らないけど、標準入力を読み切ったあとをキー入力とするより
read response < /dev/tty
でキー入力する方が一般的じゃないかな

300 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/30(水) 10:04:26.25 .net]
>>294
実は、vmware上のlinuxにテラターム使ってテストしてたんだけど、
(unixと書いてあるのにスマン)
その時の端末のデバイスファイル?とやらが/dev/pts/0だったのよ。
`tty`でもパイプ使ってると「あいまいです」みたいに怒られちゃって、
苦し紛れに&2を使ってしまった。。

接続端末のデバイスファイルをいつでも取得できる方法ってあるのかな?



301 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/30(水) 10:21:44.01 .net]
あ、あと今さっき教えてもらった
read response < /dev/tty
↑が、上手くいった!ありがと〜

unixだとreadコマンドはリダイレクションができなかったらしいが、
linuxだと出来るのか。。。

302 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/06(水) 14:03:04.96 .net]
1. find . -name aaa -o -name bbb
はうまくいくけど
2. find . -name aaa -o -name bbb -print
では aaa が引っかからなくて、
3. find . \( -name aaa -o -name bbb \) -print
だと OK な理由がいまいちわかりません。括弧なしだと
4. find . -name aaa -o \( -name bbb -print \)
と解釈されてしまうからってのはわかりますが、
 「アクション指定なしの場合 -print の挙動となる」
 「exp1 -o exp2 で exp1 が偽なら exp2 を実行しない」
であるならば、1 が表示されて、2・4 の aaa が表示されないのはなぜでしょう。
ちなみに、GNU find(1) には下記。
 If the expression contains no actions other than -prune, -print is performed on all files for which the
 expression is true.
FreeBSD の find(1) は下記でした。
 If none of -exec, -ls, -print0, or -ok is specified, the given expression shall be
 effectively replaced by ( given expression ) -print.

と書いていて思いましたが、括弧等や -o に関係なく、引数 expression のどこかに
アクションが 1つでも記述されていれば、-print を補完しない、ってことですかね。

303 名前:294 mailto:sage [2017/09/06(水) 14:14:11.12 .net]
> 括弧等や -o に関係なく、引数 expression のどこかに
> アクションが 1つでも記述されていれば、-print を補完しない、ってことですかね。
ということのようでした。

https://svnweb.freebsd.org/base/head/usr.bin/find/function.c?revision=314436&view=markup#l1344
-print とかが見つかると isoutput=1 とする。

https://svnweb.freebsd.org/base/head/usr.bin/find/find.c?revision=314436&view=markup#l113
!isoutput の場合のみ、-print を補完する。

expression のツリー構造をたどって、アクションがない expression が
見つかったら全部 -print を補完する、としていたらよかった気がしますが、
いまさらどうしようもないですね。

304 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/08(金) 02:42:55.52 .net]
$ bc <<< '6*7'
42
とかの`<<<` ってなんという名称ですか?
ヒアドキュメンとだとずっと思っていたのですが,その仕様を調べようとしたらヒアドキュメントというのは
$ cat << . > ~/foo.txt
a
b
c
.
の << . から . を指すようなのでした。

305 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/08(金) 04:08:06.24 .net]
ヒアストリング

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/08(金) 07:40:56.64 .net]
ヒアストリングは未だに使い方がよく分かってない

307 名前:名無しさん@お腹いっぱい。 mailto:sage All You Need is Shell [2017/09/09(土) 13:43:30.38 .net]
>>300
ありがとうございます!
お礼が遅くなり申し訳無いです。

308 名前:名無しさん@お腹いっぱい。 [2017/09/11(月) 20:58:07.04 .net]
あるマシン環境を仮想マシンとかでバックアップしておいて
1つのマシン上であるサーバを構築して、
historyからその構築したコマンド群を全部シェルスクリプトに
コピペして、そのシェルスクリプトを
サーバ構築前のマシン上で実行したら全く同じサーバが一瞬で構築できるの?

309 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/11(月) 22:00:14.58 .net]
chefとか使えよ

310 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/11(月) 22:47:46.40 .net]
冪等性が保証されてるスクリプトなら同じサーバーができる



311 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/12(火) 16:18:38.21 .net]
ネットワーク経由のインストールとかしてて
サーバの状態により変わりそう

312 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/12(火) 18:22:51.99 .net]
サーバーじゃないけど仮想マシンで似たような事してる
ヒストリーからってより自分でメモしといたコマンド群だけど
けっこう省力化出来てる
あとスクリプト書いてから時間が経過するとソフトウェアの
ダウンロード元のURLが変わったりしてエラーが出ることは多々ある

313 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/12(火) 20:18:24.96 .net]
結局リプレイしたいときにはアプリやOSのバージョンが微妙に上がってて、
手順を修正しながらやらなきゃダメってのはありがちだな。

314 名前:名無しさん@お腹いっぱい。 [2017/09/13(水) 13:26:43.86 .net]
変数やコマンド文字列の展開と
ワイルドカード/正規表現の展開って原理が違うの?

315 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/13(水) 14:55:00.94 .net]
どういう意味?

316 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 00:00:47.00 .net]
>>309
言ってることが曖昧だが,「グロブ」と「正規表現」は違うよ
原理が違うかどうかは知らんが,少なくとも挙動は別物
例えばアスタリスクはグロブだとワイルドカードとして,正規表現だとクリーネ閉包としての役割を果す

317 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 01:58:23.04 .net]
グロブ(含ワイルドカード)と正規表現の違いを聞いてるのではないでしょう

318 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 05:18:47.05 .net]
質問の意味がわかんないんです(><)

319 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 06:04:07.07 .net]
すみませんが詳しい方のみ回答をお願いします

320 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 06:59:44.81 .net]
ここにはいません



321 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 10:48:20.75 .net]
みなさんコマンドの頭にバックスラッシュって付けてます?
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね

322 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 10:59:51.81 .net]
付けないとどんな危険があると想定してるの?

323 名前:173 mailto:sage [2017/09/14(木) 12:57:09.36 .net]
alias cp='rm -rf'
cp a --> rm -rf a
\cp a --> cp a

324 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 13:21:22.76 .net]
へぇ

325 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 13:26:37.84 .net]
cshだとaliasが機能しちゃうんだね

326 名前:313 mailto:sage [2017/09/14(木) 13:42:49.97 .net]
173 --> 313

327 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 14:22:08.99 .net]
cshはデフォルトだと必ず.cshrc読んじゃうからねぇ

328 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 14:51:18.91 .net]
>>309
翻訳するとこういう感じだと想像

変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???

正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ

329 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 14:57:45.50 .net]
cshを前提にしちゃいかんでしょう

330 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 16:44:13.36 .net]
>>324
前提というか、 >>316 はそういう環境なんだなと深読みしただけ



331 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 17:20:02.07 .net]
いまどきcshでスクリプトを書くおとこの人って…

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 18:02:43.44 .net]
>>318はcshじゃないな。
むかしのcshで痛い目にあってなますを吹いてるとか?

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/14(木) 18:37:11.41 .net]
>>325
深読みが過ぎるのでは
Bシェル系使ってて心配しすぎてるだけという可能性もある

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/16(土) 04:51:53.35 .net]
>>316を見て思ったのが シェバンの書き方。
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/16(土) 08:20:15.68 .net]
#!/bin/sh -
set -x
set -u
...
set +u
set +x

336 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/17(日) 11:16:56.16 .net]
set −xって要らないでしょ

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/17(日) 13:02:27.61 .net]
sexに空目した

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/18(月) 09:06:16.47 .net]
set -u 便利だな

339 名前:名無しさん@お腹いっぱい。 mailto:age [2017/09/18(月) 17:34:05.37 .net]
新しい関数として
ls () {
  \ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。

340 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/18(月) 17:35:32.76 .net]
関数中のlsを絶対パスで呼ぶ



341 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/09/18(月) 17:44:16.70 .net]
command ls --width=$(echo ${COLUMN:-50});

とかでいいんじゃない

342 名前:331 mailto:sage [2017/09/18(月) 18:25:53.39 .net]
>>335 様、>>336 様、ありがとうございます。
どちらの方法でも上手く行きました。身勝手ながら >>336 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
POSIX とかは考えてないです。
function ls () {
  local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=`\echo $COLUMNS`"
  command ls $_opt
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<268KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef