Unix & Linux

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

2
単一のプログラム実行の言語を設定する
完全なC ++ i18n gettext()「hello world」の例。プログラムを実行する前に、エクスポートを使用してLANG環境変数を設定します(Linux): export LANG=es_MX.utf8 ./hellogt コマンドライン引数のように、hellogtの実行中に言語を設定する方法はありますか?これは、プログラムのテストに便利です。

3
位置を特定し、sedを使用して変更を加える
このスクリプトは、sedを使用してすべての「」を「新しいもの」に変更します。yyyの後の「」だけをどのように変更しますか:sedなどを使用しますか? cat >sample.txt <<EOF xxx: "" yyy: "" } EOF sed --expression='s/""/"new stuff"/' sample.txt
11 sed 


7
「:0」以外の表示はどこにありますか?
X Power Tools -bookには「:0」に関する文があります。 ローカル接続スキームで接続されたローカルコンピューターで0を表示します 「xclock -display:2」でクロックを開こうとしましたが、エラーが発生しました。 ディスプレイを開けません::2 ディスプレイを動作させることができない場合、どのようにプログラムするのですか?あなたは本当にそれですべてをすることができますか?ディスプレイ3および999でVimやgccなどのプログラムを実行するにはどうすればよいですか?彼らはどこにいる?
11 x11 

1
Bashは2つのシェルプロンプトを書き込もうとしますか?
教育目的で、ターミナルに接続された実行中のbashプロセスのstrace出力を調べています。 私のbashプロセスにはPID 2883があります。 私はタイプする [OP@localhost ~]$ strace -e trace=openat,read,write,fork,vfork,clone,execve -p 2883 2> bash.strace ターミナルへ。次に、bashプロセスに進み、次の対話を行います。 [OP@localhost ~]$ ls 出力を見ると、 strace: Process 2883 attached read(0, "l", 1) = 1 write(2, "l", 1) = 1 read(0, "s", 1) = 1 write(2, "s", 1) = 1 read(0, "\r", 1) = 1 write(2, "\n", 1) …
11 bash  tty  strace 

1
whileループの入力リダイレクト演算子の順序を逆にできないのはなぜですか?
Bashでは、入力リダイレクト演算子をコマンドの前に移動できます。 cat <<< "hello" # equivalent to <<< "hello" cat なぜ同じことをwhileループにできないのですか? while read -r line; do echo "$line"; done <<< "hello" # hello <<< "hello" while read -r line; do echo "$line"; done # -bash: syntax error near unexpected token `do' whileループにパイプできるので、少しわかりにくいです。私は何か間違ったことをしていますか、それとも単なる設計上の決定でしたか?

