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

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

4
シェルでファイルを実行するとどうなりますか?
だから、私はこれをよく理解していると思ったが、テストを実行して(誰かに反対した会話に応じて)、私の理解に欠陥があることがわかりました... 可能な限り詳細に、シェルでファイルを実行すると正確に何が起こるのでしょうか?私が意味するのは、./somefile some argumentsシェルに入力somefileしてreturnキーを押すと(そしてcwdに存在し、読み取りと実行の許可がありますsomefile)、フードの下で何が起こるのですか? 私が考えた答えでした。 シェルはにsyscallを作成しexec、パスを渡しますsomefile カーネルが調べsomefileではとルックスのマジックナンバーファイルのそれは、プロセッサが処理できる形式であるかどうかを判断します ファイルがプロセッサが実行できる形式であることをマジック番号が示している場合、 新しいプロセスが作成されます(プロセステーブルのエントリを使用) somefile読み取り/メモリにマップされます。スタックが作成され、実行のコードのエントリポイントにジャンプされるsomefileと、ARGVパラメータの配列に初期化(char**、["some","arguments"]) マジック番号がある場合シェバング次いで、exec()上記のように、新しいプロセスを生成するが、実行可能な使用は、インタプリタシェバング(例えばによって参照され/bin/bash又は/bin/perl)とsomefileに渡されSTDIN ファイルに有効なマジックナンバーがない場合、「無効なファイル(不良なマジックナンバー):Execフォーマットエラー」などのエラーが発生します。 ただし、ファイルがプレーンテキストの場合、シェルはコマンドを実行しようとします(入力したかのように)と誰かに言われましたbash somefile。私はこれを信じていませんでしたが、試しただけで、それは正しかったです。ですから、ここで実際に何が起こっているのかについて誤解があり、その仕組みを理解したいと思います。 シェルでファイルを実行するとどうなりますか?(詳細は合理的です...)
32 shell  kernel  exec  shebang 


5
envするかしないか
コマンドの違いは何ですか $ env FOO=bar baz そして $ FOO=bar baz どんな効果がenvありますか?
32 shell 

1
引用符内のワイルドカード
これは簡単なことですが、私の記憶では、シェルスクリプトで二重引用符を使用すると、グロビングと変数を拡張できます。 しかし、次のコードでは: #!/bin/sh echo *.sh echo "*.sh" echo '*.sh' echo $LANG echo "$LANG" echo '$LANG' 私はこの結果を得ます: bob.sh redeployJboss.sh *.sh *.sh en_US.utf8 en_US.utf8 $LANG それで、シングルクォートはグロブと変数展開を防ぎますが、ダブルクォートは変数展開のみを許可し、グロビングはできませんか? 引用パターンでグロブできますか?

6
前のプログラムからの出力の行数を数える
特定のプログラムが生成する出力の行数をカウントしようとしています。問題は、プログラムの実行に時間がかかるため、ユーザーに出力を表示したいことです。最後のコマンドが出力した行数をカウントする方法はありますか? できますprogram | wc -lが、ユーザーに出力が表示されません。私の知る限り、やらなければならないことですprogram; program | wc -lが、プログラムの実行には少なくとも1分かかります。したがって、行数を一番下に表示するためだけに複数回実行する必要はありません。 編集: 出力を行ごとに表示し、最後にカウントを返す方法はありますか?

3
最後から数えてテキスト行からフィールドを切り取る(選択する)方法は?
cutコマンドを使用して行からフィールドを選択する方法を知っています。たとえば、次のデータが与えられた場合: a,b,c,d,e f,g,h,i,j k,l,m,n,o このコマンド: cut -d, -f2 # returns the second field of the input line 戻り値: b g l 私の質問:最後から数えて2番目のフィールドを選択するにはどうすればよいですか?前の例では、結果は次のようになります。 d i n

2
「<<(…)」リダイレクトとはどういう意味ですか?
次のコマンドを使用してrvm(rubyバージョンマネージャー)がインストールされていることを確認しました。 bash &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer ) だから私は理解して、我々はスクリプトの内容を取得し、bashのに渡す(私は信じている&lt; &lt;と&lt;&lt;?同じものである)私はに興味が&lt; &lt;一部、ネット上の説明の後が見つかりました: &lt;&lt; トークン手段は、トークンが見つかるまでプログラムのSTDINとして現在の入力ストリームを使用します。 これはどういうわけか私には明らかではありませんが、誰かが例を作ったり、より簡単な方法で説明したりできますか?

