Unix & Linux

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

2
bashスクリプトの何もしない行
私にはbashスクリプトがあり、else何も実行しないようにしたいというステートメントがあります。 これを行う最良の方法は何ですか?
14 bash 

3
bash: 'find'出力を 'readarray'にパイプする
私はを使用してファイルを検索しfind、それらのファイルをBash配列に配置して、他の操作(lsまたはなどgrep)を実行できるようにしています。しかしreadarray、findパイプで出力を読み取っていない理由を理解できません。 現在のディレクトリに2つのファイルがあるfile1.txtとしfile2.txtます。したがって、find出力は次のようになります。 $ find . -name "file*" ./file1.txt ./file2.txt だから私はそれを2つの要素が文字列である配列にパイプしたいと思います("./file1.txt"そして"./file2.txt"引用符なしで)。 他にもいくつか試してみました: $ declare -a FILES $ find . -name "file*" | readarray FILES $ echo "${FILES[@]}"; echo "${#FILES[@]}" 0 echo出力からわかるように、私の配列は空です。 だから私はここで何が間違っているのですか?の出力を標準入力としてreadarray読み取らずfind、それらの文字列を配列に入れないのはなぜですか?
14 bash  find 

1
gnomeが音楽をミュートしないようにするにはどうすればよいですか?
私はArchLinuxを使用していますが、Spotifyを最近インストールしました。 プログラムがシステムサウンドをトリガーするたびに、プレーヤーの音量がミキサーで自動的にミュートされます。どうすればこれを止められますか? これもvlcで発生していることを確認したので、Gnomeに関連するものだと思います。 それはpulseaudioに関連する何かでしょうか?



1
xkbでCaps LockとShift + Caps Lockの両方を再マッピングする
Caps LockがComposeキーにマップされ、Shift + Caps Lockが従来のCaps Lockとして機能するようにxkbを構成しようとしています。と呼ばれる新しいファイルに以下を入れます/usr/share/X11/xkb/symbols/gdwatson: partial modifier keys xkb_symbols "compose" { key <CAPS> { type[Group1] = "TWO_LEVEL", symbols[Group1] = [ Multi_key, Caps_Lock ] }; }; それからsetxkbmap -symbols 'pc+us+gdwatson(compose)'、正常に完了したを実行しました。Caps LockはComposeとして機能しますが、Shift + Caps LockはCaps LockではなくComposeとして機能します。 xkbcomp :0.0以下を明らかにします。 key <CAPS> { type= "TWO_LEVEL", symbols[Group1]= [ Multi_key, Multi_key ] }; 第2レベルのシンボルマッピングは、何らかの理由で、私がそれを与えようとした個別の値ではなく、第1レベルのシンボルマッピングを複製しています。誰かが私が間違ったことやそれを修正する方法を教えてくれるほど強力なxkb-fuを持っていますか?

1
Debianで永続的なルーティングテーブルを設定する
1つのルールを削除し、2番目のインターフェイスeth1に2つの新しいルールを追加して、ルーティングテーブルを変更しました。 route del -net 10.1.2.0 netmask 255.255.255.0 route add -host 10.1.2.51 eth1 route add -host 10.1.2.52 eth1 再起動後もルールが生き残るようにします。単純なrcスクリプトを作成して1つのルールを削除し、2つの新しいルールを挿入できますが、インターフェイス(eth1)の起動時にルートルールを追加するのではなく、ifconfigを構成する方法があるかどうか、追加するルールを指定します。 それを行うためのきれいな方法は何でしょうか?ないifconfig私は、ルーティングのためのカスタムルールを指定することができますか?


2
/ dev / tcpを使用するのに<または>が必要な理由
を呼び出そうとすると/dev/tcp/www.google.com/80、 /dev/tcp/www.google.com/80 バッシュは言いno such file or directoryます。他の人のコードをオンラインで見るとき、彼らは次のような構文を使用します 3&lt;&gt;/dev/tcp/www.google.com/80 これも同様に機能することに気付きました: &lt;/dev/tcp/www.google.com/80 bashで特定のものを呼び出すためにこれらのシンボルが必要なのはなぜですか?

6
UNIXで行ごとに2つの異なるファイルを比較するにはどうすればよいですか?
File1: 123 234 345 456 File2: 123 234 343 758 期待される出力:File3: TRUE TRUE FALSE FALSE そのため、コードは2つのファイルを比較し、一致する場合は「TRUE」を出力し、一致しない場合は新しいファイルに「FALSE」を出力する必要があります。誰でもこの解決策を提供できますか?

