Unix & Linux

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

1
ディレクトリリストが完全にソートされていない
Debian Linuxシステムに次のディレクトリリストがあります。ただし、奇妙なことの1つは、populate.sqlファイルが他のファイルと共にソートされていないように見えることです。 -rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql -rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql -rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql -rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql -rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql -rw-r--r-- 1 user1 …

1
suidビットがディレクトリに影響せず、スティッキービットがファイルに影響しない場合、なぜそれらが1ビットに結合されないのですか?
これはファイルごとに1ビット節約しますか、それともとにかく使用しなければならない必要なパディングがありますか?そして、パディングがあったとしても、それらを組み合わせて新しい機能のために余分なビットを利用してみませんか?

1
bashは、「IFS」変数の値に応じて動作を変更します
IFS変数をスペースに設定すると、bash複数のスペースを1つのスペースとして扱います(myprogram受け取ったコマンドライン引数を出力するプログラムです)。 IFS=" " x="hello hi world" ./myprogram $x argv[1] = hello argv[2] = hi argv[3] = world しかし、IFS変数をコンマに設定すると、bash複数のコンマが1つのコンマとして扱われません。 IFS="," x="hello,,,hi,,,world" ./myprogram $x argv[1] = hello argv[2] = argv[3] = argv[4] = hi argv[5] = argv[6] = argv[7] = world 何故ですか?
18 bash  shell 

2
`echo $((0x63))`を理解する
コマンドラインで16進数に変換する方法を探していて、非常に簡単な方法があることがわかりましたecho $((0x63))。 それはうまく機能していますが、ここで何が起こっているのか少し混乱しています。 私$(...)は通常、内容が外部コマンドの前に評価されるサブシェルであることを知っています。 この状況ではまだサブシェルですか?私は、サブシェルが(0x63)コマンドではないものを評価しているだけではないことを考えています。 誰かが私のためにコマンドを分解できますか?
18 bash 

2
このスクリプトが端末では機能するのにファイルでは機能しないのはなぜですか?
このシェルスクリプトをファイルに保存しました。基本的な文字列の置換を行います。 #!/bin/sh html_file=$1 echo "html_file = $html_file" substr=.pdf pdf_file="${html_file/.html/.pdf}" echo "pdf_file = $pdf_file" コマンドラインに貼り付けると、正常に機能します。 $ html_file="/home/max/for_pauld/test_no_base64.html" echo "html_file = $html_file" substr=.pdf pdf_file="${html_file/.html/.pdf}" echo "pdf_file = $pdf_file" 与える html_file = /home/max/for_pauld/test_no_base64.html pdf_file = /home/max/for_pauld/test_no_base64.pdf これが上記のechoの出力です-意図したとおりに機能しています。 しかし、スクリプトを呼び出すと、 $ saucer "/home/max/for_pauld/test_no_base64.html" 私はこの出力を取得します: html_file = /home/max/for_pauld/test_no_base64.html /home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution 私のスクリプトは別のバージョンのbashなどを使用していますか?シバンのラインを変更する必要がありますか?
18 bash  string 

3
Macアプリはどのようにしてファイルの場所を追跡できますか?
Macで次のような動作を観察します。 PDF ExpertでPDFを開き、ファイルにいくつかの変更を加え、Finderでファイルを移動し、PDF Expertで保存すると、新しい場所に正しく保存されます。 などのディレクトリでシェルを開き、~/foo別のアプリでディレクトリをゴミ箱に移動すると、シェルのpwdが正しく出力します~/.Trash/foo。 フードの下で何が起こっているのですか?これらのケースは、アプリがemacsのようなファイルの絶対パスを保持しているだけではないことを示しているようですが(これでいいのでしょうか)、それともまったく異なるメカニズムですか?
18 files  filesystems  osx 

3
引用符で囲まれた変数のオプションが失敗するのはなぜですか?
私は、bfooで変数を引用する必要があることを読みました。たとえば、$ fooではなく「$ foo」です。しかし、スクリプトを書いているときに、引用符なしでは機能するが、引用符なしでは機能しないケースを見つけました。 wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX received from command line これは動作します: wget $wget_options --directory_prefix="$local_root" "$remote_root$relative_path" これはしません($ wget_optionsの前後の二重引用符に注意してください): wget "$wget_options" --directory_prefix="$local_root" "$remote_root$relative_path" この理由は何ですか? 最初の行は良いバージョンです。または、この動作の原因となる隠しエラーがあると疑うべきですか? 一般に、bashとその引用がどのように機能するかを理解するための優れたドキュメントはどこにありますか?このスクリプトを書いている間、私はルールを理解するのではなく、試行錯誤のベースに取り組み始めたと感じています。

