タグ付けされた質問 「shell」

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

1
SIGINTシグナルをトラップしようとするとエラーメッセージが表示されるのはなぜですか?
以下のスクリプトを実行して、lftpを使用してサーバーからファイルを自動的にダウンロードしています。動作するときにエラーメッセージが表示されることを除いて動作します trap: SIGINT: bad trap SIGINTとSIGTERMをINTとTERMに置き換えると機能しますが、同じ目的を達成できるかどうかはわかりません。これはLinux Debian 4.9.2-10にあります。 #!/bin/sh login="login" pass="password" host="server.server.com" remote_dir='~/remote/dir' local_dir="/local/dir" base_name="$(basename "$0")" lock_file="/tmp/$base_name.lock" trap "rm -f $lock_file" SIGINT SIGTERM if [ -e "$lock_file" ] then echo "$base_name is running already." exit else touch "$lock_file" /usr/bin/lftp -p 22 -u "$login","$pass" sftp://"$host" << EOF set sftp:auto-confirm yes set …
12 shell  trap 

1
ksh93はコマンド置換でフォークをどのように回避しますか
与えられた cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))' シェルはそれを実現するために2つのフォークを作る必要がある傾向があります strace-f(){ strace -f "$@" 2>&1; }; for sh in dash bash zsh ksh; do printf "$sh\t" ; strace-f $sh -c "$cmd" |grep -e clone -e fork -c; done ksh一度もフォークせずに英雄的に作成する場合を除きます: dash 2 bash 2 zsh 2 ksh 0 それはどうやって? 編集: パイプがスローされると、次のようになります。 …

1
ソースされたファイル、zsh
私はzpretzoでoh-my-zshを使用していますが、編集したいソースのzshファイルを忘れてしまいます。 どのソースファイルをソースにしたかをシェルに問い合わせるにはどうすればよいですか?
12 shell  zsh 

4
apt-cacheポリシーの出力がパイプされないのはなぜですか?
理由がわからない $ apt-cache policy foo N: Unable to locate package foo だが $ apt-cache policy foo 2>&1 | grep . 空です。 後者の呼び出しのどこで間違った仮定をしていますか? 元のタスク:apt-cache policyおそらく出力を処理する必要があります:-) UPD: foo私の例で使用されているものは、インデックスに存在しないパッケージ名に置き換えることができますapt-get。 UPD 2: 回避策のある答えがあります。ソリューションが機能しない+50理由を説明した人には、追加の報奨金が授与され2>&1ます。
12 shell  apt  pipe 


2
bashスクリプトの実行中にモジュールを読み込むことができないのはなぜですか?
モジュールを使用してシステム上のパッケージを制御python/2.7.2し、モジュールとしてインストールしました。単純なpython実行可能ファイルがpython_exe.pyあり、これを単純な「駆動」スクリプトから呼び出しますrunit.sh。runit.shスクリプトは次のようになります。 #!/bin/bash module load python/2.7.2 arg1=myarg1 arg2=15 arg3=$5 /path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3 しかし、実行したばかりのとき./runit.sh、「モジュール:コマンドが見つかりません」というメッセージが表示されます。source runit.shただし、Iの場合、モジュールは正しくロードされます。どうしてこれなの?
12 bash  shell  python 


2
&>>&と2>&1のリダイレクトの違い
で、このSOスレッドといくつかの他のスレッド私はリダイレクトするため、次のコマンドを見ているstdoutとstderr、ファイルに。 それらはすべて同等ですか?それらの間に違いはありますか? command1 >> logfile 2>&1 command &> logfile command >& logfile

3
zshでエイリアスをクリアまたは無効にする
端末を少し使いやすくするために、oh-my-zshをインストールしました。私を悩ませているのは、元のコマンドよりも覚えにくい「ga」、「gap」、「gcmsg」、「_」などのエイリアスが追加され、コマンドハッシュテーブルが汚染されることです。 エイリアスを完全に無効にする方法はありますか?または、すべてのエイリアスをクリアして、それを自分の場所に置くことができる方法.zshrcですか?
12 shell  zsh  alias  oh-my-zsh 