1
一貫性のあるLinuxデバイスの列挙
LinuxボックスにはUSB-&gt;シリアルデバイスがあり、常にとして識別され /dev/ttyACM0ます。それで、私はアプリケーションを書きました、そして、昨日まで、すべてはうまく働きました。しかし、突然(そう、リモートプレゼンテーション中に...)デバイスの動作が停止しました。簡単な調査の結果、接続がに変わったことがわかりました/dev/ttyACM1。それは少し時期尚早でしたが、今私は問題を抱えています-私のデバイスを明確に識別する方法は?たとえば、ストレージドライブはUUIDを使用して初期化できますが、/dev/sd**変更されています。シリアルデバイスでそれを行う方法はありますか? 今、私は愚かな回避策を使用します: for(int i = 0; i &lt; 10; i ++) { m_port = std::string("/dev/ttyACM") + (char)('0' + i); m_fd = open(m_port.c_str(), O_RDWR | O_NOCTTY | O_NDELAY); } 使用するデバイスへのリンク。
13 linux  usb-device 

4
あまりにも多くのバックグラウンドジョブを開始するとどうなりますか?
Expectスクリプトを使用して、700個のネットワークデバイスで作業を行う必要があります。順番に実行できますが、これまでの実行時間は約24時間です。これは主に、接続の確立にかかる時間と、これらのデバイス(古いデバイス)からの出力の遅延が原因です。2つの接続を確立し、それらを正常に並列に実行することはできますが、どこまでプッシュできますか? 700個すべてを一度に実行できるとは思いませんが、noにはある程度の制限があります。VMが管理できるTelnet接続の数。 このようなループで700個を開始しようとした場合: for node in `ls ~/sagLogs/`; do foo &amp; done と CPU 12 CPU x Intel(R)Xeon(R)CPU E5649 @ 2.53GHz メモリ47.94 GB 私の質問は: 700のインスタンスすべてをおそらく同時に実行できますか? サーバーが制限に達するまで、どこまで到達できますか? その制限に達すると、次の反復の開始を待つだけfooですか、それともボックスがクラッシュしますか? 残念ながら企業の実稼働環境で実行しているので、何が起こるかを正確に試すことはできません。

6
パターンを見つけた後にのみ出力を印刷する
echoerたくさんの情報を画面に表示するスクリプト(呼び出しましょう)があります。パターンが見つかった後にのみ行を表示できるようにしたいと思います。 私は次のようなソリューションの使用を想像します echoer | solution_command &lt;pattern&gt; 理想的にpatternは正規表現になりますが、ハードバリュー文字列で十分です。
13 echo  printf 

1
「test」という名前の実行可能ファイルは$ PATHにありますが、実行されません
$ HOME / binにファイルがあります(尋ねる前に、はい、私のtestパスにあります)。ファイルへのフルパスで実行すると問題なく実行できることを確認しました。ただし、この方法で実行しないと、本当に奇妙な問題が発生します。testターミナルで実行すると、何もせずにすぐに戻ります。これは、いくつかの理由でファイルを見つけることの問題ではないことを知っています。 エラーメッセージはありません。通常、ファイルが見つからない、または実行できない場合、その旨を示すメッセージが出力されます。 実行してwhich testも、正しいファイルパスが返されます。 おそらく最も奇妙なのは、スクリプトが実行されstraceたときに正常に動作することです。私はstrace何が起こっているのかを理解できるかどうかを試してみましたが、で実行するとstrace、問題なく0で動作しました。

2
シェルの$ @のデータ構造は何ですか?
通常、$@$ 0を除くすべての引数を表すために使用します。ただし、データ構造$@が何であるかはわかりません。 $*二重引用符で囲むと動作が異なるのはなぜですか、誰でも通訳レベルの説明をくれますか? forループで反復できるため、配列のようです。ただし、simple echo $@で完全にエコーすることもできます。配列の場合、最初の要素のみが表示されます。シェルの制限により、それを実行するための実験コードをこれ以上書くことができません。 この投稿の違い:この投稿は、どのように$@振る舞うかを示します$*。しかし、私はのデータ型について疑問に思っています$@。Pythonのような解釈言語としてのシェルは、一連の基本型に従ってデータを表現する必要があります。または、言い換えると、$ @がコンピューターのメモリーにどのように保存されているかを知りたいのです。 文字列、複数行の文字列、または配列ですか? 一意のデータ型の場合、カスタム変数をこの型のインスタンスとして定義できますか?
13 bash  shell 

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