Unix & Linux

Linux、FreeBSDおよび他のUn * xのようなオペレーティングシステムのユーザーのためのQ&A

1
.inputrcと.bashrcの設定
次のようないくつかの設定.bashrcと.inputrcファイルの外観が同じまたは類似していることに気づきました。 shopt -s nocaseglobvs set completion-ignore-case export HISTSIZEvs set history-size export HISTFILESIZEvsset history-size .inputrc設定は、Pythonシェルの完了と履歴サイズにも影響しますか(ターミナル内で実行した場合)? さHISTSIZEによって制限されhistory-sizeたり、それをオーバーライドしていますか?
9 bashrc  inputrc 

1
SSH経由のWake-on-LAN
多くのLinuxデバイスで、Wake-on-LANを長年使用してきました。それは十分に機能します。 しかし、私は自宅にもMac Miniを持っています。スリープ状態になり、スリープ状態にあるLinuxマシンとは異なる2つの異なるプロパティがあることに気づきました。 それでも、ネットワーク上のpingに応答します。 着信ssh接続時に自動的にウェイクアップします。Wake-on-LANは必要ありません。 この2番目のプロパティは、本当にすばらしいものになります。使用していないときは自動的にスリープ状態になり、電力を節約します。また、sshを実行するときに、電源を入れる必要はありません。自動的に目覚めるだけです。ログアウトした後、15分後に再びスリープ状態になります。 私の仮定は、これはAppleがハードウェアとソフトウェアのスタックを制御しているためだと思います。したがって、業界全体のWake-on-LANは、マジックパケット(OSの相互作用を必要としない)に基づくネットワークデバイス機能ですが、Macの魔法の「Wake-on-LANもpingに応答する」というのは、実際にはOS全体をスリープ状態にするか、別のネットワークスタックをスリープモードで実行します。しかし、それは単なる推測です。 Linuxマシンでこのような「Wake-on-incoming-SSH」を目にしたり実装したりしたことがあるかどうか知りたいのですが。あるいは、この特別な魔法は、ハードウェアからソフトウェアまでを制御し、他の業界ではできない方法でこれを行うことができるAppleデバイスでのみ見つけることができますか?

2
ChromeがすべてのRAMを消費し、システムをフリーズする
クロムがたとえば4GBのRAMを超えるのを防ぐ方法。彼は時々7GB(合計8GB RAM)のようなものを採用することを決め、私のコンピューターを使用できなくします。 何か助けはありますか? PS:開いているタブは10個もありませんでした。編集:多分私はやった... 15のようなものです。とにかく、システム全体をフリーズしないように、クロムをフリーズまたはシャットダウンします。

