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

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

7
任意のコマンドに対して、プロンプトを使用して機密データをbashで渡す方法はありますか?
sha1passコマンドラインで機密性の高いパスワードのハッシュを生成するために使用していたとします。のsha1pass mysecretハッシュを生成するために使用できますmysecretが、これにmysecretは現在bash履歴にある欠点があります。mysecretおそらくpasswd-styleプロンプトを使用して、プレーンテキストでの表示を回避しながら、このコマンドの最終目標を達成する方法はありますか? また、機密データをコマンドに渡すためにこれを行う一般的な方法にも興味があります。メソッドは、機密データが引数(inなど)として、sha1passまたはSTDINで何らかのコマンドに渡されると変更されます。 これを達成する方法はありますか? 編集:この質問は多くの注目を集めており、いくつかの良い答えが下に提供されています。要約は次のとおりです。 あたりとしてKusalanandaの答え@、理想的には、ユーティリティのコマンドライン引数としてパスワードや秘密を与える必要はないだろう。これは彼が説明したようにいくつかの点で脆弱であり、STDINで秘密の入力を取得できる、より良く設計されたユーティリティを使用する必要があります。 @vfbsilvaの答えは、bashの履歴に物事が保存されるのを防ぐ方法を説明しています @Jonathanの答えは、プログラムがSTDINでその秘密データを取得できる限り、これを達成するための完全に良い方法を説明しています。そのため、この答えを受け入れることにしました。sha1pass私のOPでは例に過ぎませんが、STDINでデータを取得するより優れたツールが存在するという議論が確立されました。 @R ..内のノート彼の答えは、変数のコマンド拡張を使用することであるない安全。 要約すると、適切に設計され、適切に動作するプログラムがあることを考えると、@ Jonathanの回答が最良のソリューションであるため、@ Jonathanの回答を受け入れました。コマンドライン引数としてパスワードまたはシークレットを渡すことは基本的に安全ではありませんが、他の答えは単純なセキュリティ上の懸念を軽減する方法を提供します。

5
実行されないソースとなるシェルスクリプトを定義する方法
ユーザーsourceが実行するのではなく、シェルスクリプトを定義しています。 たとえばファイル拡張子を使用して、これが事実であることをユーザーに示唆する従来の方法またはインテリジェントな方法はありますか? ファイル自体に書き込むことができるシェルコードはありますか?これにより、ソースの代わりにメッセージがエコーされ、実行されると終了するため、ユーザーがこの明らかな間違いを避けるのを助けることができますか?
40 bash  shell 

5
TCPリスナーを作成する方法は?
はじめに:ポートが使用可能かどうかを確認できるbash関数を作成し、特定の最大ポート番号までfalseの場合は1ずつ増やします。たとえば、ポート500が使用できない場合、550までの501の可用性がチェックされます。 目的:このbash関数をテストするには、LISTEN状態のポートの範囲を作成する必要があります。 試行: Windowsでは、次のPowerShellコマンドを使用してLISTENポートを作成できます。 PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234 PS C:\Users\u> $listener.Start(); PS C:\Users\u> netstat -nat | grep 1234 TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost PS C:\Users\u> $listener.Stop(); PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> これに基づいて、私はCentOSで同じことを行うことができるコマンドについて考えていましたが、理由がわからず、この問題を解決する解決策を見つけることなくGoogleを始めました。 予想される回答:LISTENポートを作成できるコマンドを含む回答を受け入れて投票します。コマンドが実行されると、ポートはLISTEN状態のままになります。 [user@host ~]$ ss -nat | …
40 shell  networking  tcp 

7
タブ補完エラー:bash:ヒアドキュメント用の一時ファイルを作成できません:デバイスにスペースが残っていません
タブバーを使用すると、次のエラーが表示されます。 bash:ヒアドキュメント用の一時ファイルを作成できません:デバイスにスペースが残っていません」 何か案は? 私はいくつかの調査を行ってきましたが、多くの人が/ tmpファイルについて話します。実行するdf -hと次のようになります: Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.1G 8.7G 0 100% / udev 10M 0 10M 0% /dev tmpfs 618M 8.8M 609M 2% /run tmpfs 1.6G 0 1.6G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 1.6G 0 1.6G 0% /sys/fs/cgroup /dev/sda1 …
40 debian  shell  ssh  tmp 



4
nc listenの代わりに/ dev / tcp listen
次のようなnetcatリスナーを使用します。 nc -l <port> < ~/.bashrc 新しいマシンで.bashrcを取得できます(ncLDAP がありません)。 cat < /dev/tcp/<ip>/<port> > ~/.bashrc 私の質問はnc -l <port>、私の最初の行の機能を/ dev / tcpの代わりに模倣する方法はありncますか? 私が取り組んでいるマシンは、非常に強化されたラボ/サンドボックス環境RHEL(ssh、nc、LDAP、yum、新しいソフトウェアをインストールできず、インターネットに接続されていません)

