【Shell】どのシェル使ってる?【Script】
■ このスレッドは過去ログ倉庫に格納されています
おまいらが使ってるShellを晒せや(#゚Д゚)ゴルァ!!
そして便利なShell Scriptがあれば晒して( ゚Д゚)ホスィ…
GUI Shellも使ってる香具師はそいつも晒せ(゚∀゚)アヒャヒャ >>341
俺が個人的に使ってるメモ
例1はvarに /foo/bar/baz が入っている場合
例2はvarに foo/bar/baz が入っている場合
${変数名#パターン} ・・・ 先頭パターンマッチ部分(最短)を削除
例1 ${var#*/} => foo/bar/baz
例2 ${var#*/} => bar/baz
${変数名##パターン} ・・・ 先頭パターンマッチ部分(最長)を削除
例1 ${var##*/} => baz (basename相当)
例2 ${var##*/} => baz
${変数名%パターン} ・・・ 末尾パターンマッチ部分(最短)を削除
例1 ${var%/*} => /foo/bar (dirname)
例2 ${var%/*} => foo/bar
${変数名%%パターン} ・・・ 末尾パターンマッチ部分(最長)を削除
例1 ${var%%/*} =>
例2 ${var%%/*} => foo >>342
ありがとうございました。
助かりました。 fish is a smart and user-friendly command line shell.
※. ______
//ー|)◎))3333Ξ<The law of orthogonality ≡≡≡
// _二二二二二 ̄
//ー|)◎))3333Ξ<The law of responsiveness ≡≡≡
// _二二二二二 ̄
//ー|)◎))3333Ξ<Configurability is the root of all evil ≡≡≡
// _二二二二二 ̄
//ー|)◎))3333Ξ<The law of user focus ≡≡≡
// _二二二二二 ̄
//ー|)◎))3333Ξ<The law of discoverability ≡≡≡
./  ̄ ̄ ̄ ̄ ̄ ̄
http://fishshell.com/docs/current/design.html Bash(バッシュ), Tcsh(ティッシュ), Zsh(ゼッシュ)
読み方合ってますか? ネガキャンと受け取られても仕方無い主張なんだが,
csh って C に似た解釈をする Shell なんだよな。便利っていう人間がいるけど,
そもそも C がインタプリンタ的な動作をするのに向いてない以上,ALGOL 的な挙動の sh の方が Shell として本質的だと思うのだがどうだろう。 ログインシェルとしてcshを使うのは好みだから止めないが
スクリプトはshで作るのが当たり前だと思うのだが、
そういう判断が出来ない人も多いんだよね。 >>351
使用例のページ見て声出してしまった。
すごいね。 ここまでくるとtccと競合する
#!/usr/bin/tcc -run
#include <tcclib.h>
int main()
{
printf("hello,world!\n");
} TCC って開発停止してるみたいだな。ccsh はもっと前に最終安定板出して音沙汰ないし。
やっぱ shell も OS とかと一緒で一極集中な感じなのかね。今だったら b(d)ash/zsh/fish くらいか。 kshもオリジナルの作者がメンテしてると聞いたことが有る >>354
結局みんなが同じものを使ってるほうが開発者もユーザーも便利だからね
仕方ないね >>355
そうなのかと思って ksh の配布元に行こうとしたらブラウザが落ちた。
w3m でさえ読み込まないww
ttp://www2.research.att.com/sw/download/notes.html shが最低限必要知識
Bashマスターなら申し分ない インタプリンタは fish。
Shell script 書くときはなるべく sh、条件文でどうしても実現できないことがあるときは仕方無く bash。 条件文でbashを使おうと思ったことはないな。
複雑なデータ構造を扱う時に
配列やハッシュを使わないと(不可能でなくても)
やってられないと思った時にbashを使う /bin/shは絶対にdashにしてほしい
mkshにした場合、なんだかのビルドが通らなかった気が >>361
無知を晒してしまった……orz
捨て恥ついでに聞くが
if [[ "$VAR" =~ (hoge|^huga|.*piyo) ]]; then
処理
fi
みたいな正規表現を含んだ条件文って /bin/sh でどう実現してる?
perl 使えって言われたらそれまでなんだが。 特に必要でない限りsh(dash)で動くように書いてるけど、
bashがどこにでもある時代に、無駄だなーって気もしてる。
だからshで作られたbashインタプリタとか、
bashをshに変換してくれるコンバーターとか無いものだろうか?
(別にbashである必要はないけれど)
JavaScriptの世界では新しいJavaScriptの文法を
古いブラウザ向けに変換するトランスパイラや
複数のファイルを結合するビルドシステムってのがある。
それみたいに改良されたスクリプト言語で記述したコードを
shで動作するように変換してくれるビルドツールでないかな? >>363
> 無知を晒してしまった……orz
別に考え方の違いで無知とは思わんが
> みたいな正規表現を含んだ条件文って /bin/sh でどう実現してる?
そもそも正規表現使うまでのことをしないってのがあるが
前方一致、後方一致、中間一致程度なら、case文を使う。
そのifであれば、これでいけるはず
case $VAR in
hoge | huga* | *piyo) echo ok
esac
どうしても正規表現が必要なら、
grepとかsedとかawkとか内部で呼び出す >>365 いけた。ありがとうございます。
可読性を考えると確かに sed 使った方が良いかもしれないですね。(最初と言ってること違うけど……) >>366
いやw 可読性考えたら正規表現はbashのほうがいいよw
俺の場合、必要なければshにしていて、たいてい必要ないので
shになってるってだけ。 expr $var : '.*hoge.*' \| $var : huga \| $var : '.*piyo' >/dev/null \
&& echo echo 間違ってたらごめん。 それかテキストファイルに、
a.piyo
aa.piyo
ab.piyo
aaa.piyo
aab.piyo
aba.piyo
みたいに一通り作っておいてgrepで探すとか。 思いついたプレーの中で、いつも一番難しいものを選択することにしている。
by ロベルト・バッジヨ >>369
ごめん条件反射で書き込んだら めちゃめちゃ馬鹿にした言い方だった。
笑ったよということです,すいません。
あと,正規表現使ってやりたいことが,
「$TERM の値が xterm/rxvt/st 系列だったら fish を起動する」
っていう内容だから,あんまりテキストファイルは使いたくない。 # grepの-Eを使えば似たような事は出来るけど、
# 逆に$TERMで探したほうが楽な気がする。
<<EOF |grep -q $TERM && echo fith
xterm
rxvt
st
EOF
# makefileで書くと以下のような。
fish_term = xterm rxvt st
SHELL = $(if $(filter $(TERM),$(fish_term)),/bin/fish,/bin/sh) fishでtail -fからgrep --line-bufferedにパイプで繋ぐときに
単純にパイプで繋ぐとbufferedになってしまうんだけど
unbufferedにするにはどうしたらいいのかなぁ? 正規表現がどうのと言っていた者ですが端末側のソースを書き換えました。
色々提案して貰ったのにすいません。 >>374
<<EOF |
ってなんだその書き方?って思ったらzsh用か?
sh(dash)やbashじゃ動かないよね?
sh互換にするならこうかな?
cat <<EOF |grep -q $TERM && echo fith
xterm
rxvt
st
EOF すっげえ前のブログなんだがこれ読んでどう思った?
俺はやっぱ #!/bin/sh - でいいじゃんって感じがしたんだが。
単に慣れの問題だと言わずにちょっと意見して欲しい。
http://hkoba.hatenablog.com/entry/2016/01/31/144919 >>378
あまりろくに読んでないがw
シェルスクリプトを使う理由は、
通常シェルでやっている手作業を
そのままスクリプトにできるからだよ。
手作業の自動化がシェルスクリプトのメリットなわけで
手作業ではやらないような書き方が盛りだくさんであれば
そんなのをわざわざシェルスクリプトとして書く必要はないよ。 同意
対話シェルにBシェル系を使いつつスクリプト用にはcshを使うなんてのは
ありえないのよね
だったらもっと強力なperl|ruby|python覚えたほうが早いってやつ
Bシェル系をスクリプティングに使い続けながら、それと互換性の乏しい
fishへ移行するのをためらってるのも同じ理由で >>379-380
ありがとう。参考になった。
自分はインタプリンタは fish,Shell script は (da)sh だが,あんまり混乱しないかな。
だが && を ;and とやるのは最初慣れなかった。
# ↑といっても && とやると
# fish: Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.
# ls && cd
# ^
って言って呉れるから助かった。 >>353
まじかtccってそんな使い方出来たのか。今凄い嬉しいわ。 TCC はかなり昔に開発停止してるからやめといた方が……。 君はこれからの人だから。
オレはもう刻一刻と老いていく流れを止められねえ
新しい言語を着こなすことも…
他のOSに思いを馳せることも…
何もできねえ……
オレからcをzshを……linuxをとったらもう何も残らねえ…!!
もうオレには端末しか見えねえー ごめん。デバッグしてて気付くと思考回路ショート寸前で頭おかしくなってる時がある。
もうすぐだ。すぐそこにせまってる。
これか。あーこれか。ここ、こうすればいいのか。よしよし。
うごくはずだ。これこうしたらもう動くに決まってる。
make
ねぇ、なんでーーーー!!!!!!!!!ねぇなんでーー!!!!!!!!!
なっ!んっ!でっ!なっ!の!!!やぁやぁやぁやぁ!!! ■ このスレッドは過去ログ倉庫に格納されています