だからリモート転送プロトコル次のような奇妙なシェル変数を使用してください。
xfer:log-file = 1
sftp:connect-program = “ssh -a -x -i keyfile”
この変数をどのように設定しますか?set
、およびenv
。を自分で試してみましたが、xfer:log-file=1
どちらも機能しないようです。
どんな助けにも感謝します:)
答え1
これはシェル変数ではなく、構成変数、CLIプロンプト、または構成ファイルでlftp
設定される変数であり、すべての変数と同じです。lftp
lftp
lftp
シェル(自分をシェルと考えたくない場合は、lftp
シェルに似た言語のソルバーであり、!
演算子を使用してコマンドを実行することもできるからです(実際のシェルに依存しますが))。
同じ名前のシェル変数を定義する場合(なぜそうするのですか?)、ほとんどのシェルには変数名に含めることができる文字に多くの制限があることに注意してください。
ほとんどのシェルでは、変数名は文字またはアンダースコア(一部のシェルのロケールで定義されているようにASCII文字またはアルファベット文字のいずれか)で始まり、文字、10進数、および下線のみで構成されています。
一部のシェルrc
では、変数名のes
すべての文字を優先または許可します(=
およびNULを除く)。rc
; a:b = c
; echo $'a:b'
c
bash
yash
一部のバージョンでは、zsh
文字をロケールからアルファベット順に分類できるため、アルファベット順に分類されるカスタムロケールを:
構築して、これらのシェルが文字を有効な変数名文字として受け入れるように欺くことができますが、:
これは非常に悪い考えです。 (すでに特別な意味を持っているinのような)ものは間違いなく壊れます${var:something}
。bash
zsh
今環境変数名にはNULと=
。したがって:
、または以下を含むコマンドに環境変数を渡すことができます-
。
$ env foo:bar=baz printenv foo:bar
baz
rc
ただし、/以外のシェルではes
これを使用できず、一部のシェルでは環境からそれらを削除することもできます(これは、lftp
環境変数を構成変数にマップしない場合は影響しません)。
lftp
起動時にこれらの変数を設定するには、次のようにします。
lftp -e 'set xfer:log-file transfer.log' sftp://server/
または、非対話型の使用のために lftp スクリプトに含めます。
lftp -c '
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502'
または
#! /usr/bin/lftp -f
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502
またはこれらの変数定義を~/.lftp/rc
。