3
sh(bashではなく)が.bashrcで定義された関数について不平を言うのはなぜですか?
ターミナルセッションを開くと、これが表示されます。 sh: `read.json 'の関数定義のインポートエラー sh: `ts-project 'の関数定義のインポートエラー shは次のように見えるため、これらの関数が好きではありません。 read.json(){ :: } そして ts-project(){ :: } 本当の質問は-なぜshこれらのファイルに触れる/解釈するのですか?私はMacOSを使用していて、以前にこれを見たことがあります。それはとても謎です。これらのファイルを読み込むのはbashだけだと思います。 更新:bashとshは普通のことではありません。ターミナルにbashと入力すると、次のようになります。 alex$ bash beginning to load .bashrc finished loading .bashrc bash-3.2$ shターミナルに入力すると、これが得られます: alex$ sh sh: error importing function definition for `read.json' sh: error importing function definition for `ts-project' sh-3.2$

5
gzipはアトミックですか?
あるgzip原子の? gzipファイルのgzip圧縮の最中にプロセスを停止するとどうなりますか? アトミックではなく、gzip *.txtプロセスですでにCtrl + Cを押した場合、どのようにして安全に再開できますか? (私は再開する方法についてだけでなく、gzip具体的にはアトミックかどうかについても知りたいです。)

1
POSIX sedは、アドレス範囲が既に削除された行から始まる `1d; 1,2d`に何を必要としますか?
この質問へのコメントで、さまざまなsed実装がかなり単純なプログラムで同意しない場合があり、私たち(または少なくとも私)は、仕様が実際にそれに対して必要とするものを決定できませんでした。 問題は、削除された行から始まる範囲の動作です: 1d;1,2d そのコマンドに到達する前に範囲の開始が削除された場合でも、行2を削除する必要がありますか?私の当初の期待はBSD sedに沿って「いいえ」でしたが、GNU sedは「はい」と言っており、仕様テキストをチェックしても問題は完全には解決しません。 私の予想に一致するのは、(少なくとも)macOSとSolaris sed、およびBSD sedです。反対は(少なくとも)GNUとBusybox sedであり、多くの人々がここにいます。最初の2つはSUS認定で、他の2つはより普及している可能性があります。どの動作が正しいですか? 2アドレス範囲の仕様書には次のように記載されています。 sedのコマンドは、次のサイクルが終了しますかを開始するまでのユーティリティはその後、順番にそのアドレスがそのパターンスペースを選択するすべてのコマンドを適用しなければなりません。 そして 2つのアドレスを持つ編集コマンドは、最初のアドレスに一致する最初のパターンスペースから2番目のアドレスに一致する次のパターンスペースまでの包括的な範囲を選択します。[...]選択した範囲に続く最初の行から開始して、sedは最初のアドレスを再度探します。その後、プロセスが繰り返されます。 おそらく、ライン2がある 範囲内にかかわらず開始点が削除されたかどうかの、「第二に一致する次のパターン空間を介して第1のアドレスと一致する第1のパターン領域からの包含範囲」。一方、私は最初dが次のサイクルに移動し、範囲に開始する機会を与えないことを期待していました。UNIX™認定の実装は、私が期待したことを実行しますが、仕様で要求されていることを潜在的に実行しません。 いくつかの実例となる実験が続きますが、重要な問題は、削除された行で範囲が始まるときに何をすべき sedかです。 実験と例 問題の簡単なデモンストレーションはこれです。これは、行を削除するのではなく、余分なコピーを印刷します。 printf 'a\nb\n' | sed -e '1d;1,2p' これは、提供するsed入力の2行、aおよびb。プログラムは2つのことを行います。 で最初の行を削除し1dます。dコマンド意志 パターンスペースを削除し、次のサイクルを開始します。そして 各行が受け取る自動印刷に加えて、1から2までの行の範囲を選択して明示的に印刷します。したがって、範囲に含まれる行は2回表示されます。 私の期待は、これが印刷されることでした b ただ、1,21行目で到達できないため(d次のサイクル/行に既にジャンプしているため)範囲aが適用されず、範囲の包含は決して開始されず、削除されます。SolarisおよびBSDの一般的なsed非POSIXと同様に、macOSおよびSolaris 10 の準拠するUnixがこの出力を生成します。sedsed 一方、GNU sedは印刷します b b 範囲を解釈したことを示します。これはPOSIXモードでもそうでない場合でも発生します。Busyboxのsedは同じ動作をします(ただし、常に同じ動作とは限らないため、共有コードの結果ではないようです)。 さらなる実験 printf 'a\nb\nc\nd\ne\n' | sed -e '2d;2,/c/p' printf 'a\nb\nc\nd\ne\n' | …
11 sed  posix 

2
ファイル挿入システムコールがないのはなぜですか
私の理解では、ファイルを操作するためのLinuxにはsys_write syscallしかありません。これはファイルの内容を上書きします(最後にある場合は拡張します)。 Linuxのファイルにコンテンツを挿入または削除するためのsyscallがないのはなぜですか? 現在のすべてのファイルシステムでは、ファイルを連続メモリブロックに格納する必要がないため、効率的な実装が可能です。(ファイルは断片化されます。) 「書き込み時のコピー」または「透過的なファイル圧縮」などのファイルシステム機能では、コンテンツを挿入する現在の方法は非常に非効率的です。

2
このbashパイプ構造を使用すると、なぜデータが失われたように見えるのですか?
私はそのようないくつかのプログラムを組み合わせようとしています(余分なインクルードは無視してください、これは進行中の重い作業です): pv -q -l -L 1 < input.csv | ./repeat <(nc "host" 1234) 繰り返しプログラムのソースは次のようになります。 #include <fcntl.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/epoll.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <iostream> #include <string> inline std::string readline(int fd, const size_t len, const char delim = '\n') { std::string …

6
特定の日にシャットダウン
を介して特定の時間にシャットダウンをスケジュールできること、shutdown -h 21:45およびそのような性質のためにcrontabを使用すべきではないことを知っています。8月31日午後20:00のような特定の日付にシャットダウンをスケジュールするにはどうすればよいですか?
11 ubuntu  shutdown 

2
区切り文字の前にn文字がないすべての行を削除します
私は非常に長いテキストファイル(ここから)を作成し、6つの16進文字と「改行」(1つの文字として表示され、以下のコードマークダウンに適切に表示されないようです)とそれに続くいくつかの単語を含める必要があります。 00107B Cisco Systems, Inc 00906D Cisco Systems, Inc 0090BF Cisco Systems, Inc 5080 Cisco Systems, Inc 0E+00 ASUSTek COMPUTER INC. 000C6E ASUSTek COMPUTER INC. 001BFC ASUSTek COMPUTER INC. 001E8C ASUSTek COMPUTER INC. 0015F2 ASUSTek COMPUTER INC. 2354 ASUSTek COMPUTER INC. 001FC6 ASUSTek COMPUTER INC. 60182E ShenZhen Protruly Electronic Ltd …


2
Bashスクリプトは、起動した別のスクリプトのインスタンスのみを強制終了する必要があります
現在の状況では、特定のスクリプト「calling.sh」がバックグラウンドで別のスクリプト「called.sh」を起動し、他の操作を実行し、しばらくの間スリープし、その後「called.sh」をで終了しますpkill called.sh。これは正常に機能します。 次に、calling.shを起動する前でも後でも、他の端末からスタンドアロンのスクリプトとして「called.sh」を起動します。これらの独立したインスタンスは、「calling.sh」によって強制終了されるべきではありません。 どうすればこれを達成できますか?直観によると、呼び出し元のスクリプトは、その間に実行されている他の名前の由来から開始したプロセスを伝えることができるはずです。 変種として、「calling.sh」は「called.sh」へのシンボリックリンクである「called」を起動することもあります。これは上記の状況の管理を複雑にしますか?シンボリックリンクを使用するには、どのような注意と調整が必要ですか。
11 bash  process 

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