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

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


2
CD引数の大文字と小文字を区別しないようにするにはどうすればよいですか?
さまざまなディレクトリにアクセスしているときに、Linuxシステムのディレクトリの名前または少なくとも一部の名前を覚えていることがよくあります。ただし、一部のディレクトリの名前は、最初の文字が大文字か、大文字の名前の真ん中にある文字の1つで始まっています。 cdコマンドケースINSENSITIVEの後に引数を作成する方法を誰かが提案できますか。実行しcd BackupDirectoryたりcd backupdirectory、ディレクトリ名BackupDirectoryを入力したりできるようになります。 もちろん、私は他のユーザーのために物事を台無しにしたくないので、上記が可能であれば、変更は私が使用しているセッションにのみ適用され、他のユーザーには影響を与えない可能性はありますか? はい、試してみset completion-ignore-caseましたが、うまくいき ません。私が入力した場合、それはちょうどそれに役立ちますcd bし、TabあるいはEsc Esc、それはケースを無視して、ディレクトリ名を埋めます。しかし、私が必要なのは、を実行cd backupdirectoryした場合、ケースを無視BackupDirectoryして自分で入るだけです。

2
POSIXテストと-a
私はcheckbashismsで私のスクリプトをチェックし、次の警告を受け取りました: possible bashism in check_ssl_cert line 821 (test -a/-o): if [ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ] ; then ではPOSIX仕様のセクション4.62.4 Iの発見 primary -a primaryバイナリを実行し、プライマリとプライマリの結果を実行します。-a演算子は-o演算子よりも優先されます。 なぜポータブルではない-aと-o考えられますか?

6
別のシェルで実行されたコマンドを確認するにはどうすればよいですか?
コマンドが実行されているときに、別のシェルで実行されているコマンドを監視する方法はありますか?どちらのシェルもbashであり、必要に応じてrootアクセス権を持っています。追加のソフトウェアをインストールできません。また、実行画面のような特別なことを他のシェルに行わせたくありません。 状況:Linuxマシンにリモートでログインしているため、同僚もいます。彼女が彼女のシェルで実行しているコマンドを見たいのですが。私はいくつかの組み合わせを使用することができることを知っているwatchし、ps実行に時間が秒以上かかり任意のコマンドを見て、私はそれが非常に短いコマンドで役立つだろうとは思いません。

2
--text =“ $ @”が最初の単語のみを渡すのはなぜですか?
私のようないくつかの引数を指定して、次のスクリプトを実行するとarg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" zenityは、「arg1」というテキストで入力ダイアログを作成しますが、「arg1 arg2 arg3」が必要です。 次のスクリプトのような変数を使用すると、エントリテキストのすべての引数が表示されます。 #!/bin/bash text="$@" zenity --entry --text="$text" これらのスクリプトの違いは何ですか?なぜ最初のもの$@は最初の引数だけで置き換えられるのですか?
9 bash  shell  quoting 

1
出力のリダイレクトとスペース
私はこれについて妄想的ですが、うまくいけばそれは簡単な質問です: 違いはありますか cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt そして cat file1|egrep -oP "[Mm]y string">/home/user/file.txt つまり、パイプ文字(|)とリダイレクト文字(>)のパディングにスペースがあるかどうかは問題になりますか?私は本当にそこにスペースがあると、私がそれを望まないときに、スペースがどういうわけか出力ファイルに含まれることになることに非常に偏執的です。誰かが明確にできますか?(それが重要な場合はUbuntu 12 / bashを使用します。)

2
$ PATHが正しく指定されていても、Bashがコマンドを見つけられないのはなぜですか?
/ etc / profileファイルにコマンドへのパスを指定しています: export PATH=$PATH:/usr/app/cpn/bin 私のコマンドは次の場所にあります: $ which ydisplay /usr/app/cpn/bin/ydisplay したがって、「echo $ PATH」出力を実行すると、次のようになります。 $ echo $PATH ...:/usr/app/cpn/bin そして、すべてが大丈夫ですが、SSH経由でコマンドを起動しようとすると、エラーが発生します。 $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found しかし、私の道はまだ存在しています: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin SSHセッション中にBashがydisplayを見つけられない理由と、この問題を回避するためにSSHを適切に構成する方法を教えてください。 さらに、現在のユーザーのローカルファイル.bashrcで$ PATHを指定すると、すべて正しく動作します。しかし、ユーザーごとに多数のファイルを指定するのではなく、1つのファイルのみを変更したいと思います。これが私が求めている理由です。
9 linux  bash  shell  ssh  path 

