ls *.pdf は次のようにエラーを出力します: ls: 無効なオプション -- '_'

ls *.pdf は次のようにエラーを出力します: ls: 無効なオプション -- '_'

私はLinux Mintで「ls」を使うのに慣れています。例えば「ls *.pdf」ですが、このDebianバリアントでは「ls.pdf' は文句を言います。私は長さ 'find -maxdepth 1 -type f -name " を使用しています。代わりに「.pdf」-print を使用してください。

これを読んで:動作がおかしいあまり役に立ちませんでした。私は bash_completions パッケージを持っていますし、'~/.bashrc' ファイルには 'ls' の奇妙なエイリアスはありません。'/etc/profile' やグローバル プロファイルは、どこにあっても編集しません。

推測ですが、リンクされた質問の解決策を適用しましたが、機能しませんでした。 「complete」を完全に理解していません。おそらく「readline」の一部だと思いますが、簡単な説明も役立つかもしれません(「man」ページはありません)。

ただし、これは機能します: 'complete -p ls *.pdf'、'complete --help' は次のように言います。

 -p        print existing completion specifications in a reusable format

それで、この「ルール」を永続的に適用する必要があるかどうか疑問に思います。「-D」フラグを使用します...?

編集

この問題にも気づきました:

for f in *.pdf; do mv "$f" "BOOK - $F"; done

mv: invalid option -- 'R'

編集2

上記の 2 つのコマンドを試してみましたが、私の OS のパーティションでは問題なく動作しました。問題は、Linux Mint が動作していて、変更したい PDF ファイルがある別のパーティションに移動すると、これらのコマンドが失敗するという点です。両方のパーティションは ext4 で、ユーザー名、ホスト名、UID/GID、権限などが同じです。

答え1

ファイル名の先頭にダッシュが付いているようですので-、次を使用します:

for f in *.pdf; do mv -- "$f" "BOOK - $F"; done

からman bash

A は--オプションの終了を知らせ、それ以上のオプション処理を無効にします。-- の後の引数はファイル名と引数として扱われます。- の引数は -- と同じです。

答え2

ファイル名が (マイナスまたはハイフン) で始まる場合-、多くのプログラムはそれをオプションとして解釈します。

./これを回避するには、パスの先頭に追加します。

ls ./*.pdf

多くのプログラムでは、--オプションの終了を示すためにファイル名引数の前に挿入することもできます。

ls -- *.pdf

ユーザーに推奨される方法は、もちろん、ファイルの名前を変更することです。

関連情報