3
すべてのLinuxベースのディストリビューションで利用可能な標準コマンドはどれですか?
すべてのLinuxシステムで使用可能な標準コマンドはどれかを知りたいです。 たとえば、debian / ubuntu / redhat / suse / arch / slackwareなどを入手した場合、次のようなコマンドが常に表示されます。 cd、mkdir、ls、echo、grep、sed、awk、pingなど 上記のコマンドの一部はシェルに組み込まれていますが、他のコマンドはそうではありませんが、それらは常にそこにあります(これまでの私の知識と経験に基づいて)。 一方、gawk、parted、traceroute、および他の非常に有名なコマンドのようなコマンドは、異なるLinuxディストリビューションではデフォルトでインストールされません。 さまざまなWeb検索を行いましたが、これに対する直接的な答えは見つかりませんでした。 目的は、シェルスクリプトを作成し、スクリプトで使用されているコマンドがシステムで使用できるかどうかを確認するためです。そうでない場合は、必要なバイナリをインストールするようにユーザーに求める必要があります。

7
sudoとsuを介して実行する場合、PATH変数が異なるのはなぜですか?
私のfedora VMで、ユーザーアカウントで実行している場合/usr/local/bin、次のパスにあります。 [justin@justin-fedora12 ~]$ env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin そして同様に実行するときsu: [justin@justin-fedora12 ~]$ su - Password: [root@justin-fedora12 justin]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin ただし、を介して実行する場合sudo、このディレクトリはパスに含まれません。 [root@justin-fedora12 justin]# exit [justin@justin-fedora12 ~]$ sudo bash [root@justin-fedora12 ~]# env | grep PATH PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin 経由で実行するとパスが異なるのはなぜsudoですか?

3
ドット(。)を含む変数をエクスポートする
ドットを含む変数をエクスポートする方法。試したときに「無効な変数名」が表示されます: export my.home=/tmp/someDir -ksh: my.home=/tmp/someDir: invalid variable name メタキャラクターのドット(。)をエスケープしても助けにはなりませんでした $ export my\.home=/tmp/someDir export: my.home=/tmp/someDir: is not an identifier

2
if ... fiの75倍の速度で&&を使用している理由と、コードを明確にする方法
私は次の作業コードを持っています: largest_prime=1 for number_under_test in {1..100} do is_prime=true factors='' for ((divider = 2; divider < number_under_test-1; divider++)); do remainder=$(($number_under_test % $divider)) [ $remainder == 0 ] && [ is_prime ] && is_prime=false && factors+=$divider' ' done [ $is_prime == true ] && echo "${number_under_test} is prime!" || echo "${number_under_test} is …

4
基本的なHTMLをすばやくレンダリングできるシンプルなBashツールはありますか?
時々、簡単なタスクを実行して、基本的なHTMLをコンソールに出力する必要があります。一目で読みやすくするために、最小限にレンダリングしてもらいたいです。シェルで基本的なHTMLレンダリングを処理できるユーティリティはありますか(Lynxスタイルのレンダリングを考えてください。実際のブラウザではありません)。 たとえば、時々watchApacheのmod_statusページに次のように表示します。 watch -n 1 curl http://some-server/server-status ページの出力は、最小限のマークアップを持つHTMLであり、シェルに次のように表示されます。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html><head> <title>Apache Status</title> </head><body> <h1>Apache Server Status for localhost</h1> <dl><dt>Server Version: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.15 with Suhosin-Patch</dt> <dt>Server Built: Jul 22 2014 14:35:25 </dt></dl><hr /><dl> <dt>Current Time: Wednesday, 19-Nov-2014 15:21:40 UTC</dt> <dt>Restart Time: Wednesday, 19-Nov-2014 15:13:02 …

4
「>」コマンドの正しい名前は何ですか
私は、>コマンドを使用して既にそこにあるものを上書きせずにファイルにテキストを渡す方法を見つけようとしていましたが、それが何であるかわからないことに気付きました。右矢印または右シェブロン、または複数のコマンドを検索しても何も表示されませんでした。私はいつもそれをパスに呼び出しただけです。


15
* nixのオブジェクト指向シェル
序文:私はbashが大好きで、いかなる種類の議論や聖戦を始めるつもりもありません。これは非常に素朴な質問ではありません。 この質問はスーパーユーザーに関するこの投稿に多少関係していますが、OPが彼が何を求めているのかを本当に知っているとは思いません。FreeBSD、Linux、OS X、およびWindowsのcygwinでbashを使用しています。また、最近、Windows上のPowerShellで広範な経験を積んでいます。 bashと互換性があるが、ミックスにオブジェクト指向のスクリプトのレイヤーを追加する、* nix用のシェルが既に利用可能または作業中です。私が知っている唯一のものは近くにあるPythonコンソールですが、私が知る限り、それは標準シェル環境へのアクセスを提供していません。例えば、私がいないだけでできcd ~とls、その後chmod +x fileのpythonコンソールの内部。これらのタスクを実行するには、標準のUNIXバイナリではなくpythonを使用するか、pythonコードを使用してバイナリを呼び出す必要があります。 そのようなシェルは存在しますか?

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