Unix & Linux

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

1
誤ってtar.gzファイルの名前をtar.gz以外のファイルに変更すると、ファイルが台無しになります
tar.gzファイルを/optディレクトリに移動しよう/root/optとして、それが正しい場所だと誤って移動しようとしていました。しかし、がなかった/root/optため、tar.gzファイルの名前optは/rootフォルダー内に変更されました。 名前をtar.gzファイルに戻しました。私のファイルは台無しになりますか?それでも問題ないか心配です。
12 linux  root  mv 

2
Bashのユーティリティプログラムへの連鎖呼び出しをパラメーター化する
Bdinシェルで使用されるブラックボックスUNIXプログラムがあり、stdinからデータの列を読み取り、それらを処理して(平滑化効果を適用して)、stdoutに出力します。UNIXパイプで使用します。たとえば generate | smooth | plot よりスムーズにするために、スムーズを繰り返すことができるので、Bashコマンドラインから次のように呼び出されます。 generate | smooth | smooth | plot あるいは generate | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | smooth | plot これは厄介です。私は、Bashラッパーを作成して、smoothその出力をsmooth任意の回数の新しいインスタンスにパイプで送り、新しいインスタンスに戻すことができるようにします generate | newsmooth 5 | plot の代わりに generate | smooth | …

3
100Gを超えるディスクサイズを検出するこのフィルターを短縮できますか?
私の目標は、lsblkから100Gを超えるディスクを取得することです。 私はそれを動作させていますが、それは厄介です。短縮できると確信しています。lsblkとはまったく異なるものを使用するか、awkを使用して人間が読み取れる数値を直接フィルター処理することができます。 ここに私がまとめたものがあります: lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}' 100Gより大きいディスクのsdxおよびnvmexxx部分のみを出力します。まさに私が必要なもの。 私はそれで満足していますが、あなたからもっと学びたいと思っています。
12 awk  grep  disk  lsblk 


4
ディレクトリ内の複数のファイルの名前を同時に変更する方法
/var/tmp/abc4つのファイルがあるディレクトリsay があります。 12345-ram-3e3r5-io9490-89adu9.csv 45434-dam-qwe35-to9490-43adu9.csv 11234-cam-yy3r5-ro9490-85adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv 私はすべてのCSVファイルの名前を変更する(すべてのファイルを見つけて名前を変更する)ために、できるだけ短い(おそらく1ライナー)方法で: XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv
12 shell  files  rename 

1
プログラムは、stdoutがターミナルまたはパイプに接続されているかどうかをどのように知るのですか?
セグメンテーション違反の直前の出力が必要なため、セグメンテーション違反プログラムのデバッグに問題がありますが、出力をファイルにパイピングするとこれは失われます。この回答:https : //unix.stackexchange.com/a/17339/22615によると、これは、プログラムの出力バッファーが端末に接続されたときにすぐにフラッシュしますが、パイプに接続されたときは特定のポイントでのみです。ここにいくつか質問があります: プログラムは、標準出力の接続先をどのように判断しますか? 「スクリプト」コマンドは、プログラムが端末に書き込むときと同じ動作をどのように生成しますか? スクリプトコマンドなしでこれを実現できますか?
12 terminal  pipe 

2
ディレクトリ/ファイルの組み合わせを検索することは可能ですか?
ABC.jpgという名前の画像を見つける必要があります。この画像は、ABC_MPSCという名前のディレクトリにプログラムで配置されることがわかっています。私はもう試した: cd / find . -name "ABC_MPSC/ABC.jpg" しかし、それは何も返しません(私が実際に検索している特定のものがどこにあるかを知っているので、それが存在することを知っています)。手動で検索する必要のない検索コマンドはありますか?
12 find 

3
末尾の空白がある場合とない場合の単語の一致にはどのような違いがありますか?
私はシェルスクリプトを学んでおり、そのためにHackerRankを使用しています。sed同じサイトに関連する質問があります:'Sed'コマンド#1: 特定の入力ファイルの各行について、単語「the」の最初の出現を「this」で変換します。検索と変換では、大文字と小文字を厳密に区別する必要があります。 まず始めに、 sed 's/the/this/' しかし、そのサンプルテストケースでは失敗しました。それから私は試した sed 's/the /this /' そしてそれは働いた。それでは、空白がどのような違いを生み出したのかという疑問が生じますか?ここに何かが足りませんか?
12 sed  whitespace 

