Як уникнути “` ”(акцентованої могили / бешкетника) на шляху?


13

Я схильний до префіксу часто використовуваних файлів і папок з символом "акцентної могили" (незмінна тильда, зворотна галочка або звичайний старий наголос, що-то ...), як це легко отримати, і давайте мені сортувати речі за алфавітом, дозволяючи мені вибрати декілька предметів у верхній частині. Це добре працює, за винятком випадків, коли я переходжу до цих файлів через CLI або SSH / SCP.

Якщо я спробую запустити команду, викликаючи файл без нагляду ↝, це запускає мене в інтерактивну сесію.

# scp -r dns.local:/`Downloads/CrazyRussianCars/ ~/
↩
>

Але якщо я спробую логічне рішення ↯

# scp -r dns.local:/\`Downloads/CrazyRussianCars/ ~/
↩
bash: -c: line 0: unexpected EOF while looking for matching ``'
bash: -c: line 1: syntax error: unexpected end of file

Я знаю , що «нове» правило використовувати синтаксис як export NOW=$(date)проти export NOW= `date` (насправді, у мене був ведмідь часу , навіть написання останнього в синтаксисі SE MD ...) , але це НЕ має ніякого відношення до ENVабо будь-якого сценарію. ..

Примітка: Це є середа Mac OS X, але сказав, графічний інтерфейс ніколи не мав проблем справу з цим персонажем на основі день у день, і , як правило, якщо буде проблема синтаксису в терміналі, Apple виконує досить непогану роботу з відключення поведінки в графічному інтерфейсі ... Не впевнений, що це помилка, чи техніка поводження з такими шляхами просто незрозуміла .. але поки що мені не вдалося знайти спосіб "уникнути цього" ?


чому б просто не використовувати символ, який не потребує втечі, як номер 1?
JamesRyan

функція - візуально - менш руйнівна (для мене) і має менш притаманний смисловий багаж при повторному призначенні його як своєрідного роздільника.
mralexgray

Відповіді:


10

Ви можете використовувати 3 косої косої риски, як згадував Джед Даніельс, або можна загортати її в окремі лапки (')та використовувати один зворотний нахил.

Приклад обох наведено нижче.

$ touch dir/'`rik' 
$ ls -l dir
total 1865376
-rw-r--r--  1 rik  staff          0 Jul  1 09:51 `rik 
$ scp localhost:dir/\\\`rik ./ `rik         
100%    0     0.0KB/s   00:00     
$ scp localhost:dir/'\`rik' ./ `rik     
100%    0     0.0KB/s   00:00     
$

приголомшливий Я думаю, я виберу цю відповідь, тому що приємно мати два способи це зробити. в будь-якому випадку ви можете також використовувати цю техніку локально, використовуючи лише одну косу рису, або для відхилення від косої риси, НЕ БЕЗКОШТОВНО та просто техніку одноцитування навколо проблемного файлу чи каталогу .. дякую!
mralexgray

5

Три накипи повинні зробити це:

jed@jed-osx:~$ ls -la \`foo
ls: `foo: No such file or directory
jed@jed-osx:~$ scp desk:\\\`foo .
`foo                                            100%    0     0.0KB/s   00:00    
jed@jed-osx:~$ ls -la \`foo
-rw-r--r--  1 jed  staff  0 Jul  1 09:45 `foo
jed@jed-osx:~$ rm \`foo

Перший зворотний косий ривок ухиляється від перемикання, тому він надсилається в іншу сторону, але інша сторона видає помилку, тому що очікує, що задній стік буде парним. Другий кут нахилу ухиляється від першого косого кута, тоді вам потрібні додаткові дві косої косої риси, щоб ви могли відправити втечений нахил на інший бік.

EDIT: Як згадує Рік, ви також можете це зробити за допомогою однієї цитати. Я не думав про це, тому що ви не можете нам це зі змінними (вони не розширяться в локальній системі, коли в єдиних лапках).


3

Зазвичай командні рядки інтерпретуються оболонкою один раз. Однак, з історичних причин, scp передає ім'я файлу і віддаленій оболонці, тому ім'я файлу інтерпретується оболонками двічі . Це також робить те, як scp remote:'/path/prefix*' /path/local/робота, віддалена оболонка розширюється /path/prefix*.

Найпростіший спосіб уникнути другого розширення - використовувати sftp, який не використовує віддалену оболонку. Він все ще робить глобальне розширення, але оскільки ви можете давати йому команди на stdin, ви можете уникнути локального розширення оболонки повністю.

Крім цього, ви можете використовувати будь-який із звичайних механізмів котирування оболонки, включаючи ті, які надали @Jed Daniels та @Rik Schneider, але я хотів пояснити, що насправді відбувається, і згадати sftp.

(Ви можете використовувати всі види оболонок у своєму файлі scp, наприклад scp server:\$HOME/file dest, використовуватимете ідею віддаленої оболонки $HOME, тоді як якщо ви вийняли \, вона використовувала б локальну оболонку.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.