Unix & Linux

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

2
ファイルがPOSIXで定義されたテキストファイルであるためには、どのような条件を満たす必要がありますか?
POSIXは、テキストファイルを次のように定義します。 0個以上の行に編成された文字を含むファイル。行にはNUL文字が含まれておらず、<newline>文字を含めて、長さが{LINE_MAX}バイトを超えることはできません。POSIX.1-2017はテキストファイルとバイナリファイルを区別しませんが(ISO C標準を参照)、多くのユーティリティは、テキストファイルを操作する場合にのみ予測可能または意味のある出力を生成します。このような制限がある標準ユーティリティは、STDINまたはINPUT FILESセクションで常に「テキストファイル」を指定します。 ソース:http : //pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403 ただし、いくつか不明確なことがあります。 テキストファイルは通常のファイルである必要がありますか?上記の抜粋では、ファイルが通常のファイルでなければならないことを明示的に示していません 1つの文字と1つの文字のみ(つまり、改行で終わらない単一の文字)が含まれている場合、ファイルをテキストファイルと見なすことはできますか?この質問はきちんと聞こえるかもしれませんが、「1つ以上の文字」ではなく「文字」という言葉を使用しています。他の人は同意しないかもしれませんが、「1つ以上の文字」を意味する場合は、明示的に言う必要があると思います 上記の抜粋では、「行」を参照しています。名前に「空の行」、「表示行」、「不完全な行」、「行」という名前の行がある4つの定義が見つかりました。「空」、「表示」、「不完全」が省略されているため、「行」を意味すると推測するのか、またはこれらの定義の4つすべてが上記の抜粋の行と見なされているのですか? このテキストブロックの後に来るすべての質問は、「文字」が「1つ以上の文字」を意味するという推論に依存しています。 ファイルが空の場合、1つ以上の文字が含まれていないため、テキストファイルではないと推測できますか? このテキストブロックの後に来るすべての質問は、上記の抜粋では、行が「行」として定義され、名前に「行」を含む他の3つの定義は除外されるべきであるという推論に依存します: 「ゼロ行以上」の「ゼロ」は、改行で終わらない1つ以上の文字が含まれているファイルがテキストファイルと見なされることを意味しますか? 「ゼロ以上の行」とは、1つの「行」(0以上の文字と終了する改行)が登場すると、最後の行が「不完全な行」(1つ以上の非行ファイルの最後の改行文字)? 「なし[行なし]は、改行文字を含めて{LINE_MAX}バイトを超えることはできません」とは、テキストファイル内の特定の「行」で許可される文字数に制限があることを意味しますかUbuntu 18.04およびFreeBSD 11.1のLINE_MAXは「2048」ですか?
22 files  posix  text 

2
埋め込まれた(引用符で囲まれた)JSON文字列をJSONに変換する方法
jsonを解析するための「jq」に精通しています。 私は、プロパティの1つがそれ自体がjson文字列であるjson応答を生成する1つのサービスを使用しています。引用符で囲まれた値を有効なjson文字列に変換して、jqで処理できるようにするにはどうすればよいですか? たとえば、「jq」から単純にきれいに印刷されたjsonを表示する場合、出力の短い抜粋を次に示します。 "someJsonString": "{\"date\":\"2018-01-08\", ... jqを使用してそのプロパティの値を取得できますが、引用符で囲まれた文字列を「アンエスケープ」して有効なjsonに変換する必要があります。 パイプをsedにパイプして、開始と終了の二重引用符を削除し、すべてのバックスラッシュ( " sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'")を削除できると思います。それはうまくいくようですが、それは最も堅牢なソリューションのようには見えません。 更新: 私がやっていることをもう少し明確にするために、私が試したことを示すいくつかの省略されたサンプルがあります: % curl -s -q -L 'http://.../1524.json' | jq '.results[0].someJsonString' | jq . "{\"date\":\"2018-01-08\",... % echo $(curl -s -q -L 'http:/.../1524.json' | jq '.results[0].someJsonString') | jq . "{\"date\":\"2018-01-08\",... 更新: 完全にスタンドアロンの例を次に示します。 % cat stuff.json …
22 json  jq 

2
macOS rmコマンドの「-W」オプション-元に戻す
私はrm自分のMacBookでコマンドのマニュアルページを見ていましたが、次のことに気付きました。 -W名前付きファイルの削除を取り消そうとします。現在、このオプションは、ホワイトアウトの対象となっているファイルを回復するためにのみ使用できます。 これは何を意味するのでしょうか?「ホワイトアウト」とは何ですか?
22 files  osx  rm  deleted-files 


3
スクリプトを実行する最速の方法は何ですか?
私はスクリプトを実行する最速の方法は何だろうと思っていました、私は端末でスクリプトの出力を表示するか、ファイルにリダイレクトするか、または場合によっては速度が異なることを読んでいます/dev/null。 したがって、出力が重要でない場合、スクリプトが最小であっても、スクリプトをより速く動作させるための最速の方法は何ですか? bash ./myscript.sh -or- bash ./myscript.sh > myfile.log -or- bash ./myscript.sh > /dev/null
22 linux  bash 