1
dd: '/ dev / null'を書き込んでいます:デバイスにスペースが残っていません
/ dev / nullに550MBのファイルを読み込んでいます。 dd: writing '/dev/null': No space left on device 私はびっくりしました。/ dev / nullは、あなたが好きなだけ送信できるブラックホールだと思いました(仮想fsのため)。 はい、このエラーが発生すると、ディスクがほぼいっぱいになります。ディスクからコンテンツを削除する以外に何ができますか? ls -l /dev/null -rw-r--r-- 1 root root 0 July 7 21:58 /dev/null の代わりに crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null 私が使用しているコマンド: time sh -c "dd if=$filename of=/dev/null"

4
複数のディレクトリ間で共通ファイルのセットを見つけますか?
Drupalテーマのディレクトリを比較したいと思っています。drupalテーマはいくつかのファイルで構成されるディレクトリであり、どのファイルが必須かを理解しようとしています。例えば、それらはすべてというファイルがある可能性がありますtemplate.phpかpage.tpl.php。 複数のディレクトリのすべての共通ファイルのセットを見つけるにはどうすればよいですか?私の場合、すべての「同じ」ファイル(同じ名前のファイル)は同じレベルのディレクトリに置かれます。
9 shell 

8
最も古いファイルを削除する
ディレクトリから古いファイルを削除して、最新のファイルを3つだけ残そうとしています。 cd /home/user1/test while [ `ls -lAR | grep ^- | wc -l` < 3 ] ; do rm `ls -t1 /home/user/test | tail -1` echo " - - - " done 条件文に問題があります。
9 shell  files  rm 

1
1つのコマンドに2つのパイプ
次の構文に少し混乱しています。動作しますが、なぜ動作するのかわかりません。2つのパイプがdiffコマンドに接続されているようです。しかし、1つだけではありませんSTDINか? 例: diff <(echo "foobar") <(echo "barbaz") diff <(cat foo.txt) <(cat bar.txt)
9 bash  shell 

1
シェルがリモートSSHセッションによって所有されていることを検出する方法は?
私の質問はこれと似ていますが、少し違うものを探しています。2つの異なるシナリオでネットワーク上のLinuxマシンにアクセスするために使用するノートブックPCを持っています。 ネットワークに直接、有線で接続しています。 ネットワークに間接的に接続しています。ネットワーク上にインターネットに公開されているゲートウェイマシンがあり、これを使用してネットワーク上のホストへのSSHトンネルを確立できます。これは明らかに、はるかに遅く、待ち時間が長い接続です。 私のホームディレクトリはすべてのマシンからネットワークにアクセスできるため、私ののコピーを共有しています.bashrc。.bashrc2つのシナリオのどちらを使用しているかを検出し、それに応じて機能する機能を追加したい(技術的には、3つ目のシナリオがあります。3つ目は、ローカルマシンにログインしているが、簡単に処理できるはずです)。私は次のようなことをしたいと思います: alias ssh ssh -X ローカルネットワーク上にいるが、インターネット経由でX転送を使用したくない場合。 export EDITOR=gvimローカルネットワークにいるexport EDITOR=vimとき、リモートにいるとき。 等々。前の回答に基づいて、SSH_CLIENT(存在する場合)の内容を確認し、クライアントIPアドレスがローカルマシンのネットワークアダプターの1つと一致するかどうかを確認することで、このようなことを達成できるはずです。これを実現するためのよりスマートでより堅牢な方法があるかどうかを確認すると思いました。
9 shell  ssh  bashrc 



2
シェル固有ではないものは何ですか?
一部の回答では、回答にシェル固有のコマンドを使用しないことを推奨するコメントが表示されます。 すべてのシェルに存在するコマンド、演算子などを知るにはどうすればよいですか?規格のリストはありますか? man builtinsコマンドのリストを示します。これらは、すべてのシェルで機能するポータブルシェルスクリプトで使用できる唯一のコマンドですか? 組み込みはシェル固有ですか? Linuxの標準は他のUnixの標準と異なりますか? 構文はどうですか?一部のシェルでは句読点、演算子などが異なる場合がありますか?

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