GNU/Linux >> Linux の 問題 >  >> Linux

「os.symlink」対「ln -s」

02 単一のシンボリック リンクを作成します。

10 複数のシンボリックリンクを作成します (最後の引数がディレクトリで、複数のソースがある場合)。同等の Python は次のようなものです:

dst = args[-1]
for src in args[:-1]:
    os.symlink(src, os.path.join(dst, os.path.dirname(src)))

では、28 を実行するとどのように機能しますか? ?あなたのシェル ワイルドカードを複数の引数に変えることで、それが機能します。 31だけだったら 43 コマンドにワイルドカードを使用すると、文字通り 50 という名前の単一のソースが検索されます 60で 、そのディレクトリ内のすべてのファイルではありません。

Python の同等物は次のようなものです (シェルで可能なチルダ、env 変数、コマンド置換など、2 つのレベルを一緒に混ぜて他の多くのケースを無視してもかまわない場合):

dst = args[-1]
for srcglob in args[:-1]:
    for src in glob.glob(srcglob):
        os.symlink(src, os.path.join(dst, os.path.dirname(src)))

77 ではそれはできません それはそれをしないので、単独で—その一部です—。 「85に相当することをしたい」と言っているようなものです 90 を使用 名前でフィルタリングせずに。 シェルがグロビングすることはありません。"

正解は 116 を使用することです 、または 129 、または 136 プラス正規表現、または好きなもの。

しない 149 を使用 、それは再帰を行うため ファイルシステム ウォークなので、シェル 156 にも近くありません


167 あなたの場合、「172で始まるすべてのファイル」を指定するシェル拡張パターンです "。

しかし、このパターンを拡張するのはシェルの役割です 一致するファイルに。 180 ではありません コマンドの.

しかし 199 はシェルではなく、OS 呼び出しです。したがって、シェル拡張パターンをサポートしていません。スクリプトでその作業を行う必要があります。

これを行うには、208 を使用できます。 、または 212 .他の回答に示されているように、適切な呼び出しは、何をしたいかによって異なります。 (221 235 と同等ではありません )

自分自身を納得させるために:Unix マシンの端末で次のコマンドを実行します:240 .マッチングを行っているのはシェルであることがわかります。


Linux
  1. Bashシェルのカスタマイズ

  2. シェルスクリプトでタイムアウトしますか?

  3. どのシェルで実行していますか?

  1. シェルスクリプトの連想配列?

  2. シェルスクリプトの正しいロック?

  3. 壊れた歴史?

  1. Unix Bourne Shellの配列?

  2. Linuxでシェルを変更する方法

  3. シェルで .txt を .csv に変換する