1
SELinuxルールは、標準のLinux許可の前後に実施されますか?
SELinuxがシステムにインストールされている場合、標準のLinux許可の前後にルールが適用されますか?たとえば、非ルートLinuxユーザーがLinuxパーミッションでファイルに書き込もうとすると、-rw------- root rootSELinuxルールが最初にチェックされますか、それとも標準ファイルシステムパーミッションが適用され、SELinuxは呼び出されませんか?

4
選択をtmuxのクリップボードにコピーします
macOSのiTerm2のtmuxでマウスでテキストを選択すると、選択したテキストがクリップボードにコピーされます。余分なボタンをクリックする必要はありません-必要なテキストを選択するだけで完了です。 macOSのterminal.appでtmuxをテストしましたが、そこでは動作しません- y選択をクリップボードにコピーするにはヒットする必要があります。 マウスバインディング(にMouseOnSelection似たようなものMouseDown1Pane)があると考えましたが、Webやで有用なものを見つけることができませんでしたman tmux。 Ubuntu 16.10-できればGnomeターミナルでも同様の動作をする方法があるのだろうか。 私のtmuxドットファイルはこちら(リンク)から入手できます。
22 tmux  clipboard 

1
systemd-journaldはsyslog実装ですか?
systemd-journaldはsyslogプロトコルの新しい実装なのか、それともrsyslog、syslog-ngなどのsyslog実装を使用するのか 私は少しグーグルで調べましたが、それについて納得できるものは何も見つかりませんでした。


2
bashスクリプトの最後の終了コード
bashスクリプトの最後にある終了コードの意味について混乱しています:終了コード0は正常に終了したことを意味し、終了コード番号(もっと間違えなければ127)があることを知っています。 私の質問は、スクリプトの最後に終了コード0が表示される場合、スクリプトが失敗した場合や別の意味がある場合でも、終了コードを強制的に0に設定することです。

1
コロンがパス区切り文字として選択された理由
コロン(:)がパス区切り文字として選択されたのはなぜですか? 「ディレクトリセパレータ」ではなく「パスセパレータ」を意味することに注意してください。パス区切り記号は、PATH環境変数のエントリ間に配置される記号です。 PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..." ^ this symbol コンピューターとソフトウェアのすべては、かつてどこかで行われた意図的な決定でした。たとえば、チルダがホームディレクトリを表す理由(およびviの方向キーにhjklを使用する理由)。この決定の背景を知りたいです。 いくつかのランダムな事実: パス区切り文字としてコロンを使用すると、名前にコロンを含むディレクトリをパスに追加できなくなります。 POSIXから: 以来<colon>、この文脈では、セパレータで、PATHに使用されるかもしれないディレクトリ名が含まれてはならない<colon>文字が。 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html コロンをエスケープすることはできないようです。Stack Overflowの@ Random832は、PATHを処理するソースコードを検査しましたが、エスケープメカニズムは見つかりませんでした。 /programming/14661373/how-to-escape-colon-in-path-on-unix
22 path  history 


5
ハードリンクが同じファイルシステム内でのみ有効なのはなぜですか?
私はマーク・ベイツによるコマンドラインへのこのイントロを読んでいます。 最初の章で、彼はハードリンクがファイルシステムにまたがることができないことに言及しています。 ハードリンクについて注意すべき重要なことは、ハードリンクが現在のファイルシステムでのみ機能することです。別のファイルシステム上のファイルへのハードリンクを作成することはできません。これを行うには、シンボリックリンク、セクション1.4.3を使用する必要があります。 私が知っているファイルシステムは1つだけです。ルート(/)から始まるもの。ハードリンクがファイルシステムにまたがることはできないというこの声明は、私には意味がありません。 ウィキペディアのUnixファイルシステム上の記事では、どちらかの役に立ちません。

1
netfilter / iptables:生のテーブルを使用しないのはなぜですか?
Linuxでは、通常、「filter」テーブルを使用して一般的なフィルタリングを行います。 iptables --table filter --append INPUT --source 1.2.3.4 --jump DROP iptables --table filter --append INPUT --in-interface lo --jump ACCEPT 以下のnetfilterのフローチャートによると、パケットは最初に「生の」テーブルを通過します。 だから私たちは書くことができます: iptables --table raw --append PREROUTING --source 1.2.3.4 --jump DROP iptables --table raw --append PREROUTING --in-interface lo --jump ACCEPT パケットはconntrack + mangle + nat + routingを経由する必要なく、より早く処理されます。使用されるCPU /メモリがわずかに少ない(そしてiptable_rawモジュールをロードしなければならないという事実によってわずかに補正される) フィルター/転送に同じルールを追加する必要がないため、ボックスがルーターでもある場合のルールは1つだけです(すべてのルールで問題ないことは明らかです) 私は迅速なテストのみを行いましたが、これは完璧に機能します。 私が見つけたドキュメントでは、厳密な場合に使用される生のテーブルについて常に説明しています。しかし、最小の正当化さえも与えません。 …
22 linux  iptables 

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