【Shell】どのシェル使ってる?【Script】
■ このスレッドは過去ログ倉庫に格納されています
おまいらが使ってるShellを晒せや(#゚Д゚)ゴルァ!!
そして便利なShell Scriptがあれば晒して( ゚Д゚)ホスィ…
GUI Shellも使ってる香具師はそいつも晒せ(゚∀゚)アヒャヒャ zsh
コマンドラインスタックとか拡張エイリアス便利杉 bashでも困らないだろうけどzsh。
連番のエロを落すのに禿しく便利だし。 メインは zsh. 重いので、bash も併用してる。 なにも考えずbash使ってますけど、zshってそんなにいいんですか? 会社で ksh (AIX) なので
自宅でも ksh を使いたいんだけどな…… >>12
wgetで連番のエロ落とすときに実感するみたいね。
私はbashで十分なんで。 >>14
漏れは13ではないがkshとpdkshは微妙に動作が違うみたい。
仕事で同僚がハマりまくってた。 zsh は大文字小文字混在環境で便利、としか思ってない俺は
やっぱり bash
ついでに、Emacs + irbsh いないの?
zshはスクリプト専用って感じ。重いし。
やっぱbashでしょう。 .(\ /)
\\ /)″
((\\ ___ /)″
( (_ヾヽ <_葱看>ヽ/ヾ)
( ( ヾ./ i レノノ)) ヽヽヾヾ
しし// 人il.゚ - ゚ノ、 ヾヾ) みるまらー
.し/// /ヽ fR{:::::::::::}ノヾ)
,し(/////ヽ(ヽ::::: ::::::|/) ″
(/(/(/ |::|:: ::::::|::ヽヾ)
(/(/ ヽ::ヽ:::::::| |:::|
___|::|:::::::| ヽ:ヽ
/:::::||.:::::::| ||
ノ´:::::::::::N):::::::| /|
/:::::O::::::::ヽ|::::::::| |ノ
ノ::::::::::::::::@::::::::::::ノ
|:::::::::::O:/ ̄ ̄
ヽ::::::::::/
` ̄´ >>21
script専用じゃglobbingぐらいしかメリットなくなっちまうよ。
globbingにまで補完が効くとか、あっと思った時のコマンドラインスタックが禿しく便利なのに。 zshなんだが、便利機能はほとんど使ってないな
#ホトンドbashジャンヨソレジャ… _| ̄|○ コンソールからログインしてソッコーstartxしちゃうような香具師は
chshしてashとかcshにしちまった方がメモリ節約になるな。 >>29
X で起動するターミナルのシェルもそれに引き摺られるわけですが。
そんなことを気にするならば、startx ではなく exec startx した方がよい。 hoge.txt に
fuga = foo
という行があるとしますよね.
シェルスクリプトでシェル変数 $FUGA に,
この foo を設定してやるにはどうしたらいいのですか? >>32
たとえば、こんなのかな。
----------
#! /bin/bash
FUGA=`grep "fuga" hoge.txt | awk '{print $3}'`
echo $FUGA
----------
awk じゃ無くて cut -d " " -f 3 とかでもいいかも。
= の前後にスペースがない時は、cut -d "=" -f 2 とか。 ある実行ファイルにパスが通っているかどうかで
if 文で処理を分けたいんですけどどうすればいいのですか?
例えば, awk にパスが通ってるかどうかで分岐させるには?
シェルスクリプトの中で,
ユーザ定義函数を使おうとして,
以下のように書きました
#!/bin/bash
question 'Hello World!!'
function question()
{
echo $1
}
ところが,「question なんか知らない」というエラーが出ました
何が悪いんでしょう? >何が悪いんでしょう?
マルチポストが悪いんじゃない? >>38
if which awk >/dev/null 2>&1 ; then
hoge
fi
>>39
function question()
{
echo $1
}
question 'Hello World!!' /etc/rc や /etc/rc.sysinit などを順に読んでいるのですが
_HOGE とか __fuga という先頭に _ が付いた変数が幾つかでてきます。
「こういう時は頭に _ を付ける」というような慣習みたいなものが
あるのでしょうか?
FreeBSD の起動スクリプトにはそんな変数は出てこないし、
Solaris でも _INIT_* という変数がちょっとあるだけ。 漏れど忘れしてて思い出させて欲しいんですが
SGIのIndigoやIndyのシェルってなんでしたっけ?
あのファイラーみたいな操作のやつ。シェルじゃなくて
プログラムでしたっけ?うーん名前思い出さん(;-公-) >>46
レスどうもありがとうございます。
そうなんですか。
他にも、いろいろと読んで勉強してみます。 >>48
> レスどうもありがとうございます。
レスってなんですか? >>49
IDがスーパーコンピューターなのにそんなことも知らないのかよ(w >bash という名前は Bourne-Again SHell の頭文字を取ったもの。
>sh の作者がボーン (Bourne) 氏 であることから、Bourne と Born (生まれる) をかけて、
>「生まれ変わったシェル」として命名された。
ヘェー 俺もtsch使ってるよん。Unixの時から使い慣れてるもんで。 補完の効かないシェルをログインシェルにしてる香具師いる?
DOSのシェルでもデフォで補完が効く今の時代。
漏れは腐れたノートでashを常用してるんだが…。 >>63
> DOSのシェルでもデフォで補完が効く今の時代。
方法教えて。
command.comって補完効くようにできるの?
>>63
Solarisだと、/sbin/shという特殊なものがログインシェルなので、
変更できないんだよね…
まぁ、Linuxでは余裕でbashだけど。 >>64
ウチのcommand.comは何もしてないけど補完効くぞ。 あれ?
command.comは16bitアプリで補完機能はなくて32bitの
cmd.exeから実装されたと思ってたんだが違ったのか?
ぐぐっても補完機能の解説が見つからん・・・
ttp://win2000.nikkeibp.co.jp/tips/filedrive/index11.shtml
ttp://rd.vector.co.jp/soft/dos/util/se033185.html ガイシュツかもしれんけど
tcshなんてヽ( ・∀・)ノ ウンコー >>65
>Solarisだと、/sbin/shという特殊なものがログインシェルなので、
別に特殊じゃないだろ。 >>74
/binではなく/sbinにわかれているのでは? >>70
確かにcshスクリプトはウンコ
そんな俺はtcsh使い bash_completionを有効にしたら、起動にやけに時間がかかりますね。
試しにzshにしてみたら、bashより起動が速かったです。
むう…… solarisでもLinuxでも*BSDでもtcshです。
文句ある? >>80
別に。好きにしてくれ。
ただし、他人に渡すシェルスクリプトを作るときだけは、
頼むから骨シェルにしてくれな。
zsh(*゚∀゚)=3 ムハー!
デフォルトのままでもすごすぎるぞ、これ。
% ./configure --<tab>
--bindir --includedir --srcdir
--build --infodir --sysconfdir
(以下略)
% killall <tab>
MozillaFirebird-bin mlterm screen xinit
(以下略) >>81
禿同。
>>82
良かったね。
もっと早く気づくべきだったかも。 .zshrcに
autoload -U compinit
compinit
って書いてみたら? bash使ってるんだけど、
最近ファイル名をeucからsjisに変えたら、使い難くてかなわん。。
色々試した結果tcshが日本語強そうなんだけど、
foreachが使いにくいよ。。。
ループ一行で書く方法ってないんでしょうか、もしくはヒストリできる
だけでもいいんですが。
日本語に強くて
for i in *;do echo $i;done
みたいに一行でループ回せるシェルってありませんかね。
zshぐらいしか知らない。
日本語強いのかな?
ループはここに例がある。
ttp://www.sol.cs.ritsumei.ac.jp/~sawaki/comp/zsh/ >89
昔、zsh使ってたんですが、日本語入力すら辛かった印象があるんですよね。
日本語ファイル名使う糞野郎のおれには辛いよ、
かといってemacs常用する気もおきないし。
sh系はループ;で区切って一行で書けたと思う、
なぜにcsh系が複数行書かなきゃいけないのか謎だ。
tcshで
sh -c 'for i in *;do echo $i ;done'
とかしようかな・・・(;´д`) >>93
激同
winscpとかで勝手にsjisファイル名で作るやつが悪いんだ。
かといってなんかあるたんびに口酸っぱくして言い聞かせるのも
面倒なので自分で対応したほうはやそうなんだよ。
好きで糞野郎なわけじゃないんです。
>>94
ハングル語の勉強まで強要されたらさすがに泣きますね。
そこまで人に合わせる気はないな。。。 bindkey -vしてる場合はこうか。
unsetopt flow_control
bindkey '^Q' push-line Debian Almquist Shell
ってashとどこか違うんかーい。 ash の開発元が inactive なので Debian メンテナが開発を継続してる。
$ grep `whoami` /etc/passwd | awk -F: '{print $7}'
/bin/bash
$ rpm -q zsh
package zsh is not installed
>>95
「ハングル語」ってゆーなー。 最近のzshは昔に比べて補完が馬鹿になってる気がする…。 素朴な疑問
なんでシェルプログラムの名前にはshがつくんだろう。
暗黙のルール? >>109
一つにはEmacs使うと専用モードにしてくれるからかな。vi派のことはよく知らん。スマソ >>13のような人のために。
http://www.kornshell.com
Korn Shellは公開されてます。
各種バイナリ、ソースコードあり。素晴らしい!
Bシェルでファイル中の ' (アポストロフィ1つ) を ''(アポストロフィ2つ) に強制変換したいのですが、良い方法ありませんか?
sed で変換しようとしたのですが、そうも正規表現の使い方が悪いせいか、手こずっています。
対象のファイルは、テキストファイルでアポストロフィの場所は、決まっていません。
アポストロフィ2つというのは、ダブルクォーテーションではなくて、ほんとに連続したアポストロフィのことです。
すみません。
UNIXの板と間違えましたm(__)m
UNIXのスレであらためて質問します。
普段は bash だけど、シェル「スクリプト」を書くときは sh で動くように書く。 基本的にはzsh
debianやgentooでapt-get、もしくはemergeのときの補完や
いろんなツールのoptionの補完までしてくれるのでありがたい
が、2byte文字を使うと化けたり落ちたりする、
日本語のmanがあまりない(英語のはたくさんすぎるほどあるけど)、
どんどん機能が追加されてついていけてない と問題点も多い
スクリプトとして使う場合、特に人に配布するときは極力shにする
bashも入ってない環境もあることはあるし(shのない環境ってあるのかな?)
cshなんか使えたもんじゃない tcshはまだましだけど。。。
cshがdefaultになってる環境は困ります 使ってて嫌にならないのかな? シェル関数ライブラリとかって無いんでしょうか。
意外とちょんスクリプトに定型処理が多いことに気づいたので。 はじめて来ました。ちょっと質問です。(すれ違いでしたら誘導お願いします)
FC2を使ってますが、apt-get update / upgrade / clean などの一連の操作をcronな
どで定期的に実行したいのですが、スクリプトをどのように書いて良いのかわかりま
せん。こういった事は可能なのでしょうか? 可能でしたらヒントもしくはスクリプ
トそのものを教えていただけませんか? >>127
もうやっちゃったのかな?
apt使ってないからなんとも言えないけど、
# apt-get update
などを実行した時に対話式な操作が無ければ大丈夫でしょ?
対話式の部分が出てきたら、オプションで潰せたら出来る。 >>127
/etc/cron.daily とかに入れておくスクリプトなら、
----------
#! /bin/bash
apt-get update && apt-get -y upgrade && apt-get clean
----------
でいいかと。
&& の意味は man bash で。
日本語で読みたければ ttp://www.linux.or.jp/JM/ とか。
-y とかつけるなら、apt の Hold しておくパッケージの設定を確認。
FC 使ってないから、kernel の扱いがどうなってるのか知らない。
cron ならメールに残したりできるけど、apt-get を動かすなら
2>&1 >file とか 2>&1 | tee file とかでログを残したほうがいいかも。
>オプションで潰せたら出来る。
オプションがない場合でも、yes n | apt-get upgrade とかできる。
板が違うけど、↓のスレを読んでみるといいと思う。
[UNIX板]シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/1-4 くだ質かもしれませんが、自作のシェルスクリプトは
どのディレクトリに置いておくのがLinux的作法なんでしょうか。
一般ユーザーの場合とrootの場合では違う場所がいいでしょうか。 >>132
/usr/local/ か ~ 以下あたりになんかディレクトリ作って入れとけば? >>128-129 Thanks! です。
>>130-131 確かにそうですよね (^^;
ちょっと安易でしたかね…
本当は PHP/CGI など使って、ブラウザから実行するスクリプトなんかで
対応したいなぁ…と思っているんですけどね…
もう少し勉強してみます。
アドバイスありがとうございました。m(_ _)m zsh さわってみたけど補完のされかたが bash と違ってやる気なくした. >>137
Tab 押すごとに候補が順に入ってしまうので,
行きすぎたとき M-BS で消さなくてはならないとか,
コマンドラインの先頭で Tab を押しても,
コマンドが補完されないとか.
zshrc に何か書かないと bash と同じにならないの?
bash で履歴の重複をなくすには
export HISTCONTROL=ignoreboth
とすればできます.
これは正確にいうと連続した履歴の重複で
たとえば,
ls
pwd
ls
pwd
などとしたばあいには
ls, pwd は履歴でそれぞれ2回ずつでてきます.
とびとびで,でてくる場合も1つにするような
履歴の重複の削除をする方法はありますか?
>>127
>>130-131に同意だが apt-cron というのがある そういう例題というか example は見たことある気がする
実際に使うのはあり得ないと思うけどな 使っているよ。
外部から入力を受け取るような処理は書いていないけど。 一瞬CGIのシェルかと思ったが
シェルスクリプトで書いたCGIってことね
LEAFのUIに使われてるね >>150
↓ CGI じゃなくてウェブサーバをシェルスクリプトで、、
ttp://lrp.steinkuehler.net/Packages/weblet.htm
>>150
試してみてくれ。
ttp://www.karing.jp/~yoshino/menat/ ttp://pine.zero.ad.jp/~zbm97210/unix/tcsh.html
をコピペして.tcshrcにしようと思ってます。
上記サイトを私の環境で見ると「?」だらけなんですが
これは全部「\」に直せば大丈夫ですか?
全てを置き換えたら
Unbound extended key "^ delete-char-or-list"
とエラー?が最初に表示されてしまうのですが。 シェルは基本ksh。
コマンドラインは仕事ではksh -o viでやるけど作業中はbash -o vi
viライクなコマンド操作にtab保管が効いて便利です。 zshマンセー!
補完、カスタマイズ、まさにパラダイス 汎用的な shellscript なら boune shell も必須では? bash
職場の上司がbashのスクリプトに勝手に改行入れるんでほとほと困ってる
こんな感じ
command1 -opt argv | comm(ここで何故か改行)
and2 -opt
幼稚園から出直して来いゴルァ \でつなげば無問題(嘘
変なコピペしてるんじゃなかろうな。
80桁目で切れてたりしないか?w ここの連中は声にする度胸の無いガキでFAだから期待すっだけ無駄だぜ。
毎日毎晩、串挿してシコシコキーボード叩いてろって一蹴しちゃえ。
ちなみに俺と話すならスカイプIDは dj-tama で検索なりしてくれればOK。
どっかで見覚えあるID? 細かい細かい。知ったこっちゃね。 snmpの勉強がてら、適当な内容で作ってみたのだが・・・。
command not foundやら、許可がありませんやら・・・。
なにが悪いのだろう・・・?おちえてくだせぇ〜。
====================================================================
#!/bin/sh
DISK=(.1.3.6.1.4.1.2021.9.1.9.1 .1.3.6.1.4.1.2021.9.1.9.2)
COUNT=0
echo "#####ディスクの領域%状態を調査します。#####"
for i in ${DISK[@]}
do
PERCENT=`snmpget -v1 -c public $1 ${DISK[${COUNT[@]}]} | awk -F " " '{print $4}'`
case ${COUNT[@]} in
0)
echo ">>>/varディレクトリの使用率は、" $PERCENT"%です。<<<"
;;
1)
echo ">>>/usrディレクトリの使用率は、" $PERCENT"%です。<<<"
;;
esac
if `$PERCENT>=5`
then
echo "現在使用領域がまだ5%を超えたばかり、全然大丈夫です。"
else
echo "まだ大丈夫。らくしょーです。"
fi
COUNT=`expr $COUNT+1`
done
==================================================================== ↓実行結果↓
#####ディスクの領域%状態を調査します。#####
>>>/varディレクトリの使用率は、 2%です。<<<
./kadai.sh: line 1: 2: command not found
まだ大丈夫。らくしょーです。
./kadai.sh: line 1: /root/bin/10: 許可がありません
まだ大丈夫。らくしょーです。
>>172
ぱっと見だが
99%でも
「現在使用領域がまだ5%を超えたばかり、全然大丈夫です。」
っていう豪傑さに惚れた ttp://en.tldp.org/HOWTO/Reading-List-HOWTO/b80.html
Shell (as a programming language for more than trivial scripting) is dead.
シ ェ ル は 死 ん で い る >>178
まあ、もう古いというのは事実ではあるが...。 winsowsのpowershellの感想をきかせてくださいです。 bashのmanを見ると
> ジョブを停止させたままで bash を終了 (exit) させようとすると、シェル は
> 警告 メッ セージを出力します。このような時には、 jobs コマンドを使って
> ジョブの状態を調べられます。間にコマンドを挟まずに bash を再び終了さ せ
> よ うとすると、シェルは警告を繰り返さないで、停止されているジョブを終了
> させます。
と書いているのですが,私の環境では警告が表示されず,
コマンドを受け付けない状態で止まってしまいます。
何かおかしな設定をしてしまっているのでしょうか? >>182
もしかして、ssh でログインしてて
C-z した後に bg してる? >>183
sshでログインはしていますが,コマンドは
$ hogehoge &
として実行しています。
もしかしてこの状況では警告を出すようにはできないんですか? >>184
& ならプロセスが停止しているわけではなく
バックグラウンドで動作してるので >>182 には該当しない。
その状況で警告を出す方法は知らない。
>>182
> コマンドを受け付けない状態で止まってしまいます。
http://www.openssh.com/ja/faq.html#3.10 fish で alias が使えない研
どうしろというのだ bashでヒストリに記憶するコマンド数を増やすことはできませんか? >>13
suseにはpdkshとは別にkshも入っていたけど。 > man
What manual page do you want?
> chin
-bash: chin: command not found
FDclone 内蔵 の fdsh でどうだw
ちょろっと使ってみただけで判断すんのは気がひけるが、
意外に sh との互換性高くね?
ファイラ機能無しでビルドすると補完機能なくなるな。 シェルスクリプトである環境変数が存在するかどうか調べるにはどうしたらよいですか?
VIM が存在するときだけ、
PS1="[\u@vim \w]\$ "
をセットして、else のときには
PS1="[\u@\h \w]\$ "
をセットするように rc に書きたいんですが。 >>204
if [ -n "$VIM" ] ; then ; else ; fi
$VIM の「中身」を評価するのではない時には
env | grep -c VIM
とかも。
もう一個のスレはちゃんと処理してね。 printf "aaaaaaaaaaaaaaa"
とやって被るのが萎えるbash
linux では
/bin/sh は /bin/bash へ リンクしてるもんね。
もう Cshellなんて書けません。(書けるけど)
case
esac
がというセンスがステキw uClinuxとかで使われてる、mshって、
printenvとかsetenvがないんですけど、
環境変数みたりするのどうすればいいんだろう?。 bashとdash
bashからzshへ移ろうかなと思って色々調べ始めるんだけど
凄い頭の良い人のHPにたどり着いたり
読んでも説明が理解できなかったりとかして場違いな気がした
便利なら便利なほどいいと思うけど
独自の使用を覚えるよりscriptで書いたほうが分かりやすかったりする
普段からtestを[]で書く意味の理解に苦しむ自分には縁がないと思った 場の雰囲気を考えずzshまんせーする奴がうざいって愚痴 スクリプト言語としてのシェルとマンマシンインターフェースとしてのシェル
がごっちゃになっている状況は不幸 いま仕事でSolaris使ってるんだが、なんであいつらスクリプトをcshで
書くんだ? UNIX板にあったんだけど、需要ないみたいですぐ落ちた ググったらその5まであったようだ
そもそもシェルスレ自体少ないし、しょうがないか
身近すぎて逆に話題にし辛いのかな じゃあネタを降ろう
setopt autopushdするとcd -で候補出るけど、ホームまでのパスは~にしてほしいんだよなぁ
誰か知りませんか?
ってこれじゃタダの質問だな・・・w zshは奥が深すぎてキリがない。
知らないと損な設定が他にまだあるんじゃないかと不安になる…。
これ作った奴はほんと変態だな。 csh派の相方をsh派に改宗させたいのですが、どう説得すればいいでしょうか? >>227
標準エラーにリダイレクトせざるを得ない状況にするのがいいかな お前そんなクソいシェル使ってんのプギャーすると、ムッとされるから困る zshって新しく作った実行ファイルをpath通った場所においただけじゃ
即座に反映されないぽいけど、仕様?
source .zshrcすれば反映されるけど >>224
まぁzshスクリプト書く香具師とかド変態だよなw
漏れは.zshrcに数行だけ設定してあとは
デフォルトで使ってるヘタレですw >>227
改宗を勧めても無理だろうから、何か他のスクリプト言語PとかRとかで書いてもらう。 統計用の R を汎用 script として使う変態がいる!? シェルやスクリプトのスキルって、生産性の差がもろに表れる重要な要素だと思うけど
会社じゃあまり重視されてない。結果さえ出せば何やったっていいよ、ってスタンス。
いや、それはそれで正しいんだが、各自が自分で勝手にスキルつけるよりも
社内である程度の統一を図るほうが効率的な希ガス・・・
グループ内の団結というか連携が強いような職場なら特に >>237
会社 とか 開発者の集団 とか 職場 とか扱うなら
マ板じゃねぇか?
シェルの扱いとかシェルスクリプトの書き方とかの
スキルアップについてならここで続けてもいいだろうけど
書籍とかwebを扱ったスレもある。
プログラマー
http://pc11.2ch.net/prog/
Linux 推薦図書/必読書/推薦雑誌/推薦HP 2
http://pc11.2ch.net/test/read.cgi/linux/1172765114/-100 >>238
あ、別に何かしようというわけじゃなくて・・・単にぼやいただけっス
マ板ってムをプロとしてやってる(いわゆるIT屋)連中ばっかってイメージがあるんだが、そうでもないのかな。
自分は研究開発で、理論もやるしコードも書くし泥臭い実験もやるんだけど、
そういう場で求められるスキルってのは、IT屋のそれとは違う気がする。
あーますますスレ違いにw。もうやめます >>233
そーなんだ、ちょっと残念
sourceのかわりに「.」が使えないし、bashと違うとこも多いんだな # zsh --version
zsh 4.2.6 (i686-redhat-linux-gnu)
# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xxx/bin
# echo 'export PATH=$PATH:/usr/sbin:/sbin ' > /tmp/hage
# . /tmp/hage
# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xxx/bin:/usr/sbin:/sbin
使えるようだが。何か勘違いしてる? >>241
ほんとだ「.」使えた!
ただ、bashと違ってパスまで含めないと駄目ぽいね
いちおうzsh --versionは
zsh 4.2.0 (x86_64-redhat-linux-gnu) >パスまで含めないと
言葉足らずだった
カレントディレクトリにあっても./が必須って意味ね zsh で別に rehash しなくても使えるけどな〜
ただし既存の path に存在するときに
別のより優先度の高い path に
同盟コマンドをインストールした際に気づかせるのには
rehash が必要、という感じで tcsh よりも rehash 必要度は低い >>244
え・・・まじで?バージョンの違いかな
よかったらzsh --version晒してもらえますか? >245
% zsh --version
zsh 4.3.4 (i386-portbld-freebsd7.0)
だけどだいぶ前からそういう挙動だったと記憶している。
いまためしに /usr/local/bin/ に適当な shell script 作ってみたけど
rehash なしで実行できたよ rehash要らないね。
% mkdir -p /tmp/x
% export PATH=/tmp/x
% ls /tmp/x
zsh: command not found: ls
% /bin/cp /bin/ls /tmp/x
% ls /tmp/x
ls
って感じ。
ホントだ出来た・・・大変失礼しますた
bashと違ってtab補完してくれなかったので、てっきり認識されてないのかと思った
rehashすればtab補完されるが・・・面倒だなぁ まーなんだtab使わんでzsh使うなんて考え難いし、
rehashは必要ってことでFA鴨 最強のシェルとして「z」を当ててしまった以上、zshには永遠に進化し続ける義務があるのよね
開発者は大変だなぁw 各シェルのユーザ数つーか、シェアの推移ってどっかにないのかな?
鳥と違って把握はしにくいだろうけど っていうかどうやって判定するんだ?
(他人の作った)各種 script の冒頭の #! で
指定されているだけでも「使っている」ことにはなっちゃうし… .cshrc で interactive セッションだったら exec tcsh とか
わりと tips として流行ってなかった?
(chsh 許されてない環境とかあるし) chsh許されてないほどの不自由な環境だとbashすらなかったりするから困る ぶっちゃけzsh以外話題ないもんな
他に目新しくてよさげなシェルあるっけ? bashc とかいう fd まがいの変態があるらしい
Bash Commander is a traditional GNU bash shell extended with visual two-panel
file browser.
http://groups.google.com/group/bashc/web/overview linuxデスクトップユーザーの特徴
@インストールしただけで選民思想
Aやっていることはwindowsと同じ。しかもめんどくさくなっただけ。
Bコマンド打ち込んでプロだと勘違い
C黙ってwindowsでも使ってろと間口を狭める
D素人がだのなんだのとwindowユーザーを馬鹿にする
Eカーネルいじればいいだろと無茶を要求
Flinux開発者とのずれを認識できていない
Gwineを使うくせにlinuxを再現しようとする動きがあるとたたく
冫─' ~  ̄´^-、
/ 丶
/ ノ、
/ /ヽ丿彡彡彡彡彡ヽヽ
| 丿 ミ
| 彡 ____ ____ ミ/
ゝ_//| |⌒| |ヽゞ
|tゝ \__/_ \__/ | | __________
ヽノ /\_/\ |ノ /
ゝ /ヽ───‐ヽ / / linuxはめんどくさくて難しい分だけ、
/|ヽ ヽ──' / < 自称プロが悦に浸るためのツールとして最高なんじゃないだろうかwww
/ | \  ̄ / \
/ ヽ ‐-  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 板違いだがSolarisの標準シェルってなんであんなにヘボいの? kshって凄かったんだけどなあ。昔はbashもzshもなかったし。 何も考えずにシェルスクリプト書くとshの範囲を超えて、kshの範囲まで行ってることが多い。 Bashで、
command1 | command2
っていう処理で、command1がエラー (!=0) だったら
command2を処理させない、っていうのは、どう書けば
良いんですか? >>276
(1)自分がわからないと即誘導。回答辞めろ。
(2)誘導するならシェルスクリプトスレだろ。にわかか? 質問!どなたか詳しい方お願いしまっす。
WIndowsで
C:\Users\foo\Documents>xcopy *.hog /e/s /D:mm-dd-yy D:\backup_dir
みたいな事やってんだけど、Linuxのシェルで同じ事ってどうやったらできますか?
オプションの意味:
カレントディレクトリ以下にある mm-dd-yy以降に更新された *.hog てファイルを
再帰的にディレクトリ構造そのままコピーする。
例えば、
C:\Users\foo\Documents\hoge\fuga\abc.hog てファイルの更新日がmm-dd-yy以降だと
D:\backup_dir\hoge\fuga\abc.hog てな具合にコピーされる。 >>280
find ~/doc -ctime -1 -print0 | cpio -p0d バックアップ先ディレクトリ
などなど >>281
> find ~/doc -ctime -1 -print0 | cpio -p0d バックアップ先ディレクトリ
> などなど
thanks!
find ~/doc -ctime -1 | sed -e s/^.\\/// | cpio -pd バックアップ先ディレクトリ
で、希望の動作になったようです。 仕事ではkshが多い。
自宅SUSEでもわざわざksh bashでhttpdのサービスが起動していたら別のシェルを実行、 すいません途中で切れてしまいました。
bashでhttpdのサービスが起動していたら別のシェルを実行、
起動していなかったら1分待って
再度サービスが立ち上がっているかを確認
→立ち上がっていたら別のシェルを実行
→立ち上がっていなかったら再度1分待機(ループ) ああでもarchのシェルがzshになってて何かカッコいいなーと思った liveCDはzshだけどインストール後のデフォはbashだと思う zsh使い始めたよーもっとはやくに移行すれば良かったと反省。 コマンドラインが流れていかないシェル
でお勧めある? fish用の補完機能作る必要あるかな?って思ったら
fishユーザー居ねぇの?って何年も前から言ってる人がいるだけで
話題にすらならないから作らないことにしたw 現役の時代はCシェルだな
今は確かに、Linuxならbashがよかろう。 ここでいいたいのは、なんでMacOSXは
Cシェルを採用しなかったのかってことだ。
MacOSXを含むBSD系はcsh系だろうが!!!!
裏切り物め!!!
だれもcsh使ってない世界にする気か!!! tcshだったのはv10.2 Jaguarまでだな。忘れてたけど 対話シェルはbash
スクリプトはPython
スクリプトをbshとかcshとかはもう流石に無い シェルのコマンドを繋げただけのスクリプトでも?
例えば ls -t | head -n 1 | xargs $* とか wine-auto start "$(winepath -w "$(locate -i "$(basename "$0").exe" | head -n 1)")" "$@" とか
(後者は実体ファイルは適当な名前にしておいて起動したいWindowsアプリの名前でsymlinkを張って使ってる)
こういうのをいちいちpythonで書くの迂遠だと思わない?
単純なことするだけならシェルスクリプトの出番だってまだまだあるよ 対話シェルはzsh
スクリプトはdash
やはり他のUNIXとかも考えたら可搬性は欲しい。
dashで書けないモノはLL言語でいい。 コンソールで書いたのをヒストリから拾って~/binに放る都合上、
対話シェルもスクリプトもzsh.
crontabのデフォのシェルdashで>&が使えないのを
知って以降はcrontabすら個人分はSHELL=/bin/zshしてある。 bashにしろよ。殆どの環境でデフォルトのシェルだろ。 zshで便利なものって、実はbashでできることだと思うw むしろディストリビューションのデフォルトのシェルをzshにしてほしい cshとかtcshでecho {1..5}ってやると{1..5}って出るんだなw 仕事でMacOSXをいじっていた頃、tcshに浮気した事はあるけどbashが一番安心。 シェルスクリプトの先頭でbsh宣言してるのに、中でbashスクリプトを書くやつはなんなんだ? このスレひとつだけで15年も続いてるんだなw
しかも内容にほぼ変化がないw ターミナルはzshだけど、シェルスクリプトはbash使ってる。
やっぱりzshは重いのとデフォルトじゃないんで他に移すときbashに書き換えるのが面倒 bashとかtcshとか言ってる人たちは最近のzshのプラグインマネージャを知らないんだろうな
それらを知ると対話シェルはzsh一択にしかならないんだが・・ 業務限定ならばzshの選択は事実上無い。
一個人だけ使えても意味がないし、なにがなんでもzshだ!って主張するなら
手順書修正がいいだしっぺに集中する。 >>336
お前、全員でrootを共有してるだろw >>337
ホームのユーザフォルダ内ですら好きな環境を構築できない奴隷派遣SIerさんの人なんじゃね?
自己判断で彼らは外に繋ぐこともできないようなので察してあげてください
その割に内部情報漏えいするのはSIerさんが多いんだけどね >>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
ねぇ、なんでーーーー!!!!!!!!!ねぇなんでーー!!!!!!!!!
なっ!んっ!でっ!なっ!の!!!やぁやぁやぁやぁ!!! ■ このスレッドは過去ログ倉庫に格納されています