Unix & Linux

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

2
bashスクリプトで関数にパラメーターを渡す方法は?
多くの異なる変数を持つスクリプトから呼び出すことができる関数を書きたいです。いくつかの理由で、これを行うのに多くの問題を抱えています。例私が読んだことは常にグローバル変数を使用するだけですが、それは私が見ることができる限り私のコードをそれほど読みやすくしません。 使用例: #!/bin/bash #myscript.sh var1=$1 var2=$2 var3=$3 var4=$4 add(){ result=$para1 + $para2 } add $var1 $var2 add $var3 $var4 # end of the script ./myscript.sh 1 2 3 4 $1関数でなどを使用してみましたが、スクリプト全体が呼び出されたグローバルなものが必要になります。基本的に私が探しているようなものである$1、$2とそうではなく、関数のローカルコンテキストで。ご存じのように、関数は適切な言語で動作します。

1
ポート転送にnetcatを使用する
私は、リッスンするプロセスを持っていますIP:port-実際には、ソケットに接続するのはスパークストリーミングです。問題は、あるポートでスパークに接続し、別のポートからこのサーバーにデータがストリーミングされるサーバーを何らかの形で作成したいということです。 たとえば、スパークストリーミングの例では、netcatユーティリティを使用します(例:)nc -lk 5005。ただし、着信メッセージをリッスンしてからメッセージを送信する別のサービスがあります。そのため、サービスAからのメッセージをリッスンし、sparkに渡すことができるサーバーが必要です。 私のサービスAは、ソケットに依存しています。そして、私のスパーク消費者はソケットに依存しています。 これまでにポートからポートへの転送を行っていますが、これは機能していないようです: nc -X 4 -x 127.0.0.1:5005 localhost 5006 サービスA:5005->ソケット-> 5006-> Spark この作品を作る正しい方法を見つけることができないようです。 いくつかの回答から次のことが示唆されています。 socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006 私のスパークソケットレシーバーは接続しないか、接続できないようです。エラーが表示されます:Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused
14 linux  networking  netcat  nc 

1
ランダム画像ジェネレーター
私はランダムデータを生成し、それを使用してPNG画像に変換しようとしています: head -c 1MB < /dev/urandom | hexdump -e '16/1 "_x%02X"' | sed 's/_/\\/g; s/\\x //g; s/.*/ "&"/' | tr -d "\"" | display -depth 8 -size 1000x1000+0 rgb:- このコマンドは、常にいくつかのRGBピクセルを持つ灰色の画像を表示します。私は何を間違えていますか? 私の最終目標は、ランダムデータを含む少なくとも1つの画像を生成することです。


1
シェルスクリプトがシグナル9で殺されたかどうかを知る方法はありますか
殺され続けるbashスクリプト(javaプログラムから呼び出される)があります。私はいつもsignal 15withをキャッチしますtrapが、それから私が疑う他のシグナルが来signal 9ますが、それが本当にあるかどうかについては基本的に盲目signal 9です。 私はあなたができないことを知っているtrap signal 9のでsignal 9、私のシェルスクリプトを殺すかどうかを知ることができる他の方法はありますか?

3
bash:壊した[[<]]
私はbashスクリプトを書いていて、突然この動作が始まりました: [[ 1 &lt; 2 ]]; echo $? # outputs 0 [[ 2 &lt; 13 ]]; echo $? # outputs 1 しかし-lt健全に動作します: [[ 1 -lt 2 ]]; echo $? # outputs 0 [[ 2 -lt 13 ]]; echo $? # outputs 0 &lt;何とか誤って上書きしましたか? この動作をテストするために作成したスクリプトは次のとおりです。 #!/bin/bash for a in {1..5} do …
14 bash  test 

2
Mint 17.3でスタートアップアプリケーションを手動で追加する方法
Linux Mint 17.3を完全に更新しました。 たくさんのアプリケーションをスタートアップに追加する必要があります。 問題は、次のダイアログが機能しないことです。リストからアプリケーションを追加したり、カスタムコマンドを追加したりしません。 とにかく、おそらくいくつかのスタートアップファイルを編集することによって、それらのアプリケーションを手動で追加できる他の方法が必要ですか?

1
GNUタイムアウトに相当するPOSIXですか?
GNU coreutils timeoutコマンドは、特定のスクリプトの状況に非常に便利で、実行が速い場合はコマンドの出力を使用でき、時間がかかりすぎる場合はスキップできます。 timeoutPOSIXで指定されたユーティリティのみを使用する基本的な動作を概算するにはどうすればよいですか? (私はそれがの組み合わせを含むことができると思っていますwait、sleep、killそして他に何が、おそらく私はより簡単なアプローチを欠けているを知っています。)