4
/ binの内容を/ usr / binに移動し、元に戻すことができますか?
Ubuntu 17.04を実行して、非リポジトリディストリビューションからソフトウェアをインストールしていました。ソフトウェアbin -folderの内容を/ usr / binに移動することになっていました(これはすでにわかりにくいアドバイスでした) それは当時の一つなので、私が代わりにしたこと: mv /bin/* /usr/bin だから私はめちゃくちゃにして、誤ってbin内のすべてのファイルを/ usr / binに移動しましたが、/ binは空でした。/ binはシステムに不可欠であると考えているため、迅速な対処のために、/ usr / binの内容を/ binにコピーしました。 これで、/ binと/ usr / binの内容は同じになり、両方とも元々/ binと/ usr / binに分離されたファイルが含まれます。 現在、Ubuntuは壊れた状態ですか?(まだコンピューターを再起動しようとしませんでした、今はすべてがまだ動作しているようです) どのファイルが最近/ usr / binに移動/コピーされたかを知る方法はありますか?2.1通常、/ binと/ usr / binに重複するファイルがありますか 私がしたことを元に戻す他の方法はありますか? 私はタイムシフトをインストールしていないので、バックアップの復元はオプションではありませんが、現在のコンピューターには重要なものは何もありません。
18 linux  ubuntu  mv 

2
ソケットパスの長さが100文字に制限されているのはなぜですか?
Unixシステムでは、パス名には通常、長さの制限はほとんどありません(Linuxでは4096文字)...ソケットファイルのパスは100文字(Linuxでは 107文字)に制限されています。 最初の質問:なぜそんなに低い制限があるのか​​? 私はそれはいくつかのソケットが同じパスを使用して、すべてのファイルを現在の作業ディレクトリを変更し、さまざまなディレクトリに作成することによって、この制限を回避することが可能と思われることを確認しました./myfile.sockクライアントアプリケーションが正しく偶数かかわらず、期待されるサーバプロセスに接続するように見える:lsofショーのすべて同じソケットファイルパスでリッスンします。 この回避策は信頼性がありますか、それとも私は幸運でしたか? この動作はLinux固有のものですか、またはこの回避策は他のUnixにも適用できますか?

4
CentOS-killallコマンド(指定されたパターンに一致する名前を持つすべてのプロセスを強制終了する)
最近、CentOSを使い始めました。killallユーティリティを使用しようとしましたが、見つからないため、command not found使用しようとするとメッセージが表示されました。たとえば、名前がパターンに一致するすべてのプロセスを強制終了できるように、システムでこの機能を取得するにはどうすればよいですか?
18 centos 

2
btrfsはどのext4機能をサポートしていませんか?
btrfs(「better fs」と発音されることが多い)には、ext4にはない機能がかなりあります。 ただし、btrfsとext4の機能を比較すると、btrfsには何が欠けていますか?1 言い換えれば、btrfsではできないext4で何ができますか? 1 ext4は非常に広く使用されているため、btrfsのより少ない戦場テストを無視する



2
/ dev / nullへのリダイレクトに単一または二重の山括弧を使用する必要がありますか?
ほとんどの回答はここ[ 1 ] [ 2 ] [ 3 ]で、単一の山括弧を使用して/ dev / nullにリダイレクトします。 command > /dev/null ただし、/ dev / nullへの追加も機能します。 command >> /dev/null 余分なキャラクターを除いて、これをしない理由はありますか?これらのいずれかは、/ dev / nullの基礎となる実装に対して「より良い」ものですか? 編集:オープン(2) manページは言うのlseekは追加モードでファイルへの各書き込みの前に呼び出されます。 O_APPEND ファイルは追加モードで開かれます。各write(2)の前に、ファイルオフセットは、lseek(2)の場合と同様に、ファイルの末尾に配置されます。ファイルオフセットの変更と書き込み操作は、単一のアトミックステップとして実行されます。 を使用すると、パフォーマンスがわずかに低下する可能性があると思います>>。しかし、その一方で、/ dev / nullの切り捨ては、そのドキュメントによると、未定義の操作のように思われます。 O_TRUNC ファイルが既に存在し、通常のファイルであり、アクセスモードで書き込みが許可されている場合(つまり、O_RDWRまたはO_WRONLY)、長さ0に切り捨てられます。ファイルがFIFOまたは端末デバイスファイルの場合、O_TRUNCフラグは無視されます。それ以外の場合、O_TRUNCの効果は指定されていません。 およびPOSIX仕様は述べている>既存のファイルを切り捨てるものとするが、O_TRUNCは実装定義のデバイスファイルのためであると切り捨てられることに対応すべきかを/ dev / nullには単語がありません。 したがって、/ dev / nullの切り捨ては実際には指定されていませんか?また、lseek呼び出しは書き込みパフォーマンスに影響を与えますか?

3
awk繰り返し{n}が機能していません
繰り返し記号{n}を使用して行を印刷しようとしていますが、機能していません。にとって。たとえば、長さが4文字のすべての行を印刷したい awk '/^.{4}$/' test_data 上記のコードはそれを印刷していません。繰り返し記号を使用できるように修正する方法は?私のような選択肢を知っているawk '/^....$/' test_dataし、awk 'length ==3 ' test_data

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