Unix & Linux

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


2
chmodコマンドを選択的に使用する
特定のディレクトリの下にあるすべてのファイルとサブディレクトリに755権限を設定したいのですが、755権限のないコンポーネントに対してのみchmod 755を実行したいです。 find /main_directory/ -exec chmod 755 {} \; findコマンドが長いリストを返す場合、これには長い時間がかかります。statコマンドを使用して各コンポーネントのOctalファイルレベルのアクセス許可を確認し、if-elseを使用してファイルのアクセス許可を切り替えることができることはわかっていますが、単一行のアプローチを使用findしてxargs、最初にファイル/ディレクトリのアクセス許可を確認します、chmodそれが別の値に設定されている場合はを使用して755に変更します。

3
コマンド置換を介して別のコマンドの引数を生成するにはどうすればよいですか
次から: シェルコマンド置換での予期しない動作 私は引数の膨大なリストを取ることができるコマンドを持っています、それらのいくつかは合法的にスペースを含むことができます(そしておそらく他のもの) これらの引数を引用符で生成できるスクリプトを書きましたが、出力をコピーして貼り付ける必要があります。 ./somecommand <output on stdout with quoting> ./othercommand some_args <output from above> 私は単にすることでこれを合理化しようとしました ./othercommand $(./somecommand) そして、上記の問題で言及された予期しない動作に遭遇しました。問題はothercommand、いくつかの引数が引用符を必要とし、これを変更できないことを前提として、コマンド置換を使用して引数を確実に生成できるかどうかです。

4
ddを使用してランダムデータを書き込むとディスクパーティションが作成されるのはなぜですか?
ddコマンドを実行する前に、コマンドlsblkは以下の出力を返しました。 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk コマンドdd if=/dev/urandom of=/dev/sda conv=fsync status=progressが実行されます。ただし、デバイスは電力を失い、シャットダウンします。電源が回復すると、コマンドlsblkは次の出力を返します。 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk sda2 8:2 0 487.5G 0 disk
11 partition  dd  lsblk 

1
Gnu / LinuxをWindowsからすぐに信頼できる証明書を信頼させる方法は?
このSSLチェックで報告されているように、SSLチェーンが壊れているサーバーがあります。 これはサーバー自体で解決すべき問題であることはわかっていますが、修正するのが難しい場合があります(私はサーバーの管理者ではありません)。 問題は、Windows上のChrome / Mozilla / Edgeがとにかくサイト証明書を信頼することです: ただし、Gnu / Linux展開(DockerのUbuntu 18.04)では、証明書は信頼されません。 curl: (60) SSL certificate problem: unable to get local issuer certificate update-ca-certificatesGlobalsign Root証明書を試してインポートしました。update-ca-certificatesその場合、重複した証明書が報告されました。とにかく、何も機能しません。 再現方法 Dockerの使用: docker run -it ubuntu:18.04 # within container: apt-get update apt-get -y install curl curl https://betriebsheft.vog.it # <---- "unable to get local issuer certificate" Gnu …

2
環境変数を設定するコマンドのプレフィックスとして変数を使用できないのはなぜですか?
通常、次のように接頭辞を付けることで、コマンドの環境変数を設定できます。 hello=hi bash -c 'echo $hello' また、変数を使用して、次のようなコマンド呼び出しの任意の部分を置き換えることができることも知っています。 $ cmd=bash $ $cmd -c "echo hi" # equivalent to bash -c "echo hi" 環境変数を設定するコマンドの前に変数を使用できないことを知って、私は非常に驚きました。テストケース: $ prefix=hello=hi $ echo $prefix # prints hello=hi $ $prefix bash -c 'echo $hello' hello=hi: command not found 変数を使用して環境変数を設定できないのはなぜですか?プレフィックス部分は特別な部分ですか?前にevalを使用することで機能させることができましたが、それでも理由がわかりません。bash 4.4を使用しています。

2
`top -n1 | |を実行するとカーソルが消える 頭 `
実行中 top -n1 | head 端末のカーソルが消えます。実行するtop -n1と元に戻ります。 でテストgnome-terminalし、tilixUbuntuの16.04とCentOSの7.5に。 実行中にtop -n1 | tailこの問題は発生しないため、top出力の最後にカーソルが再表示されますが、これはhead唯一の印刷では実行されません。 何が原因で、カーソルをよりエレガントに戻すにはどうすればよいですか?

3
スーパーユーザープロセスは、プロセスの実際のユーザーIDとグループIDを変更できますが、パスワードファイルのIDと一致しませんか?
APUEから プロセスの実際のユーザーIDと実際のグループIDは、実際のユーザーを識別します。これらの2つのフィールドは、ログイン時にパスワードファイルのエントリから取得されます。通常、これらの値は、ログインセッション中に変更されませんが、スーパーユーザープロセスで変更する方法は あります スーパーユーザープロセスは、プロセスの実ユーザーIDと実グループIDを変更して、実ユーザーIDと実グループIDの関係がパスワードファイルの関係と一致しないようにできますか?ユーザは、たとえば、Timグループのメンバーではないoceanパスワードファイルあたり、スーパーユーザープロセスがあることを実ユーザIDとプロセスの実グループIDを変更することができますTimし、oceanそれぞれ?
11 linux  users  group 