3
変換せずにバイトを逐語的にコピーするために、bashでバイナリを使用するにはどうすればよいですか?
私は、無数の理由でc ++コードをbashに変換しようと野心的に取り組んでいます。 このコードは、完全にバイナリで記述および構造化されたサブフィールドに固有のファイルタイプを読み取り、操作します。最初のバイナリ関連のタスクは、ヘッダーの最初の988バイトをそのままコピーし、残りの情報を生成しながら書き込みを続けることができる出力ファイルに入れることです。 私の現在のソリューションは機能していないと確信しており、現実的にはこれを判断するための良い方法を見つけていません。したがって、実際に正しく記述されていても、これをテストする方法を確認する必要があります! これは私が今やっていることです: hdr_988=`head -c 988 ${inputFile}` echo -n "${hdr_988}" &gt; ${output_hdr} headInput=`head -c 988 ${inputTrack} | hexdump` headOutput=`head -c 988 ${output_hdr} | hexdump` if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please troubleshoot."; exit 1; fi hexdump / xxdを使用してファイルのこの部分をチェックアウトすると、ほとんどの部分を正確に読み取ることはできませんが、何かがおかしいようです。また、比較のために記述したコードは、2つの文字列が同一であるかどうかだけを示しており、希望どおりにコピーされているかどうかは示していません。 これをbashで行うより良い方法はありますか?native-binaryのバイナリバイトをそのままコピー/読み取りして、そのままファイルにコピーできますか?(そして理想的には変数としても保存すること)。
14 bash  binary  head 


1
/etc/nixos/configuration.nixを個別のモジュールに分割する方法は?
非常に単純なNixOS設定ファイルがあるとします: { config, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; # SOME STUFF environment.systemPackages = with pkgs; [ emacs gitFull ]; # SOME STUFF } NixOSがモジュールシステムを実装し、モジュールが.nixファイルであることを知っています。すべての.nixファイルには、有効なNix式(関数またはセットなど)が含まれている必要があります。これは、NixOS構成ファイル/etc/nixos/configuration.nix自体がモジュールであり、Nix式を含むことを意味します。 また、別のモジュールのNix式を、使用しているモジュールから見えるようにするために、組み込みimport関数を使用できることも知っています。 システムパッケージの宣言(emacsとを含むリストgitFull)をfile に分割しますpackages.nix。NixOS構成ファイルを個別のモジュールに分割するにはどうすればよいですか?
14 nixos  nix 

2
異なるディストリビューションは、プログラムの構成ファイルの場所をどのように変更しますか?
多くのLinuxプログラムは、構成ファイルの場所がディストリビューションに依存していると述べています。さまざまなディストリビューションがこれをどのように行うのかと思っていました。彼らは実際にソースコードを変更しますか?これらの場所を設定するビルドパラメーターはありますか?これを検索しましたが、情報が見つかりません。私はそれがそこにあることを知っています、私はそれを見つけることができないようです。これに関して「Linuxの方法」とは何ですか?

4
CentOS 7でのBashの完了は非常に不完全です
を使用してbash補完をインストールしましたyum install --enablerepo=epel bash-completion。いくつかの基本的なコマンド(git&yum)で機能しますが、完成版の大部分が欠落しています。 私/etc/bash_completion.dには次のものが含まれています: bash_completion.d] $ ls git iprutils redefine_filedir yum yummain.py yum-utils.bash ただし、make(インストールされている)にはbash_completionがあり、さらに多くの場合は、ここのサンプル出力と比較してください。 不足しているコンプリータースクリプトを取得するにはどうすればよいですか?(できればyumで、手動で更新する必要はありません) 重要な場合:タブ補完は機能しますが、.bashrcには何も入力していません。パッケージをインストールした後、動作を開始しました。 更新: bash完了のバージョンを確認した後、@ fduffが示唆したようにインストールしましたので、以下を見ました: $ yum list installed | grepの完了 bash-completion.noarch 1:2.1-6.el7 @base しかし、それをアンインストールしてEPELリポジトリからbash_completionをインストールするには、CentOSのを強制しようとしてsudo yum install --enablerepo=epel bash-completion --disablerepo=base得られましたpackage not found。 さらに、チェックがあることが得られた新しいパッケージ完了ファイルがに@Baseプットになりました/usr/share/bash-completion/completionsが、私はまだ、すなわち、いくつかをしないのです、sshとsudo(のようなものはそれが吸うsudo command [tab]完全しばらくはないcommand [tab]、さらに私はのためのビットを見つけることができませんsitll、ありません)make(にあるターゲットをリストする必要がありますMakefile) 更新2:変更 ログの状態: 2013年11月1日金曜日Petr Stodulka-2.1-6 「tar」なしで利用可能な補完のみをインストールし(#810343-コメント15)、もう一方を削除します。 2013年9月13日金曜日Roman Rakus-2.1-5 欠落している条件解決をもう1つ追加しました:#1007839 2013年9月13日金曜日Roman …

2
非対話型のログインシェルはありますか?
対話型/非対話型シェルとログイン/非ログインシェルの違いは知っていますが、実際にはスクリプトのようなものがない限り、非対話型ログインシェルになることはないようです/bin/bash --login some-script.sh(さらには少し奇妙な)。これは正しいですか、それともより一般的ですか?
14 shell 

5
長いパスで最初に見つからないディレクトリを見つけるにはどうすればよいですか?
存在しないパスがあると想像してください: $ ls /foo/bar/baz/hello/world ls: cannot access /foo/bar/baz/hello/world: No such file or directory しかし、存在すると/foo/bar しましょう。それbazがパスのブレークポイントであると判断する簡単な方法はありますか? 私はBashを使用しています。
14 bash  shell  directory  ls 

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