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

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

2
ターゲットアプリケーションのゼロ番目の引数を設定するPOSIXの方法はありますか?
でbash使用exec -aするzshことができ、代わりにARGV0特定のゼロ引数でプログラムを実行するように設定することもできますが、POSIXの方法もありますか? この1つのコメントで示唆されているように、これを達成するための(一時的な)シンボリックリンクを作成できますが、この方法では、新しいゼロ番目の引数値を真に任意の値、たとえば特定の絶対パスを持つコマンドに設定できませんでした。他の解決策はありますか?

2
Makefileで環境変数の値を確認する
Makefileターゲットがあり、環境変数の値を確認する必要があります。しかし、その正確な構文はわかりません。一生懸命に試してみましたが、見つかりません。どんな助けも大歓迎です。 環境変数名:TEST、その値: "TRUE" test_target: ifeq ($(TEST),"TRUE") echo "Do something" endif 次のエラーが表示されます。 /bin/sh: -c: line 0: syntax error near unexpected token `"TRUE","TRUE"' /bin/sh: -c: line 0: `ifeq ("TRUE","TRUE")'
21 shell  make 

3
前のコマンドがSTDOUTに書き込んでいる間に別のコマンドをSTDINに入力しても安全ですか?
おそらくこれは以前に回答されたのでしょうが、別の回答へのリンクを歓迎します... bash次のようなシェルコマンドを(シェルで)実行すると: make その後からの出力は、一方でmakeからでスクロールしているSTDOUTのmakeI型の場合は、コマンドmake checkキーを押しenter最初のコマンドの前には、とき、実行を終了するmakeコマンドが最終的に次のコマンドが終了しmake check、右アップし、実行を選択します。 私の質問は単純です: これは危険ですか? この種のラッシュタイピングにより、予期しない動作が発生する可能性はありますか? なぜこれが機能するのですか?
21 bash  shell  stdout  stdin 

