シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
http://echo.2ch.net/test/read.cgi/unix/1439563321/
探検
シェルスクリプト総合 その26 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/03/20(月) 12:07:26.41
2017/08/01(火) 08:24:31.41
>>247
4倍速いなんて誰が言ってたの
4倍速いなんて誰が言ってたの
2017/08/01(火) 09:51:33.66
/bin/sh置き換えるとか奇形児かよ
2017/08/01(火) 10:19:55.09
configureで5-10%速いなら4倍どころじゃないだろうな
2017/08/02(水) 20:07:41.14
>>251
debianはそういうとこあるぞ
debianはそういうとこあるぞ
2017/08/03(木) 07:34:52.42
あれは必死に直した結果達成したもので、同じような努力をそのdistroで
やらないとできない
そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ
やらないとできない
そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ
2017/08/03(木) 09:32:35.46
で、「4倍速い」のソースどこよ
2017/08/03(木) 09:35:10.81
俺
2017/08/03(木) 21:23:18.47
シャア専用シェル
2017/08/04(金) 03:14:55.27
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。
何がしたいかというと、
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はわかるので、そこに対してデータを送る方法があれば教えてください。
何がしたいかというと、
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はわかるので、そこに対してデータを送る方法があれば教えてください。
2017/08/04(金) 04:14:32.69
移植性がよくわからないけど
cat hoge > /proc/<pid of server>/fd/1
cat hoge > /proc/<pid of server>/fd/1
2017/08/04(金) 08:14:54.70
EOFってクリアできるものなの? よくわからんが
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ
2017/08/04(金) 13:23:10.99
2017/08/06(日) 01:34:21.08
>>258
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
https://en.wikipedia.org/wiki/End-of-Transmission_character
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
https://en.wikipedia.org/wiki/End-of-Transmission_character
263名無しさん@お腹いっぱい。
2017/08/09(水) 11:18:15.17 1<br>2<br>3<br>4<br>
を
1
2
3
4
にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・
を
1
2
3
4
にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・
2017/08/09(水) 11:21:03.77
>>263
sed
sed
2017/08/09(水) 11:22:28.73
sed でもなんでもいいじゃん
2017/08/09(水) 13:07:15.54
あえてヘッドレスブラウザを使ってみよう
2017/08/09(水) 13:07:21.78
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br
2017/08/09(水) 14:41:10.39
ありがとうございます
sedで出来ました
というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました
たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・
sedで出来ました
というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました
たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・
2017/08/09(水) 14:49:33.52
unhtmlだと改行入らないっけ
|w3m -dump
|w3m -dump
2017/08/13(日) 15:47:35.48
macのファイル名に使われるエンコーディングてutf-16だったんだね
てっきり、utf-8だと思ってた
http://tama-san.com/hfsplus/
んで、次のOSでは非正規化になるみたい
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/FAQ/FAQ.html
これで少し楽になれそう
てっきり、utf-8だと思ってた
http://tama-san.com/hfsplus/
んで、次のOSでは非正規化になるみたい
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/FAQ/FAQ.html
これで少し楽になれそう
2017/08/13(日) 15:56:24.85
内部表現はutf-16
ターミナルで扱うときはutf-8
ターミナルで扱うときはutf-8
2017/08/13(日) 18:10:53.30
知らなかった
ありがとう
ありがとう
2017/08/20(日) 22:32:53.01
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。
これ今迄知らずに手入力してた。
これ今迄知らずに手入力してた。
2017/08/20(日) 22:38:57.86
なんかしらんけど、本当だ(´・ω・`)
2017/08/20(日) 22:39:12.28
これどういう原理なんだろ
2017/08/20(日) 23:03:34.71
X 使ってないから分からんが、Windows でエクスプローラからコマンドプロンプトにドラッグ&ドロップするとファイルパスが入力されるのと同じ機能かな。
意外と知らない人もいるみたいだけど、便利だよね。
意外と知らない人もいるみたいだけど、便利だよね。
277名無しさん@お腹いっぱい。
2017/08/21(月) 01:53:29.93 でもXってマウスすべるよな
2017/08/21(月) 08:54:21.72
Windows でも確認できた。へー,結構便利だな。
2017/08/21(月) 10:52:29.07
なぜ関係ない話をここでやるの
2017/08/21(月) 17:33:16.40
じゃあ関係ある話提供してください。
2017/08/21(月) 17:38:48.75
どうでもいいけどそれずっとsakuraエディタ使ってやってたわ
エディタ上にファイルペーストすると絶対パスに変換される
エディタ上にファイルペーストすると絶対パスに変換される
2017/08/21(月) 18:31:57.12
どうでもいいなら書き込むな
2017/08/21(月) 19:04:04.21
じゃあどうでもよくない話提供してください。
2017/08/21(月) 19:13:51.68
DEの機能じゃないの
ファイルマネージャー使わないが
ファイルマネージャー使わないが
2017/08/22(火) 09:14:59.98
Terminology「ガタッ(呼ばれたか)」
2017/08/22(火) 13:27:24.37
Terminology って何がすごいの? 画像の表示なら xterm ですら可能なのに。
2017/08/22(火) 18:53:12.44
lsとかした後ターミナル内でのD&Dとかの変態操作
動画再生と動画壁紙の無駄機能
すごくはない
動画再生と動画壁紙の無駄機能
すごくはない
288286
2017/08/23(水) 03:10:27.50 ターミナル内で D&D できんのか。そりゃすげえ。
2017/08/29(火) 10:07:33.36
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
---
引数ごとに出力するかを対話して、"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
---
2017/08/29(火) 14:45:14.34
シェルじゃなくてシェルスクリプト
2017/08/29(火) 20:34:15.21
2017/08/30(水) 10:04:26.25
>>291
実は、vmware上のlinuxにテラターム使ってテストしてたんだけど、
(unixと書いてあるのにスマン)
その時の端末のデバイスファイル?とやらが/dev/pts/0だったのよ。
`tty`でもパイプ使ってると「あいまいです」みたいに怒られちゃって、
苦し紛れに&2を使ってしまった。。
接続端末のデバイスファイルをいつでも取得できる方法ってあるのかな?
実は、vmware上のlinuxにテラターム使ってテストしてたんだけど、
(unixと書いてあるのにスマン)
その時の端末のデバイスファイル?とやらが/dev/pts/0だったのよ。
`tty`でもパイプ使ってると「あいまいです」みたいに怒られちゃって、
苦し紛れに&2を使ってしまった。。
接続端末のデバイスファイルをいつでも取得できる方法ってあるのかな?
2017/08/30(水) 10:21:44.01
あ、あと今さっき教えてもらった
read response < /dev/tty
↑が、上手くいった!ありがと〜
unixだとreadコマンドはリダイレクションができなかったらしいが、
linuxだと出来るのか。。。
read response < /dev/tty
↑が、上手くいった!ありがと〜
unixだとreadコマンドはリダイレクションができなかったらしいが、
linuxだと出来るのか。。。
2017/09/06(水) 14:03:04.96
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 を補完しない、ってことですかね。
はうまくいくけど
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 を補完しない、ってことですかね。
295294
2017/09/06(水) 14:14:11.12 > 括弧等や -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 を補完する、としていたらよかった気がしますが、
いまさらどうしようもないですね。
> アクションが 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 を補完する、としていたらよかった気がしますが、
いまさらどうしようもないですね。
2017/09/08(金) 02:42:55.52
$ bc <<< '6*7'
42
とかの`<<<` ってなんという名称ですか?
ヒアドキュメンとだとずっと思っていたのですが,その仕様を調べようとしたらヒアドキュメントというのは
$ cat << . > ~/foo.txt
a
b
c
.
の << . から . を指すようなのでした。
42
とかの`<<<` ってなんという名称ですか?
ヒアドキュメンとだとずっと思っていたのですが,その仕様を調べようとしたらヒアドキュメントというのは
$ cat << . > ~/foo.txt
a
b
c
.
の << . から . を指すようなのでした。
2017/09/08(金) 04:08:06.24
ヒアストリング
2017/09/08(金) 07:40:56.64
ヒアストリングは未だに使い方がよく分かってない
2017/09/09(土) 13:43:30.38
300名無しさん@お腹いっぱい。
2017/09/11(月) 20:58:07.04 あるマシン環境を仮想マシンとかでバックアップしておいて
1つのマシン上であるサーバを構築して、
historyからその構築したコマンド群を全部シェルスクリプトに
コピペして、そのシェルスクリプトを
サーバ構築前のマシン上で実行したら全く同じサーバが一瞬で構築できるの?
1つのマシン上であるサーバを構築して、
historyからその構築したコマンド群を全部シェルスクリプトに
コピペして、そのシェルスクリプトを
サーバ構築前のマシン上で実行したら全く同じサーバが一瞬で構築できるの?
2017/09/11(月) 22:00:14.58
chefとか使えよ
2017/09/11(月) 22:47:46.40
冪等性が保証されてるスクリプトなら同じサーバーができる
2017/09/12(火) 16:18:38.21
ネットワーク経由のインストールとかしてて
サーバの状態により変わりそう
サーバの状態により変わりそう
2017/09/12(火) 18:22:51.99
サーバーじゃないけど仮想マシンで似たような事してる
ヒストリーからってより自分でメモしといたコマンド群だけど
けっこう省力化出来てる
あとスクリプト書いてから時間が経過するとソフトウェアの
ダウンロード元のURLが変わったりしてエラーが出ることは多々ある
ヒストリーからってより自分でメモしといたコマンド群だけど
けっこう省力化出来てる
あとスクリプト書いてから時間が経過するとソフトウェアの
ダウンロード元のURLが変わったりしてエラーが出ることは多々ある
2017/09/12(火) 20:18:24.96
結局リプレイしたいときにはアプリやOSのバージョンが微妙に上がってて、
手順を修正しながらやらなきゃダメってのはありがちだな。
手順を修正しながらやらなきゃダメってのはありがちだな。
306名無しさん@お腹いっぱい。
2017/09/13(水) 13:26:43.86 変数やコマンド文字列の展開と
ワイルドカード/正規表現の展開って原理が違うの?
ワイルドカード/正規表現の展開って原理が違うの?
2017/09/13(水) 14:55:00.94
どういう意味?
2017/09/14(木) 00:00:47.00
>>306
言ってることが曖昧だが,「グロブ」と「正規表現」は違うよ
原理が違うかどうかは知らんが,少なくとも挙動は別物
例えばアスタリスクはグロブだとワイルドカードとして,正規表現だとクリーネ閉包としての役割を果す
言ってることが曖昧だが,「グロブ」と「正規表現」は違うよ
原理が違うかどうかは知らんが,少なくとも挙動は別物
例えばアスタリスクはグロブだとワイルドカードとして,正規表現だとクリーネ閉包としての役割を果す
2017/09/14(木) 01:58:23.04
グロブ(含ワイルドカード)と正規表現の違いを聞いてるのではないでしょう
2017/09/14(木) 05:18:47.05
質問の意味がわかんないんです(><)
2017/09/14(木) 06:04:07.07
すみませんが詳しい方のみ回答をお願いします
2017/09/14(木) 06:59:44.81
ここにはいません
2017/09/14(木) 10:48:20.75
みなさんコマンドの頭にバックスラッシュって付けてます?
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね
2017/09/14(木) 10:59:51.81
付けないとどんな危険があると想定してるの?
315173
2017/09/14(木) 12:57:09.36 alias cp='rm -rf'
cp a --> rm -rf a
\cp a --> cp a
cp a --> rm -rf a
\cp a --> cp a
2017/09/14(木) 13:21:22.76
へぇ
2017/09/14(木) 13:26:37.84
cshだとaliasが機能しちゃうんだね
318313
2017/09/14(木) 13:42:49.97 173 --> 313
2017/09/14(木) 14:22:08.99
cshはデフォルトだと必ず.cshrc読んじゃうからねぇ
2017/09/14(木) 14:51:18.91
>>306
翻訳するとこういう感じだと想像
変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???
正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ
翻訳するとこういう感じだと想像
変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???
正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ
2017/09/14(木) 14:57:45.50
cshを前提にしちゃいかんでしょう
2017/09/14(木) 16:44:13.36
2017/09/14(木) 17:20:02.07
いまどきcshでスクリプトを書くおとこの人って…
2017/09/14(木) 18:02:43.44
>>315はcshじゃないな。
むかしのcshで痛い目にあってなますを吹いてるとか?
むかしのcshで痛い目にあってなますを吹いてるとか?
2017/09/14(木) 18:37:11.41
2017/09/16(土) 04:51:53.35
>>313を見て思ったのが シェバンの書き方。
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが
2017/09/16(土) 08:20:15.68
#!/bin/sh -
set -x
set -u
...
set +u
set +x
set -x
set -u
...
set +u
set +x
2017/09/17(日) 11:16:56.16
set −xって要らないでしょ
2017/09/17(日) 13:02:27.61
sexに空目した
2017/09/18(月) 09:06:16.47
set -u 便利だな
2017/09/18(月) 17:34:05.37
新しい関数として
ls () {
\ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。
ls () {
\ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。
2017/09/18(月) 17:35:32.76
関数中のlsを絶対パスで呼ぶ
2017/09/18(月) 17:44:16.70
command ls --width=$(echo ${COLUMN:-50});
とかでいいんじゃない
とかでいいんじゃない
334331
2017/09/18(月) 18:25:53.39 >>332 様、>>333 様、ありがとうございます。
どちらの方法でも上手く行きました。身勝手ながら >>333 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
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
}
どちらの方法でも上手く行きました。身勝手ながら >>333 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
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
}
335331
2017/09/18(月) 18:28:49.27 s:/`\\echo $COLUMNS`/$(\\echo ${COLUMNS})/
336331
2017/09/18(月) 18:55:59.93 Better?
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=$(\command echo ${COLUMNS})"
\command -p ls $_opt $@
}
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=$(\command echo ${COLUMNS})"
\command -p ls $_opt $@
}
2017/09/18(月) 20:05:49.92
lsを常に特定のオプション付けて実行したいのならLS_OPTIONS使えばいいと思う
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い
338331
2017/09/18(月) 20:49:26.19 >>337
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。
2017/09/18(月) 21:20:07.09
別に身勝手ってほどのことでもなくね
2017/09/21(木) 02:41:20.96
シェルの解釈を標準出力に印刷するコマンドってある/作れますか?
グロブやエイリアスがどう解釈/引き渡されるのかを知りたいです。
$ showraw 'ls */*'
ls a/a a/b a/c b/a c/a c/b
みたいな。
検索も一通りしたのですが見付からないです。
シェルによってシェルそれ自身の機能を調べるのは無理なんですかね。
グロブやエイリアスがどう解釈/引き渡されるのかを知りたいです。
$ showraw 'ls */*'
ls a/a a/b a/c b/a c/a c/b
みたいな。
検索も一通りしたのですが見付からないです。
シェルによってシェルそれ自身の機能を調べるのは無理なんですかね。
341340
2017/09/21(木) 02:42:16.10 すいません。age ます。
2017/09/21(木) 02:44:04.33
$ showraw 'ls */*'
ls -F -A a/a a/b a/c b/a c/a c/b
エイリアスも解釈されるのでこんなかんじですね。
ls -F -A a/a a/b a/c b/a c/a c/b
エイリアスも解釈されるのでこんなかんじですね。
2017/09/21(木) 05:13:34.59
コマンドの方はtype ls 引数の方はecho */* で良くね
取り敢えずshとbashで確認
取り敢えずshとbashで確認
2017/09/21(木) 06:12:05.17
$ ls */*
と入力したところで ESC \C-e をタイプするとエイリアスが展開され
\C-x* をタイプするとワイルトカードが展開される
と入力したところで ESC \C-e をタイプするとエイリアスが展開され
\C-x* をタイプするとワイルトカードが展開される
2017/09/21(木) 06:21:42.53
すまん、bash限定
346名無しさん@お腹いっぱい。
2017/09/21(木) 07:24:19.182017/09/21(木) 08:38:01.77
2017/09/26(火) 02:43:18.09
2017/09/28(木) 10:22:22.57
すいません。わかるかたいたら教えてください。
基本的にカンマ区切りの行なのですが、1列目が""で囲まれ、"aaa,bbb,ccc"のように
なることがあります。
1列目のみに発生します。
この1列目のケースだけ、カンマをスペース等に置換したいと思っています。
イメージはこうです。
"aaa,bbb,ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
↓
"aaa bbb ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
理由はエクセルに取り込むときにずれてしまうためです。
awkで出来た気がするのですが、うまく出来ません。
どなたか心当たりないでしょうか。
基本的にカンマ区切りの行なのですが、1列目が""で囲まれ、"aaa,bbb,ccc"のように
なることがあります。
1列目のみに発生します。
この1列目のケースだけ、カンマをスペース等に置換したいと思っています。
イメージはこうです。
"aaa,bbb,ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
↓
"aaa bbb ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
理由はエクセルに取り込むときにずれてしまうためです。
awkで出来た気がするのですが、うまく出来ません。
どなたか心当たりないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 元グラドル維新議員 夫に「サンドイッチのパン」を依頼→食パン6枚切り買われ怒り…“どちらが悪い?”SNSで議論 ★2 [muffin★]
- 「最低でも5歳下」「20代と結婚したい」という中高年男性に賛否… 年の差婚 狙う《おじアタック》…可能性は?【データで見る】★3 [少考さん★]
- 【日テレ】『ヒルナンデス!』が来春終了の激震…南原清隆もショック隠せず 国分太一問題で揺れる日本テレビの“思惑” [Ailuropoda melanoleuca★]
- 【公式】「まんが日本昔ばなし」 YouTubeチャンネル開設 [湛然★]
- 【日テレ】『ヒルナンデス!』が来春終了の激震…南原清隆もショック隠せず 国分太一問題で揺れる日本テレビの“思惑” ★2 [Ailuropoda melanoleuca★]
- 【医療】風邪に抗菌薬・腰痛に一部鎮痛薬、効果乏しい「低価値医療」は年1000億円以上…医療保険の対象除外化も検討 [ぐれ★]
- アホが使うワード 解像度 言語化 あと一つは?
- 「ファイナルファンタジー」の売上、なぜかFF10を境に激減してしまう、理由は不明 [445831457]
- メモリ、64GBで60万円、7日で20倍になる [347751896]
- 【悲報】トクリュウ指示役、全員「Z世代」だった事が判明wwwww [177316839]
- 【ショタ】ダメ…僕…男の子だよぉ…あ…んっ…【にゃんこ】
- 【悲報】佐川急便完全に崩壊、配達日指定は機能せず、営業所はパニック状態 [383063292]