4
/ bin / shのコロンで文字列を分割
私のdashスクリプトはの形式でパラメータを受け取りますhostname:port。つまり、 myhost:1234 一方、ポートはオプションです。 myhost ホストとポートを別々の変数に読み込む必要があります。最初のケースでは、私は行うことができます: HOST=${1%%:*} PORT=${1##*:} しかし、ポートが省略されている場合、それは2番目のケースでは機能しません。echo ${1##*:}空の文字列ではなく、単にホスト名を返します。 バッシュでは、私はできる: IFS=: read A B <<< asdf:111 しかし、それはでは機能しませんdash。 私は、上の文字列を分割することができ:、外部プログラムを(起動せずに、ダッシュではawk、trなど)?
9 shell  string  dash 

1
だれが私のssh-agentを起動しており、なぜそれが正しく終了しないのですか?
これは長い間抱えていた問題ですが、何かを見つけようとするたびに迷子になるので、経験豊富な人がどこで助けてくれるのか、ここで尋ねたほうがいいと思いました。 バックグラウンド 私のRaspberry PiはRaspbian Jessieを実行しており、SSHを使用してログインし、リモートでコマンドを実行します。最初のSSHセッション中に、ログインするたびにRPiでssh-agentプロセスが生成されるのに気づきましたが、ログイン時に強制終了されることはありませんでした。exitログインとログアウトを数回ssh-agent繰り返すと、何もせずにハングしたままにして一連のプロセスが生成されました。manページとあちこちで答えをいじくり回して読んだところ、最近の目的がわかりました。ssh-agentまた、ログアウトすると通常は強制終了されるので、なぜそうでないのかを自問し始めました。さらに、発行source ~/.bashrcによっての別のインスタンスssh-agentが生成されることに気付きました。相対マニュアルページで読んだ環境変数SSH_AGENT_PIDを定義する必要があるのは、ssh-agentプログラムを内でeval起動して出力を実行し、そのような変数を定義する必要があるためです。これらの変数は、ssh-agent -k(現在のセッションに関連するエージェントを強制終了する)など、他のSSH関連コマンドで使用されます。とを実行echo $SSH_AGENT_PIDしましたがecho $SSH_AUTH_SOCK、どちらも空でした。突然気づきました。おそらくssh-agent -k設定されていない環境変数からPIDを読み取ろうとするため、ログアウト時にプロセスが強制終了されません。 問題 以来は、ssh-agentログアウト時に殺されていない、これは確かに必要な環境変数が設定されていないので、それができるだけで平均1の事が起こる:呼び出し、誰でもssh-agentログイン時に、おそらく適切な方法でそれをしない(されるであろうeval "$(ssh-agent -s)")。だから私は思った:まあ、問題は何ですか?エージェントを起動して手動で修正するために実行される構成ファイル、サービス、またはログインスクリプトを見つけるだけです!一体どこにあるのでしょうか? 私が試したこと ssh-agentを呼び出すたびにが生成されることに気付いたのでsource ~/.bashrc、これは最初に検査したファイルですが、SSHに関連するものをリモートで参照するものはありません。次のすべてのファイル内で文字列を検索し続けましたが、何も見つかりませんでしたvissh。 ~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile /etc/profile.d/ (every file in this folder) /etc/environment 関与する可能性のあるファイルが他にありますsource ~/.bashrcか?よくわかりません。 次に、関連するsystemdサービスを検索しましssh.serviceたがWantedBy=multi-user.target、見つかったのはであり、ログイン時に実行されていません(これはSSHサーバーデーモンであるため、これは明らかです)。 また、/home/piフォルダ内のすべてのファイルを一時フォルダに移動してログアウトしてから再度ログインしようとしssh-agentましたが、まだ起動しました。 結局、私はチャンバーで最後に撃ったショットも発射しました:find / -name 'ssh-agent'rootとして/usr/bin/ssh-agent実行し、実行可能ファイルのみを出力したので、基本的には親コマンドのみをログに記録する偽の実行可能ファイルを作成しました: #! /bin/bash ps -o args= $PPID > /home/pi/LOG cat /proc/$PPID/cmdline >> /home/pi/LOG 私は本当の名前を変更し/usr/bin/ssh-agent、適切な権限/ユーザー/グループを設定する偽の1つに置き換え、source ~/.bashrc再度実行して、LOGファイルを印刷しました。 …

1
STDERRの前にSTDOUTを表示しますか?
私はbashを./fff使い始めたばかりですが、生涯、特定のコマンドを実行する方法を理解することはできません。標準エラー出力の前に、標準エラー出力をstderrの前に出力してください(自分自身の意味について混乱しています)。 例えば $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill 次のように印刷する必要があります: I am a drill I am a …

3
文字列変数によるシェルコマンドの保護
プログラミング言語内で、単純なシェルコマンドを実行します cd var; echo > create_a_file_here varが、私は、ファイル「create_a_file_here」を作成したい場所に(たぶん)ディレクトリの文字列を含む変数であること。これで、誰かがこのコード行を見つけた場合、たとえば、次のコードを割り当てることにより、コードを悪用することが可能です。 var = "; rm -rf /" 物事はかなり醜くなります。上記のケースを回避する1つの方法は、「;」などの特殊文字をvarの文字列で検索することです。シェルコマンドを実行する前に、これはおそらくすべてのエクスプロイトをカバーしているとは思いません。 「cd var」がディレクトリのみを変更し、それ以外は変更しないようにするための良い方法を知っている人はいますか?

1
コピー/貼り付けバッファーをサニタイズするにはどうすればよいですか?
テキストを選択してコピーしてから、たとえばgmailなどに貼り付けてみると、書式が保持されていることに気づきました。 過去10年間で、これが私にとって望ましい機能であったことは一度もありません。 現在、クリップボードマネージャーとしてグリッパーを使用しています。 コピー/貼り付けエントリを(グリッパーで)選択しただけの場合、サニタイズされます。 コピー/貼り付けするたびに、自動的にサニタイズするにはどうすればよいですか? 私の考えでは、グリッパー用のプラグインを作成する必要があるかもしれませんが、x.orgだけを使用してサニタイズできるようにする設定またはフックが必要です。 何かご意見は? ありがとう!
9 xorg  clipboard 

10
Bash:IPv4アドレスの4つのセクションの1つを抽出します
構文${var##pattern}を使用して${var%%pattern}、IPv4アドレスの最後と最初のセクションを抽出できます。 IP=109.96.77.15 echo IP: $IP echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*} echo 'Extract the last section using ${var##pattern}: ' ${IP##*.} パラメータ拡張を使用してIPv4アドレスの2番目または3番目のセクションを抽出するにはどうすればよいですか? これが私の解決策です:配列を使用してIFS変数を変更します。 :~/bin$ IP=109.96.77.15 :~/bin$ IFS=. read -a ArrIP<<<"$IP" :~/bin$ echo ${ArrIP[1]} 96 :~/bin$ printf "%s\n" "${ArrIP[@]}" 109 96 77 15 また、私は使用して、いくつかのソリューションを書かれているawk、sedとcutのコマンドを。 さて、私の質問は:配列とIFS変更を使用しないパラメーター拡張に基づくより簡単な解決策はありますか?

7
`source`コマンドの反対
source変数の値を読み取り/印刷するために、bashスクリプトでコマンドを使用します more linuxmachines_mount_point.txt export linuxmachine01="sdb sdc sdf sdd sde sdg" export linuxmachine02="sde sdd sdb sdf sdc" export linuxmachine03="sdb sdd sdc sde sdf" export linuxmachine06="sdb sde sdf sdd" source linuxmachines_mount_point.txt echo $linuxmachine01 sdb sdc sdf sdd sde sdg source変数を設定解除するための反対は何ですか? 予期された結果 echo $linuxmachine01 < no output >

2
同じパイプラインで同じファイルの読み取りと書き込みを常に「失敗」させる方法は?
次のスクリプトがあるとします。 #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done 重要な行で、同じファイルtmpを読み書きしますが、失敗することがあります。 (パイプライン内のプロセスが並行して実行されるため競合状態が原因であると読み取りましたが、理由はわかりません-それぞれheadが前のデータからデータを取得する必要がありますか?これは私の主な質問ではありません、しかし、あなたもそれに答えることができます。) スクリプトを実行すると、約200行が出力されます。このスクリプトが常に0行を出力するように強制できる方法はありますか(そのため、I / Oリダイレクトtmpは常に最初に準備され、データは常に破棄されます)?明確にするために、このスクリプトではなく、システム設定を変更することを意味します。 あなたのアイデアをありがとう。


4
マニュアルページウィンドウで使用できるコマンドはどこに文書化されていますか?これらのコマンドはシステムに依存していますか?
Linuxを何年も使用していて、manコマンドを適切に使用する方法がわからないことに突然気付きました。qmanページを終了したり、/検索したりするためにタイプ入力できることはよく知られています。しかし、これらがどこに文書化されているのかはわかりません。私は試しましたがman man man -a man info man、運がありませんでした。 この情報を探すために適切な位置を教えてください。たとえ情報が正しく、man man見落としてしまったとしても、問題はありません。お知らせください。 これらのコマンドは、OSやLinuxのディストリビューションによって異なりますか?
9 man 


2
CTRL + Cの後でコンソールをリセットする必要があるのはなぜですか
一部のコマンドラインインターフェイスツールは、によってキャンセルされると、壊れたコンソールを返しますCTRL+C。コマンドが実行されるまで、テキストが表示されない場合や、グラフィックの問題が発生する場合がありますreset。 (私はbashを使用していますが、シェルから独立していることを期待しています。) この効果には名前がありますか?これは何が原因で、どのようにしてプログラマはツールでこれを防ぐことができますか?主要なプログラミング言語でこの問題に対処する方法はありますか?

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