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

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

2
find(1):いくつかのファイル名で失敗するスターワイルドカードはどのように実装されますか?
ファイル名がUTF-8のファイルシステムでは、ファイル名に誤りがあります。それはD�sinstaller、として表示されます。zsh:による実際の名前 D$'\351'sinstaller、Latin1はDésinstaller、それ自体は「アンインストール」のフランス語の野barです。Zshはそれとは一致しません[[ $file =~ '^.*$' ]]が、グロビングと一致*します。これは私が期待する動作です。 今でも、実行時にそれを見つけることを期待しています。find . -name '*'実際のところ、ファイル名がこのテストに失敗することは決してありません。ただし、LANG=en_US.utf8では、ファイルは表示されず、動作するように設定LANG=C(またはen_US、または'')する必要があります。 質問: 背後にある実装とは何ですか?また、その結果をどのように予測できましたか? 情報:Arch Linux 3.14.37-1-lts、find(GNU findutils)4.4.2

2
「export var = value」はどこで利用できませんか?
おそらく1990年代半ばのUsenetで(!) export var=value バシズムであり、携帯式は var=value export var 私はこれを長年擁護してきましたが、最近、誰かが私にそれについて異議を唱えました。 Googling for "export: command not found"は、誰かが実際にこの問題を抱えているケースを引き起こさないようです。 (私が得るヒットは、句読点をコピー/貼り付けして、最終的に、'export: command not foundまたはそのようなもので使用exportしたり、Bourneシェル構文を使用しようsudoとしている初心者cshユーザーであるようです。) OS X、およびshis を含むさまざまなLinuxディストリビューションで動作することは確かにわかりますdash。 sh$ export var=value sh$ echo "$var" value sh$ sh -c 'echo "$var"' # see that it really is exported value 今日の世界では、それexport var=valueが安全に使用できると言っても安全ですか? 結果が何であるかを理解したいと思います。v7 "Bourne classic"に移植できない場合、それは雑学以上のものではありません。シェルが実際にこの構文に対応できない実稼働システムがある場合は、知っておくと便利です。

9
どうすれば$ PATHにきれいに追加できますか?
同じパスを複数回追加することなく、システム全体または個々のユーザーのために、$ PATHに物事を追加する方法が必要です。 これを行う理由の1つ.bashrcは、ログインを必要とせずに追加できるようにするためです。またlightdm、を呼び出さない(たとえば)を使用するシステムでもより便利です.profile。 $ PATHから重複を削除する方法に関する質問は承知していますが、重複を削除したくありません。パスがまだ存在しない場合にのみパスを追加する方法が必要です。
31 shell  path 

10
Pythonスクリプトが強制終了または終了した場合に自動的に再起動する方法
このように、Ubuntuマシン(12.04)でバックグラウンドでPythonスクリプトを実行しています- nohup python testing.py > test.out & さて、Python script何らかの理由で上記のいずれかの段階で死ぬ可能性があります。 したがってcron agent、何らかの理由で殺された場合に上記のPythonスクリプトを自動的に再起動できるbashシェルスクリプトに何らかのものがあると考えています。 これは可能ですか?はいの場合、この種の問題を解決する最良の方法は何ですか? 更新: testing.confこのようなファイルを作成した後- chdir /tekooz exec python testing.py respawn 私はそれを開始するためにsudoコマンドを実行しましたが、ps axを使用して背後で実行されているそのプロセスを見ることができません root@bx13:/bezook# sudo start testing testing start/running, process 27794 root@bx13:/bezook# ps ax | grep testing.py 27806 pts/3 S+ 0:00 grep --color=auto testing.py px axが何も表示しない理由は何ですか?また、プログラムが実行されているかどうかを確認するにはどうすればよいですか? これは私のPythonスクリプトです- #!/usr/bin/python while True: print …
31 bash  shell  cron  python 

3
環境変数を設定する最良のディストリビューション/シェルに依存しない方法は何ですか?
質問はそれをすべて言います。現在Arch Linuxとzshを使用していますが、(少なくとも)VTとxtermの両方で機能し、ディストリビューションまたはシェルを切り替えても機能することを願っています(できればできれば)。 さまざまなディストリビューションのドキュメントで、この質問に対する非常に異なる回答を聞いたことがあります。Ubuntuは「.pam_environmentを使用する」と言っています。Archでの推奨事項は、シェルによって異なると思います。現在、私はすべてを.profileに入れており、何らかの理由でシェルがソースを提供していない場合(たとえば、.bash_profileが存在する場合はbash)、手動でソースを指定してそれをオーバーライドします。しかし、もっと良い方法があるに違いないようです。

4
実行中にスクリプトを編集するとどうなりますか?
一般的な質問があります。これは、Linuxでのプロセスの処理方法の誤解の結果である可能性があります。 私の目的のために、現在のユーザーに対して実行許可を有効にしてテキストファイルに保存されたbashコードのスニペットとして「スクリプト」を定義します。 互いに連携して呼び出す一連のスクリプトがあります。簡単にするために、スクリプトA、B、およびCと呼びます。スクリプトAは一連のステートメントを実行してから一時停止し、スクリプトBを実行し、一時停止してからスクリプトCを実行します。手順は次のようになります。 スクリプトAを実行します。 一連のステートメント 一時停止 スクリプトBを実行 一時停止 スクリプトCを実行する 私は経験から、最初の一時停止までスクリプトAを実行し、その後スクリプトBで編集を行うと、それらの編集は再開を許可したときにコードの実行に反映されることを知っています。同様に、スクリプトAが一時停止している間にスクリプトCを編集し、変更を保存した後にスクリプトAを続行できるようにすると、それらの変更はコードの実行に反映されます。 ここで本当の質問がありますが、スクリプトAが実行中に編集する方法はありますか?または、実行が開始されると編集できませんか?


2
grepとドル記号のエスケープ
どのファイルに文字列があるのか​​知りたいです$Id$。 grep \$Id\$ my_dir/mylist_of_files 0回を返します。 私は使用しなければならないことを発見しました grep \$Id$ my_dir/mylist_of_files 次に$Id、出力でが色付けされていることがわかります。つまり、一致しています。 どうやって2つ目を一致させることができ$、なぜ機能しないの\$Id\$ですか 2番目$が最後の文字であるかどうかは関係ありません。 grep2.9 を使用します。 質問を投稿する前に、Googleを使用しました... 答えを見つけました test2という名前のファイルで$(ドル記号)を検索するには、次のように入力します。 grep \\ $ test2 \\(二重バックスラッシュ)文字は、シェルに強制的に\ $(単一のバックスラッシュ、ドル記号)をgrepコマンドに渡すために必要です。\(単一のバックスラッシュ)文字は、次の文字(この例では$)を式文字ではなくリテラル文字として扱うようにgrepコマンドに指示します。バックスラッシュなどのエスケープ文字を使用する必要性を回避するには、fgrepコマンドを使用します。 しかし、なぜgrep \$Id機能するのか、なぜgrep \\$Id\\$機能しないのかはわかりません。 私は少し混乱しています...

3
pgrepをkillでチェーンできますか?
|最初のコマンドの結果を別のコマンドに送信するために使用されることに気付きました。名前に一致するすべてのプロセスを強制終了します。 これはpgrepが通常行うことです: $ pgrep name 5089 5105 そして、複数の引数が動作するようですkill: sudo kill 5089 5105 しかし、これは間違っています: pgrep name | kill それで、それを適切に行う方法は?
31 shell  pipe  arguments 

1
文字列コマンドが停止しないのはなぜですか?
このstringsコマンドは奇妙な動作をします。明らかに、ドライブの空き容量がなくなっても、ファイルへの書き込みを停止しません。それとも、何かが足りないのでしょうか? 私は次を実行します: # strings /dev/urandom > random.txt これは継続して実行され、ディスクがいっぱいになっても停止しませんでした(通常のUSBフラッシュ)。 速くするために、ramdiskを作成し、同じコマンドを再試行しました。それも止まらなかった。 私urandomはそれが通常のファイルではなく、strings出力もリダイレクトされることを理解していますが、上記の両方のケースcatでは、スペースがなくなったときにコマンドがエラーを報告しました。 # cat /dev/urandom > random.txt cat: write error: No space left on device これは文字列の通常の動作ですか?もしそうなら、なぜですか? スペースがなくなった後、データはどこに書き込まれますか?
30 linux  shell  string 

3
色とりどりのグレップ
各grepコマンドで、結果を異なる色で強調表示しようとしています。私はこのような行で手動でそれを行うことができます: ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f すべてのc文字が緑で強調表示され、すべてのo文字が赤で強調表示されます。 この例が機能するためには、常に--color=alwaysgrepコマンドを使用する必要があり ます。私はこれを私の中で設定した.bashrc ので、grepは常に色を持っています: export GREP_OPTIONS='--color=always' 私が達成しようとしているのは、この機能をエイリアスでラップgrepして、GREP_COLORS毎回呼び出して異なる値を設定できるようにすることです。パイプされた新しいgrepごとに複数のシェルの考慮事項を理解し、いくつかのファイル(各色に1つ)を作成してこれを克服しようとして、既に使用されていることを示します。 私はいくつかの試みをしましたが、奇妙なことに、これは「最高」に機能するようです。私はこれを持っています.bashrc: alias mg="mygrep" mygrep(){ # define possible colors COLORS=("01;32" "01;31" "01;34" "01;36") COUNTER=0 NUM=0 # as long as the color has already been used, keep …
30 bash  shell  grep  pipe  bashrc 

4
JavaScriptシェルはありますか?
最近、私はJSと仕事をしてきましたが、この言語に非常に熱心です。サーバーサイドでJSを実行するためのnode.jsがあることは知っていますが、スクリプト言語としてJSを使用するシェルはありますか?そのようなものが存在する場合、それはどれくらい使いやすく安定していますか?

2
出力をファイルにリダイレクトすると、ファイルにロックが適用されますか?
コマンドがある場合 $ ./script >> file.log これは2回呼び出され、最初の呼び出しが終了する前に2回目の呼び出しが行われますが、どうなりますか? 最初の呼び出しは出力ファイルの排他ロックを取得しますか?その場合、2番目のスクリプトは書き込みを試みるときに失敗しますか、それともシェルは出力を受け入れ(スクリプトの終了を許可)、エラーをスローしますか? または、ログファイルが2回書き込まれますか?

5
Shell Script mktemp、一時的な名前付きパイプを作成する最良の方法は何ですか?
で一時ファイルを作成するのが最善であると認識していますがmktemp、名前付きパイプはどうですか? 私は物事を可能な限りPOSIX準拠にすることを好みますが、Linuxのみが許容されます。私が書いているように、バシズムを避けることは私の唯一の厳しい基準dashです。
30 linux  shell  security  pipe 

3
lsコマンド:最初の行はどういう意味ですか?
私が行うとls -l、私はこれを取得します: calico@A000505:~/Documentos$ ls -l total 2020 -rwxr-xr-x 1 calico calico 8559 2010-11-16 11:12 a.out -rwxrw-rw- 1 smt smt 2050138 2010-10-14 10:40 Java2.pdf -rwxrw-rw- 1 ocv ocv 234 2010-11-16 11:11 test.c しかし、「合計2020」とはどういう意味ですか?ファイルが3つしかないので、ファイルやディレクトリの数ではなく、サイズでもありません。それは何ですか?
30 shell  ls 

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