2
パラメーターリストの作成に使用されるbash文字列の連結
次のbashを考えます: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} エコーはPARMS文字列を期待どおりに表示し、エラーは表示されませんが、rsyncは+ =によって追加されたオプションが存在しないかのように静かに動作します。ただし、これは期待どおりに機能します。 PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 私はbash引用符で何かを台無しにしたと思います(常にそれらに問題がありました)が、文字列が正しく構築されているように見えても、オプションが何を無視するのか正確にはわかりません。

1
ポータブルsed -e…dbまたは!b?
では、この編集 ステファンChazelas POSIXifies (再び)私がsed挿入して書式設定-eXPRESSIONブレークと他の-eXPRESSION文を。今、私は単にコメントでなぜ彼に尋ねるかもしれませんが、その答えのリビジョン番号はすでに18であり、以前のほとんどはすでに同様の景品のおかげでした(削除されたコメントを見ることができるなら、あなたは何を知っているでしょうつまり)。また、より一般的に役立つ方法でこれを表現する理由を十分理解していると思います。だからここに期待しています... 一般的sed -eには、可能であれば合計xpressionsを1 に維持することを好みますが、特に差がa およびanに過ぎない場合は、可能な限り仕様に準拠することを優先します。しかし、なぜそうすべきか理解していない場合、これを行うことはできません。ここに私の理解の現在の状態の簡単な要約があります:<space>-e ' -e 'ブレークが移植性のためで立つことができるsedのスクリプト\nでewlineブレークsedコマンドラインステートメント... 私は理由について明らかにあいまいです sed {関数内の右中括弧の}前には、\nここに記載されているようにewlineブレークが必要です。 の<right-brace>前にa <newline>を付け、<blank>文字の前または後に指定できます。 \newlineブレークは、同様に...のいずれかの使用、次の要求されa、b、c、i、r、t、w、または:。 しかし、{関数}定義が!not演算子にどのように関係するのか明確にはわかりません。仕様の状態で否定演算子について私が見つけた唯一の言及: 関数の前に1つ以上の!文字を置くことができます。この場合、アドレスがパターンスペースを選択しない場合、関数が適用されます。 これは、aの使用!が{中括弧を意味することを意味します}か?$!コマンドは何ですか-同様に' -e 'ブレークで区切る必要がありますか?Stéphaneが最近POSIXで答えを出したとき、これは対処されたものでしたか? 私はそれが!否定演算子であるかb、彼が彼の編集で対処する牧場ステートメントであると思う-または多分一度に両方である-しかし、私は知りませんし、好きです。それが牧場の声明だけであるなら、私はその代わりにやると休憩の必要性をなくすと信じていますが、POSIX化された3 つの答えを危険にさらす前に私はむしろ確信しています。手伝ってくれますか?bd' -e ' 私は結局それを危険にさらしましたが、大きな確実性はありませんでした...
12 shell  sed  posix 


7
bashまたはzshでシェル変数をシリアル化する
シェル変数をシリアル化する方法はありますか?変数があり$VAR、それをファイルなどに保存して、後で同じ値を取得するために読み直したいとしますか? これを行うポータブルな方法はありますか?(私はそうは思わない) bashまたはzshでそれを行う方法はありますか?
12 bash  shell  zsh  variable 


7
`ls`コマンドからフォルダープレフィックスを削除することは可能ですか?
私はbashスクリプトを使用しており、すべてのファイルのリストを取得したい(すべてのjarファイルを言う)。コマンドを実行するls -1 lib/*.jarと、出力が得られます。 lib/mylib_1.jar lib/mylib_2.jar ... 次の出力を持つオプションはありますか? mylib_1.jar mylib_2.jar ... cd lib私はループ内にあり、ループ内で実行するアクションの親フォルダーにいる必要があるため、前に作成することはオプションではありません。 入力して情報を見つけようとしましたがman ls、解決策が見つかりませんでした。 別のコマンドを使用した解決策は、それを自分のlsコマンドにパイプできるか、自己完結型である限り有効です。
12 bash  shell  directory  ls 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.