4
完全なGNU画面セッション状態を保存する
リブート後にすべてをリロードできるように、GNU画面ウィンドウ(または標準シェル)の「状態」を保持することは可能ですか? 開かれたシェルの数 各シェルの名前 各シェルの現在のディレクトリ 各シェルの歴史 可能であれば、環境変数
32 shell  gnu-screen 

5
自分がいるシェルの「レベル」を知る方法は?
このようxtermにターミナルを開くと、シェルができます。次に、使用するsshか、zsh別の「レベル」のシェルを使用します。それらをすべて終了するために何回Ctrl+D入力exitする必要があるかを知る方法はありますか?私の本当の意図は、「ルート」シェル以外のすべてを終了することです。 また、端末マルチプレクサ(などscreen)がソリューションにどのような影響を与えるかを知っておくと便利です。 PS:タイトルを自由に変更してください。それらが正しい用語かどうかはわかりません。
32 shell  terminal 

3
bashスクリプトをファイルにフックできますか?
特定のファイルが変更/削除されない限り(または特定のディレクトリで作成されたファイル、または...)、スクリプトをスリープさせたい。これはエレガントな方法で達成できますか?私の頭に浮かぶ最も簡単なことは、ステータスを再度確認する前にしばらくスリープするループですが、おそらくもっとエレガントな方法がありますか?
32 linux  shell  files  hook 

2
「vi」モードまたは「emacs」モードのシェルとはどういう意味ですか?
この質問は答えから直接続きます。この場合、私は言う部分を明確に理解することができません: その点で、その動作はbash(readline)/ ksh / zsh emacsモードよりもemacs 'に近いですCtrl-Wが、前の単語を削除するターミナルドライバーの組み込み行エディター(標準モード)からは離れています(vi )。 ここでは、2つの完全に異なるプログラムであるエディターではなく、シェルについて説明しています。シェルが何らかのエディターモードにあるとはどういう意味ですか? PS:シェルとは何か、基本的な編集にvimを使用する方法を理解しているという前提に基づいて答えを出すことができます。

12
cronでnotify-sendを使用する
KDE / Awesome WMでArch Linuxを使用しています。notify-send一緒に仕事をしようとし ていcronます。 DISPLAY/ XAUTHORITY変数を設定notify-sendし、「sudo -u」で実行しようとしましたが、すべて結果はありませんでした。 セッションからnotify-sendをインタラクティブに呼び出して通知を受け取ることができます。 FWIW、cronジョブは正常に実行されていますが、一時ファイルに内容をエコーし​​て確認しました。動作に失敗するのは「通知送信」だけです。 コード: [matrix@morpheus ~]$ crontab -l * * * * * /home/matrix/scripts/notify.sh [matrix@morpheus ~]$ cat /home/matrix/scripts/notify.sh #!/bin/bash export DISPLAY=127.0.0.1:0.0 export XAUTHORITY=/home/matrix/.Xauthority echo "testing cron" &gt;/tmp/crontest sudo -u matrix /usr/bin/notify-send "hello" echo "now tested notify-send" &gt;&gt;/tmp/crontest [matrix@morpheus ~]$ cat /tmp/crontest testing …

2
フォントファイルを分析できるUNIXコマンドラインツールはありますか?
フォントファイル(TTFおよびOTF)のディレクトリを指定して、各フォントを検査し、そのスタイル(通常、斜体、太字、太字、斜体)を判断したいと思います。これを行うことができるUNIXフレーバーのオペレーティングシステム用のコマンドラインツールはありますか?または、TTFまたはOTFフォントファイルからメタデータを抽出する方法を知っている人はいますか?

2
ファイルとコマンドからの出力を比較する方法は?
通常、次のように記述します。 diff file1 file2 しかし、私はファイルとコマンドからの出力を比較したいと思います(ここではコマンドを些細なものにします): diff file1 &lt;(cat file2 | sort) OK、これはシェルプロンプトでこれを手動で入力すると動作しますが、シェルスクリプトにまったく同じ行を入力してからスクリプトを実行するとエラーが発生します。 だから、問題は-これを正しく行う方法ですか? もちろん、出力を一時ファイルに書き込むことは避けたいです。

5
シェルが知っているすべてのコマンドをリストする
bash認識されているすべてのコマンドを一覧表示するシェル(たまたま)で何を入力できますか? また、これはシェルによって異なりますか?または、すべてのシェルに認識されるコマンドの「ディレクトリ」があるだけですか? 第二に、別の質問ですが、どうすればそれらをオーバーライドできますか?つまり、どのように私は自分の書くことができるviewだけで負荷に見える私のUbuntuシステム上の既存のものを置き換えるためにコマンドをvim。
32 shell  command 

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