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

3
tar cvfまたはtar -cvf?
私はオプションに「-」なしでtarを使用することを学びましたtar cvfz dir.tar.gz Directory/が、最近、少し異なるtar -czvf構文に遭遇しました(この場合、「f」は最後のオプションでなければなりません)。 どちらもLinuxとMac OSで動作します。UNIXフレーバー間でより移植性の高い '-'なしのouを使用した推奨構文はありますか?

7
tail -f、ただし行番号付き
リモートサーバー上で、任意の時間内に何回foo bar表示さ/var/log/foo.logれるかを確認しようとしていますが、これまで試したものは何も機能しませんでした。 既にテーリングを開始してからの経過時間を追跡するために使用するタイマースクリプトがあり、テール出力に/var/log/foo.log何回foo bar出現したかを知る方法が欲しいのです。 Googleで検索しましたが、結果の最初の10ページに関連するものは見つかりませんでした。 イライラする結果で私が試したものは次のとおりです。 ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | cat -n - ## works on local, …

6
ランダムパスワードの生成。なぜこのポータブルではないのですか?
ランダムなパスワードを生成したいので、次のようにしています: </dev/urandom tr -dc [:print:] | head -c 64 Ubuntuを実行しているラップトップでは、意図したとおりに印刷可能な文字のみが生成されます。しかし、Red Hat Enterprise Linuxを実行している学校のサーバーにsshし、そこで実行すると、のような出力が得られますが3!ri�b�GrӴ��1�H�<�oM����&�nMC[�Pb�|L%MP�����9��fL2q���IFmsd|l�K、まったく実行されません。ここで何が間違っているのでしょうか?

2
ファイル記述子リンクの移植性
私は今、そうやるので、私はいつも、これを疑問に思いませんが、決して見つけるために時間がかかってきました-使用法がどのようにポータブルここに示したいずれかの/proc/$$/fd/$Nか/dev/fd/$N?私はPOSIXの保証 を理解して/dev/null, /dev/tty, and /dev/console います(この回答に関するコメントを読んだ後、先日それを見つけただけです)が、これらの他のものはどうですか? 私が知る限り、それらはかなり一般的ですが、どのシステムでそれらを見つけることは期待できませんか?何故なの?どちらか一方を見つける可能性が高いですか?彼らはいつも同じような属性を示しますか? 私はこれらのデバイスをあらゆる方法でかなり広範囲に使用する傾向があるので、試してみるだけで不足する可能性があるかどうかを知りたいです。 また、上記の質問は私が知りたいと思うものだけであると理解されるべきですが、私は明らかに最初に尋ねなければならないので、私はこの点で最もよく知らないかもしれず、それらは厳しい要件と見なされるべきではありません答え。可能であれば手掛かりをお願いします。

3
シェルメタキャラクターとしての^の使用
今日私は含まれている小さなスクリプトを書きました grep -q ^local0 /etc/syslog.conf レビュー中、同僚は、Bourneシェルの「パイプ」を意味する^local0ため、引用することを提案し^ました。この主張に驚いて、私はこれに言及した参考文献を追跡しようとしました。インターネット上でこれが問題だと示唆するものはありませんでした。 ただし、bshAIX 7の(Bourneシェルであると主張する)の実装には、実際に次の動作があることがわかります。 > bsh $ ls ^ wc 23 23 183 $ ls | wc 23 23 183 私が試した他の「Bourneシェル」実装は、この方法で動作し^ませんでした(つまり、シェルメタキャラクターとはみなされません)。shCentOS(実際にはbash)とshFreeBSD(bashではない)で試しました。他に試すシステムはあまりありません。 この動作は予想されますか?どのシェル^がパイプメタキャラクターと見なされますか?

4
現在のシェルを確認するcheckbashisms準拠の方法
私.profileので、次のコードを使用して、ログインシェルが実際にBashである場合にのみBash関連のエイリアスと関数がソースされるようにします。 # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 現在、シェル構成ファイル、スクリプト、および関数をバージョン管理下に置いています。また、最近、Bash固有の機能の恩恵を受けないカジュアルなBashismをシェルスクリプトから削除するプロセスを開始function funcname()しましたfuncname()。たとえば、に置き換えます。 シェルファイルリポジトリには、リポジトリ内の各ファイルでDebianのdevscriptsパッケージからユーティリティを実行するpre-commitフックを設定し、Bash固有の構文を誤って導入しないようにしました。ただし、これによりmyのエラーが発生します。checkbashismssh.profile possible bashism in .profile line 51 ($BASH_SOMETHING): if [ "${BASH_VERSION:-}" ]; then 私は、どのシェルが実行されているかをチェックする方法があり、それが警告をトリガーしないかどうか疑問に思っていましたcheckbashisms。 POSIXによってリストされたシェル関連の変数のリストをチェックして、現在のシェルを表示するために使用できることを期待しました。また、インタラクティブなDashシェルで設定された変数を調べましたが、適切な候補を見つけることができませんでした。 現時点では、.profile処理対象から除外していますcheckbashisms。小さいファイルなので、手動で確認するのは難しくありません。ただし、問題を調査した後、実行中のシェル(または少なくともcheckbashisms失敗を引き起こさない方法)を判別するPOSIX準拠のメソッドがあるかどうかを知りたいと思います。 さらなる背景/説明 …

2
ポータブルスクリプトを記述することが重要なのはいつですか?
私が書くコードのほとんどはPHPにあります。最近、シェルスクリプトの学習を始めました。私が出会ったほとんどのリソースとチュートリアルは、Bashに固有のものです。バシズムについて警告する人もいれば、警告しない人もいます。私はこことStack Overflowについてたくさん読んでいます。 答えがbashismsを使用するときは常に、誰かが次のようにコメントすることは避けられません。 <bashismをここに挿入>は使用しないでください。ポータブルではありません。 これは、質問にがタグ付けされている場合でも発生しbashます。私にとって、それはPHP 4で使用できないため、PHP 5の新しいコードを使用すべきではないことをPHPプログラマーに伝えるようなものです。 Windowsで。 PHPで作成する場合、最小要件を選択し、前方互換コードを作成します。下位互換性について心配する必要はありません。 #!/bin/bashシバンとして使用する場合、なぜバシズムを使用してはいけないのですか?私は、一部の人々がちょうどそれのためにバシズムをバッシングすること(意図されたしゃれ)を好むという印象を受け始めています。 多くの場合bash、shellbashは多くのシステムでデフォルトのシェルであるという事実により、人々は頻繁に使用し、交換可能です。したがって、コードがバシズムを使用していることを警告するコメントを追加することは理解できますが、それらを使用することは間違っているという意味を理解していません。 明らかに、私が個人的に使用するためだけにスクリプトを書いている場合、私は好きな言語でそれを書くことができます。しかし、私が書いたコードの一部は他の人にとっても役立つと思いたいです。 投稿する前に質問の答えを探してみました。移植性をテストする方法に関する多くの情報を見つけましたが、そうすることが重要な場合については何も見つかりませんでした。 それで、いつ移植可能なスクリプトを書くことが重要ですか? 例えば、 どんな種類のスクリプトを可能な限り移植可能にするべきですか? Bashがインストールされていないシステムはどのくらい一般的ですか? システムにBashがインストールされている場合、GNUバージョンのfindおよびその他のユーティリティもありますか?

2
/ dev / {udp、tcp}はどこでも標準化されていますか?
私は最近、/dev/udpおよび/dev/tcp擬似デバイスについてここで学びました。それらはいくつかのGNU / Linuxディストリビューションに固有のものですか、それとも他のUNIXシステムで見つけることができますか? それらは何らかの形で標準化されていますか? これまでのところ、OS X、Arch Linux、CentOSでそれらを正常に使用することができました。
17 devices  tcp  udp  portability 

8
バイナリは異なるCPUアーキテクチャ間で移植可能ですか?
私の目標は、組み込みLinux向けに開発できるようにすることです。ARMを使用したベアメタル組み込みシステムの経験があります。 さまざまなCPUターゲット向けの開発に関する一般的な質問があります。私の質問は次のとおりです。 ' x86ターゲット、Linux OSバージョンxyz 'で実行するようにコンパイルされたアプリケーションがある場合、別のシステム ' ARMターゲット、linux OSバージョンxyz 'で同じコンパイル済みバイナリを実行できますか? 上記が当てはまらない場合、唯一の方法は、関連するツールチェーン「たとえば、arm-linux-gnueabi」を使用してアプリケーションのソースコードを再構築/再コンパイルすることです? 同様に、「x86ターゲット、Linux OSバージョンxyz」で動作するロード可能なカーネルモジュール(デバイスドライバー)がある場合、別のシステム「ARMターゲット、Linux OSバージョンxyz」で同じコンパイル済み.koをロード/使用できますか? 上記が当てはまらない場合、唯一の方法は、関連するツールチェーン「たとえば、arm-linux-gnueabi」を使用してドライバのソースコードを再構築/再コンパイルすることです?

2
OSXでのstatの出力
statコマンドを使用してファイルに関する情報を取得したい。これは私がしました: Josephs-MacBook-Pro:Desktop Joseph$ echo 'hello' > info.txt Josephs-MacBook-Pro:Desktop Joseph$ stat info.txt 16777220 21195549 -rw-r--r-- 1 Joseph staff 0 6 "Dec 21 20:45:31 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" 4096 8 0 info.txt 3行目と4行目は、私が得た出力です。これは、statコマンドを使用するたびに発生します。一方、インターネット上の誰もが次のようなものを取得します。 File: `index.htm' Size: 17137 Blocks: 40 IO Block: 8192 regular …
15 osx  stat  portability 

2
最も移植性の高いsed、awk、perl、shはどれですか?
誰かがこれらのツールを移植性の順に並べることができますか?これらのうち、最小の* nixシステムでさえ確実に見つかるのはどれですか?それらのいずれかが100%確実に存在しますか?私の推測では、順序は次のとおりです。 awk sed sh perl Bourneシェルにデフォルト設定されていないシステムがあると想像しますが、一部のシェルはデフォルトとして存在します/bin/sh。ボーン型のシェルでない場合はおそらくそうではありません。両方awkとsedPOSIX仕様でそれらを説明するページがあるので、おそらくそれらは常に存在するでしょう。そうですか?いずれの* nixにも両方がインストールされると確信できますか?組み込みシステムを含めますか?

3
どのUNIXディストリビューションに、デフォルトインストールの一部としてPythonがインストールされていますか?
Pythonがデフォルトで使用可能な(最近の)UNIXディストリビューション(デフォルトのインストールの一部)を文書化する概要を知っている人はいますか? PS:質問がここに移動される前のStackOverflowからの回答: すべてのUnix OSについてはわかりませんが、Linuxの場合はいつでもdistrowatch.orgを確認できます。しかし、これはこの種の質問を投稿するのに適したサイトではありません。これをunix.stackexchange.comに移動してください– vstrien 2時間前 デフォルトでインストールされていないディストリビューションは考えられません。最近、多くの基本的なシステムツールがPythonで記述されています。–ダニエルローズマン1時間前 LFSにはデフォルトではインストールされません... – Oz123 1時間前

2
ターミナルエミュレータを起動する最もポータブルな方法は何ですか?
ターミナルを起動してコマンドを実行するスクリプトを作成する必要があり、さまざまなシステムで動作する必要があるとします。安全でポータブルな方法でそれを行うにはどうすればよいですか? されxterm、常にインストールされていますか?GUIを備えた* nixにはターミナルエミュレータが必要であると思います。どうすれば到達できますか?Debianシステムには Red Hatで動作するものはないようですがx-terminal-emulator、Linux以外の* nix はありません。

2
BashとZsh以外のシェルはANSI-Cクォートをサポートしていますか?例:$ 'string'
出力に緑色のチェックマークを出力するために次を使用するシェルスクリプトがあります。 col_green="\e[32;01m" col_reset="\e[39;49;00m" echo -e "Done ${col_green}✓${col_reset}" BashのANSI-C Quotingについて読んだ後、色変数を設定-eし、echoからフラグを削除するときに使用できることに気付きました。 col_green=$'\e[32;01m' col_reset=$'\e[39;49;00m' echo "Done ${col_green}✓${col_reset}" これは、Bashの組み込みエコーまたは外部ユーティリティ/bin/echo(私はmacOS上にある)に渡されたメッセージが正しく印刷されることを意味するため、魅力的です。 しかし、これによりスクリプトの移植性が低下しますか?BashとZshがこのスタイルの引用をサポートしていることは知っていますが、他のことについてはわかりません。

7
kshのバージョンを安全に入手するにはどうすればよいですか?
kshスクリプト内からkshのバージョンを安全に取得するにはどうすればよいですか? 私は次の解決策を見ました: ksh --version echo ${.sh.version} echo $KSH_VERSION そして、適切な状況を考えると、これらはそれぞれ正常に機能します。しかし、私は完璧ではないケースに関心があります。 具体的には、古いバージョンのkshを使用しているいくつかのマシンがありますが、私の目的のために、機能が大幅に不足しています。とにかく、バージョンを(プログラムで)チェックする理由は、kshバージョンが性能の低いバージョンの1つであるかどうかを確認するためです。もしそうなら、あまり素晴らしいコードではないブランチを実行したいです。 しかし、問題のあるマシンでは、シェルの無能さはバージョンのチェックにまで及びます... 試してみるとksh --version、何も表示されず、ksh!の新しいインスタンスが開きます。 私が試みるならecho ${.sh.version}、kshこれを捨てることができない構文エラーとしてこれを扱います2> /dev/null。 $ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution もちろんecho $KSH_VERSION正常に動作するように見えます-クラッシュしないことを意味します-これらのマシンでは空白です。また、私は見たどこかKSH_VERSIONのみで設定されているがpdksh。 質問: kshプログラムでバージョンを安全に確認するにはどうすればよいですか?ここでの目的のために、実際のバージョン番号が何であるかは気にしませんksh。それがの古いバージョンであるかどうかだけです。 で$KSH_VERSION十分に良いですか?空白の場合、ksh必然的に古いバージョンですか?他のフォーラムは正しいのkshですか? これを確認する方法はまったくありませんか?

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