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

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

3
サブシェルにいるかどうかを検出するにはどうすればよいですか?
exitビルトインの機能を置き換える関数を作成して、端末を終了できないようにしています。 SHLVL環境変数を使用しようとしましたが、サブシェル内では変更されないようです: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 私の機能は次のとおりです。 exit () { if [[ $SHLVL -eq 1 ]]; then printf '%s\n' "Nice try!" >&2 else command exit fi } exitただし、これによりサブシェル内で使用することはできません: $ exit Nice try! $ (exit) Nice try! 私がサブシェルにいるかどうかを検出する良い方法は何ですか?
24 bash  shell  exit  subshell 

3
/ bin / shバイナリを使用するシステムはまだありますか?
/bin/sh、1977年に作成されたBourneシェルは、Unixシステムのデフォルトのシェルでした。 現在、このファイルはまだ存在していますが、ほとんどの場合、システムにインストールされているデフォルトのPOSIX互換シェルへのシンボリックリンクとしてのみ使用されます。 RHEL / CentOS /bin/bashでは、Bourne Againシェルを指します Ubuntu Linux /bin/dashでは、Debian Almquistシェルを指します Debianではそれが指します/bin/dash(6.0以降。古いDebianリリースではを指していました/bin/bash) 気になったのは、まだバイナリを提供しているUnixシステム、またはLinuxディストリビューションはあり/bin/shますか?



2
$ {PATH:+:$ {PATH}}はどういう意味ですか?
最近、私のcygwinプロファイルで、より正確に次のことに気付きました。 /usr/local/bin:/usr/bin${PATH:+:${PATH}} どういう意味ですか?なぜ$ PATHだけではないのですか?これは「$ PATHが存在する場合:$ PATHを追加する」ですか?私の目的は、順序を入れ替えて、cygwinパスをwindowsパスの後ろに置くことです。過去には $PATH:/usr/local/bin:/usr/bin しかし、これは私を混乱させます。たぶん私はやるべき PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin" $ PATHの最後に:を追加しますか?

1
引用符で囲まれていないワイルドカードがscpでリモートで機能するのはなぜですか?
私はこれをBashで入力しています: scp user@remote:~/dir/*.xml . そして、それは機能し、リモートサーバー上のワイルドカードを作るすべてのファイルを取得します。しかし、なぜこれが機能するのでしょうか?Bashは、引数がのようなツールで見えるようになる前に、引数のワイルドカード表現を展開すると考えましたscp。
24 bash  shell  wildcards 


3
シェルから現在のディレクトリの名前を変更する-可能ですか?
シェル内から現在の作業ディレクトリの名前を変更することは可能ですか?これを簡単な方法で実行しようとすると、エラーが発生します。 nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy 現在のディレクトリを変更せずにこれを行う別の方法はありますか?親ディレクトリに変更することでこれを簡単に達成できることを理解していますが、これが必要かどうかは知りません。結局のところ、別のシェルからディレクトリの名前を変更しても、後で元のシェルでファイルを作成できます。
24 shell  rename 

4
bashで始まる:-ltおよび-gt引数
私はbashから始めて、次を見つけました: if test $first -lt $second then echo $first is lower than $second else if test $first -gt $second then echo $first is higher than $second else echo $first and $second are equals fi fi スクリプトを読み取って実行するために、私はそれが何をするかを知っていますが、-ltと-gtが何のためにあるのかはわかりません。 誰かがその種類の「ツール」の名前は何であり、彼ら(-ltと-gt)は何をするのか教えてもらえますか?ありがとう!
24 bash  shell  test 

3
「time」出力とコマンド出力を同じパイプにリダイレクトするにはどうすればよいですか?
というバイナリがあるとしfooます。 出力をリダイレクトしたい場合 foo他のプロセスbar、次のように記述できます./foo | bar。 一方、私がしたい場合 time FOO、およびリダイレクトの出力timeIは、書くことができますtime (./foo) | bar。 私の質問は、どのように出力を出力のtime最後に貼り付けることができますかfoo、同じパイプにパイプする方法はありますか? 次の解決策は私が探しているものではありません。プロセスの2つの別々のインスタンスを開始するのbarに対し、1つの共有パイプを1つのインスタンスにbar。 time (./foo | bar) | bar 好奇心旺盛で、誰のために、2つのインスタンスを開始したくない理由barISがあるためbar、ネットワーククライアントにすることができ、私はタイミング情報が同じの一部としてサーバーに送信したいhttp POSTプロセス出力としてメッセージ。

8
別のプロセスの環境変数を取得するにはどうすればよいですか?
調べる/proc/1/environと、プロセス1の環境変数のヌルバイトで区切られた文字列を見ることができます。これらの変数を現在の環境に持ち込みたいです。これを行う簡単な方法はありますか? procmanページは私に、ライン毎に各環境変数をプリントアウトすることができますスニペットを提供します(cat /proc/1/environ; echo) | tr '\000' '\n'。これにより、内容が正しいことを確認できますが、実際に必要なのは、これらの変数を現在のbashセッションにソースすることです。 それ、どうやったら出来るの?

1
見つけてrsync?
14日以上10k以上のファイルを検索し、見つかったファイルを宛先にrsyncしたいのですが。 これらの2つのコマンドを組み合わせる方法はありますか? find ./ -mtime +14 -size +10k rsync --remove-sent-files -avz /src /dest
24 bash  shell  find  pipe  rsync 

2
入力したすべてのコマンドをログに記録するにはどうすればよいですか
誰かがシェルに入力したすべてのコマンドをどのように記録できますか? あなたが誰か他の人のサーバーにログインして何かが壊れた場合、または他の誰かがあなたのサーバーに(意図的または悪意を持って)ログインした場合、あなた自身を保護するために私は尋ねています。 初心者でも履歴をバイパスしunset historyたり、新しいシェルを作成してトラックを隠すことができます。 上級Linux管理者がどのコマンドが入力されたか/システムに加えられた変更をどのように追跡するのか興味があります。

3
パスレスシバンを使用してみませんか?
インタプリタへのパスを指定する代わりに、インタプリタの名前があり、シェルが$ PATHを介してそれを見つけられるようにするシェバンを持つことは可能ですか? そうでない場合、理由はありますか?
24 shell  shebang 

8
Linuxで最も普遍的なスクリプト言語は?
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私たちはLinuxシステム用のスクリプトを書いていますが、Linuxで現在最も一般的に使用されるスクリプト言語は何かという議論があります。Bash、SH、Posix?何?

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