3
このスクリプトで開いているプロセスではなく、bashスクリプトの「Ctrl + c」をトラップします
私はbashスクリプトでインタラクティブなプログラムをしようとしました: my_program そして、「Ctrl + c」でそれを閉じたいと思います。しかし、それを実行すると、スクリプトも終了します。 私は知っています。 trap '' 2 my_program trap 2 しかし、この場合、my_programCtrl + cで閉じることができません。 プログラムでCtrl + cを許可し、実行中のスクリプトを閉じない方法はありますか? 編集:例を追加 #!/bin/bash my_program my_program2 Ctrl + cを使用して閉じるとmy_program、my_program2スクリプト全体が終了するため実行されません。
11 bash  trap 

2
GNU Bashのマニュアルに「time」がないのはなぜですか?
[fakename]$ help time time: time [-p] pipeline Report time consumed by pipeline's execution... このことからtime、Bashビルトインのようです。ただし、このページ(https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html#Shell-Builtin-Commands)で説明を見つけることができません。これはなぜですか?
11 bash  man  time 

4
grepコマンドで文字列検索をifステートメントに入れる方法は?
2つのファイルで複数の文字列を検索したい。両方のファイルで1つの文字列が見つかった場合は、何かを作成します。1つの文字列が1つのファイルだけで見つかった場合は、別の文字列を作成します。 私のコマンドは次のとおりです: ####This is for the affirmative sentence in both files if grep -qw "$users" "$file1" && grep -qw "$users" "$file2"; then ####This is for the affirmative sentence in only one file, and negative for the other one if grep -qw "$users" "$file1" ! grep -qw "$users" "$file2"; then それは声明を否定し、肯定する正しい方法ですか?pd …

1
Bashは引数リストを使用してパフォーマンスに問題がありますか?
bash 5.0で解決済み バックグラウンド 背景(および理解(およびこの質問への反対票を避けようとすることは魅力的であるように思われます))のために、この問題にたどり着いた経路を説明します(まあ、2か月後に思い出せる最善の方法です)。 Unicode文字のリストに対していくつかのシェルテストを実行していると仮定します。 printf "$(printf '\\U%x ' {33..200})" また、100万を超えるUnicode文字があり、そのうち20.000文字をテストしてもそれほど多くはないようです。 また、文字を位置引数として設定すると仮定します。 set -- $(printf "$(printf '\\U%x ' {33..20000})") 文字を各関数に渡して異なる方法で処理することを意図しています。そのため、関数はフォームtest1 "$@"または同様の形式にする必要があります。今、私はこれがいかに悪い考えであるかを理解しています。 ここで、各ソリューションの時間を測定する必要があると想定し(n = 1000)、どちらがより良いかを見つけます。このような状況では、次のような構造で終了します。 #!/bin/bash -- TIMEFORMAT='real: %R' # '%R %U %S' set -- $(printf "$(printf '\\U%x ' {33..20000})") n=1000 test1(){ echo "$1"; } >/dev/null test2(){ echo "$#"; } >/dev/null …
11 linux  bash  time 

8
ファイルのすべての行が一意であることを確認します
次のような行を含むテキストファイルがあります。 This is a thread 139737522087680 This is a thread 139737513694976 This is a thread 139737505302272 This is a thread 139737312270080 . . . This is a thread 139737203164928 This is a thread 139737194772224 This is a thread 139737186379520 すべての行の一意性をどのように確認できますか? 注:目的はファイルをテストすることであり、重複する行が存在する場合にファイルを変更することではありません。

3
POSIX shで-nt / -otテストを実行する
ビルトインtestおよび[ユーティリティは、シェルが「POSIXモード」で実行されている場合でも、ほとんどのシェルで-nt(「より新しい」)および-ot(「より古い」)テストを実行します(同じ名前の外部ユーティリティについても当てはまります)。私がアクセスできるシステム)。これらのテストは、2つのファイルの変更タイムスタンプを比較するためのものです。文書化されたセマンティクスは、実装ごとにわずかに異なります(一方または他方のファイルが存在しない場合に発生することに関して)が、POSIX仕様にtestは含まれていません。以下のためのユーティリティ。 test条件付きコマンドが[KornShell]シェルから削除されたとき、testユーティリティの歴史的な実装に組み込まれたユーティリティに含まれていないため、ユーティリティに引き継がれませんでしたsh。 /bin/shシェルスクリプト内のファイル間の変更タイムスタンプを比較し、次に、1つのファイルが他のファイルより新しいかどうかに応じてアクションを実行したいと仮定します。 if [ "$sigfile" -nt "$timestamp" ] || [ "$sigfile.tmp" -nt "$timestamp" ] then return fi ... make(スクリプトの残りの部分は控えめに言っても扱いにくくなる)以外に、他にどのユーティリティを使用できますか?または、「歴史的な実装」でスクリプトを実行shしたり、特定のシェルの作成を辞めたりする人は誰もいないと仮定する必要がありbashますか?
11 files  timestamps  posix  test 

2
ファイル記述子の寿命はどれくらいですか?
ここで説明するように、リダイレクトopen()はファイルへの書き込みに使用します。シェルで作成された内部(?)ファイル記述子があり、必要なときに使用されます。 内部記述子は、スクリプトの全期間またはシェルの存続期間に対して作成されますか?しばらくすると破壊されますか? 特に、シェル自体が組み込みの操作のために開くファイルのファイル記述子を意味します。各操作で記述子が作成され、ファイルが開かれますか?それらはどれくらいの期間保持されますか?例: #!/bin/bash >>x echo something ...do many other things not related to the file x >>x echo something more 最初の記述子インスタンスは、2番目の操作まで保持されますか? ターミナルで使用するシェルはどうですか?1つのセッションを数日間、場合によっては数週間開いたままにすることがあります。シェル組み込みで操作したすべてのファイルの記述子はまだ保持されますか?

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