2
セッションを適切に閉じるショートカット(exitと入力しない)でシェルを終了する
毎日使用する多くのsshセッションでProxyJumpコマンドを使用します。また、これらのセッションでユーザーを頻繁に切り替えますexit。3回または4回連続して入力するのは面白くありません。 私はnewline+ ~+ .sshセッションを終了することに気づいていますが、それが思いのままに終了するかどうかを確認exitする必要がありますが、exit3または4回入力するように単一のコマンドまたはショートカットで現在のシェルのすべてのセッションを終了するにはどうすればよいですか私の場合、一度限りのものになりますか?
12 bash  shell  session 

4
||で複数のコマンドを使用しない理由 または&&条件付き作業?
これは、シェル(bash、dash)プロンプトで機能します。 [ -z "" ] && echo A || echo B A ただし、私はPOSIXシェルスクリプトを記述しようとしています。 #!/bin/sh [ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1 readonly raw_input_string=${1} [ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1 理由はわかりませんが、メッセージが表示されません: 指定された引数は空です。 このようなスクリプトを呼び出すと: ./test_empty_argument "" 何故ですか?

1
Linuxには、サポートするファイルシステムのすべての機能にアクセスするためのシステムコールがありますか?
Linuxは多くのファイルシステムをサポートしています(例:ext3、NTFS、FAT32など)。 次の図は、Linuxがプロセスがファイルにアクセスする方法を示しています。 そのため、プロセスread()がファイルを読み取るためのシステムコールを呼び出し、VFSレイヤーにアクセスし、VFSレイヤーがファイルのパーティションのファイルシステムに基づいてアクセスするファイルシステムドライバーを決定すると仮定します。読み取りが常駐します。 Linuxは(例:アクセスファイルには多くのシステムコールを提供しread()、write()、rename()、など)。 今read()とwrite()とrename()、Linuxのサポートされているすべてのファイルシステムに関する作業。 ただし、一部のファイルシステムにのみ存在し、他のファイルシステムには存在しない特定の機能があります。たとえば、NTFSファイルシステムでは、ファイルのアーカイブビットを設定できますが、ext3ファイルシステムでは設定できません。 さて、私の質問は、Linuxがサポートするファイルシステムのすべての機能にアクセスするためのシステムコールはありますか?たとえば、Linux にはNTFSファイルシステム上のファイルにアーカイブビットを設定するシステムコールがありますか?

3
「rm -r」がこのフォルダーを削除できないのはなぜですか?
私はとフォルダ持っている-wxと呼ばれるアクセス権folder1と呼ばれ、その中に別のフォルダfolder2にrwxアクセス権を。 folder1このコマンドを使用して削除しようとしました: rm -r folder1 しかし、私は次のエラーを受け取りました: rm: cannot remove 'folder1': Permission denied 私がこのエラーを受け取ったと思う理由は、rmプログラムがそのコンテンツを削除するために最初にコンテンツを取得する必要があるためですfolder1(その中のファイルとフォルダの名前を取得するfolder1)またはその名前を知らないフォルダ)、rmプログラムはfolder1それ自体を削除できます。 しかしfolder1、read許可rmがないため、プログラムはコンテンツを取得できず、したがってコンテンツを削除できません。また、コンテンツを削除できないため、削除できません。 私は正しいですか?
12 linux  permissions  rm 


1
「apt install」後にDebian 9(Stretch)Linuxカーネルがアップグレードされないのはなぜですか?
今月の大半は、手動でDebian 9(Stretch)に最新のlinux-image-4.9.0-8(またはその)をインストール、再インストール、削除、再インストールしようとしましたが、常に(再)起動しますLinux 3.16.0-5の間違ったバージョンに。 /bootディレクトリコンテンツ全体を削除して再インストールしました。 スタンドアロンパーティションがある/dev/sdaドライブに標準のDebian 9をインストールしています。/dev/sda1/boot 私のチェックリスト: Debian Administration Handbookを確認しました。 ハードウェアにUEFIブートローダーはありません でimageramfsオプションをオフにしました /etc/kernel-img.conf 派手なカーネルモジュールなし(NVIDIAやATIでもない) apt代わりに正しく使用apt-get これは、私が遭遇したパズルシステムの1つです。 の最新のディレクトリ/bootは次のとおりです。 $ ls -lat /boot total 106000 drwxr-xr-x 23 root root 4096 Jan 17 12:25 .. drwxr-xr-x 2 root root 4096 Jan 17 12:17 grub drwxr-xr-x 3 root root 4096 Jan 17 12:17 . …

3
「IFS = $」の「\ n」\ n 'は変数ですか?
改行を設定IFSするには、接頭辞として$を使用する必要があることに注意してください IFS=$'\n' ただし、コロンを設定する場合は、 IFS=: ある\n変数がありますか?
12 bash 

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