6
ランダムパスワードの生成。なぜこのポータブルではないのですか?
ランダムなパスワードを生成したいので、次のようにしています: </dev/urandom tr -dc [:print:] | head -c 64 Ubuntuを実行しているラップトップでは、意図したとおりに印刷可能な文字のみが生成されます。しかし、Red Hat Enterprise Linuxを実行している学校のサーバーにsshし、そこで実行すると、のような出力が得られますが3!ri�b�GrӴ��1�H�<�oM����&�nMC[�Pb�|L%MP�����9��fL2q���IFmsd|l�K、まったく実行されません。ここで何が間違っているのでしょうか?

6
ファイルの最後に「>>」以外の行を追加する別の簡単な方法はありますか?
最近、短い文章をtree_holeファイルにエコーしています。 私はecho 'something' >> tree_holeこの仕事をしていました。 しかし、私はこれを頻繁に行ったため、の>代わりにを間違って入力するとどうなるか常に心配していました>>。 そこで、bashrcで独自のグローバルbash funcを作成しました。 function th { echo "$1" >> /Users/zen1/zen/pythonstudy/tree_hole; } export -f th しかし、ファイルの最後に行を追加する別の簡単な方法があるかどうか疑問に思っています。他の機会に頻繁に使用する必要があるかもしれないからです。 何かありますか?

5
bashスクリプト[x $ 1 = x]
私はbashスクリプトを読んでいますが、そこで何が起こっているのか理解できません。 #!/bin/sh [ x$1 = x ] 2行目で何が起こっているの[ x$1 = x ] ですか?
21 bash  shell 


6
2つのパス間の相対リンクを取得する
次の2つのパスがある<source_path>とし<target_path>ます。<target_path>from <source_path>を相対パスとして表現する方法があるかどうか、シェル(zsh)が自動的に検出するようにします。 例えば、仮定しましょう <source_path> は /foo/bar/something <target_path> は /foo/hello/world 結果は ../../hello/world これが必要な理由: 私はからのシンボリックリンクを作成したいとする必要<source_path>に<target_path>使用して相対的な「私はsysの管理者ではないよ(私は、Windowsからネットワーク上のこれらのファイルにアクセスするとそうでない場合は、当社のSambaサーバがファイルを適切に表示されていないので、シンボリックリンク可能な限りの、そしてドンこの設定を制御できます) <target_path>および<source_path>が絶対パスであると仮定すると、以下は絶対パスを指すシンボリックリンクを作成します。 ln -s <target_path> <source_path> だから私のニーズには機能しません。数百のファイルに対してこれを行う必要があるため、手動で修正することはできません。 これを処理するシェルビルトインはありますか?
21 shell  files  zsh  symlink 

4
区切り文字で長い行を分割する
このような入力を分割するために使用できるコマンドは次のとおりです。 foo:bar:baz:quux これに? foo bar baz quux cutコマンドを理解しようとしていますが、「最初の1000文字」や「最初の7フィールド」など、一定量の入力でのみ機能するようです。任意の長い入力で作業する必要があります。

1
このファイルが「検索」に表示されないのはなぜですか?
findwith を使用するとgrep、パターンに一致するファイルを見つけることができます。 # find | grep error ./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html ./error_log ./includes/classes/error_log ただし、find最初のファイルを単独で使用すると見つかりません。 # find . -name error* ./error_log ./includes/classes/error_log なぜしないfind見つけerrors.htmlて使用されていないときにファイルをgrep?findこのファイルの表示にも使用されますか?

1
小さいディレクトリで長い時間がかかる
Ubuntuを実行して、ターミナルを開いて sudo bash cd / ls | head -n 1000 予想どおり、約20個のディレクトリが返されます。 ただし、lsを実行し、それを何かにパイプしないと、lsは別の端末から削除するまでそこにハングします。何が起きているのでしょうか? 編集: > type ls ls is aliased to `ls --color=auto` 編集: > /bin/ls / <normal response> > /bin/ls --color=auto <hangs indefinitely> lsの出力を色付けすると、このコマンドがハングするのはなぜですか?
21 shell  command-line  files  ls 

4
パイプを理解する方法
bashでパイプを使用したとき、これについてはあまり考えませんでした。しかし、システムコールpipe()とfork()を使用してCコードの例を読むと、匿名パイプと名前付きパイプの両方を含むパイプをどのように理解するのか疑問に思います。 「Linux / Unixのすべてがファイルである」とよく言われます。パイプは実際にはファイルであるため、接続する部分の1つはパイプファイルに書き込み、他の部分はパイプファイルから読み取るのでしょうか。はいの場合、匿名パイプのパイプファイルはどこに作成されますか?/ tmp、/ dev、または...? ただし、名前付きパイプの例から、パイプを使用すると、一時ファイルを明示的に使用するよりもスペースと時間のパフォーマンスが優れていることがわかりました。また、パイプはファイルのようにデータを保存しないようです。したがって、パイプは実際にはファイルであるとは思えません。

4
プロセスの特定のスレッドを強制終了するにはどうすればよいですか?
$ ps -e -T | grep myp | grep -v grep 797 797 ? 00:00:00 myp 797 798 ? 00:00:00 myp 797 799 ? 00:00:00 myp 797 800 ? 00:00:00 myp これは、mypPID = 797のプロセスと、異なるSPIDの4つのスレッドを示しています。 プロセス全体を強制終了せずに、プロセスの特定のスレッドを強制終了するにはどうすればよいですか。その特定のスレッドに致命的な依存関係がある場合には、まったく不可能な場合があることを理解しています。しかし、どのような場合でも可能ですか?はい、どうですか? 試しましたがkill 799、プロセス自体は終了しました。これはmyp、プロセスなしで失敗する依存関係があったため800か、killは単純で個々のプロセスを強制終了できないためであるかどうかわかりません。

6
UnixでPowerShellに相当しますか?
複雑なシェルコマンドがAWKを使用したテキスト出力の解析を伴う場合、常に厄介なことに気づきました。基本的に、構造化データをテキストに変換し、テキストを再度解析して構造化データに戻ります。 PowerShellはWindowsシェルであり、テキストだけでなくシェルコマンド間で型指定されたオブジェクトをパイプできるようにすることで、この問題を回避します。 PowerShellのような、テキストベースではなくオブジェクトベースのUnixシェルはありますか?
21 shell 

3
inotifywaitを使用して、特定の拡張子のファイルが作成されるディレクトリを監視する方法
私はこの答えを見ました。 例として、inotifywaitの使用を検討する必要があります。 inotifywait -m /path -e create -e moved_to | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'" # do something with the file done 私の質問は、上記のスクリプトは任意のタイプのファイルの作成のためにディレクトリを監視しinotifywaitますが、特定のタイプ/拡張子のファイルが作成された(またはディレクトリに移動された)ときにのみレポートするようにコマンドを変更するにはどうすればよいですか?.xmlファイルが作成されたときにレポートします。 私が試したもの: inotifywait --helpコマンドを実行し、コマンドラインオプションを読みました。それは持っている--exclude <pattern>と--excludei <pattern>するコマンドEXCLUDE(正規表現を使用して)特定の種類のファイルを、私はする方法が必要ですちょうどINCLUDE特定のタイプ/拡張子のファイルを。

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