Неможливо видалити файл за допомогою оболонки cygwin


1

Я намагаюся видалити файл ~$bgka.modз мого поточного каталогу в оболонці Cygwin. Коли я перераховую всі свої файли в цьому каталозі, він відображається:

$ ls
~$bgka.mod   CaBK.mod     hcdist.hoc    mcdist.hoc      pbc.hoc
500net       ccanl.mod    hcell.bcell   mcell.bcell     pgc.hoc
50knet.hoc   gcdist.hoc   hcell.gcell   mcell.gcell     phc.hoc
bcdist.hoc   gcell.bcell  hcell.hcell   mcell.hcell     pmc.hoc
bcell.bcell  gcell.gcell  hcell.mcell   mcell.mcell     ppsyn.mod
bcell.gcell  gcell.hcell  hyperde3.mod  mod_func.c      README.html
bcell.hcell  gcell.mcell  ichan2.mod    mosinit.hoc     run50knet.bash
bcell.mcell  Gfluct2.mod  inhsyn.mod    nca.mod         screenshot.jpg
bgka.mod     gskch.mod    LcaMig.mod    parameters.dat  tca.mod

при спробі rm ~$bgka.modя отримую таку помилку:

$ rm ~$bgka.mod
rm: cannot remove ‘~.mod’: No such file or directory

Також я спробував видалити файл із Провідника Windows та Windows, cmd.exeале він не відображається в жодному з цих вікон.

Як я можу її видалити?


Чи бачите ви будь-який із своїх файлів Cygwin у Windows (Провідник чи cmd)? Спробуйте заглянути C:\cygwin\home\kfolw(якщо це фактичне ім’я для входу). Каталог верхнього рівня може бути щось на зразок C:\cygwin64замість C:\cygwin.
G-Man

Відповіді:


2

Я намагаюся видалити файл ~ $ bgka.mod з мого поточного каталогу

~і $є спеціальними символами в баші.

Ви можете уникнути їх, використовуючи \або поставити аргумент в окремі лапки '.

Подвійні лапки не можна використовувати, оскільки "Заміщення символів у подвійних лапках "зберігає буквальне значення всіх символів у лапках, за винятком $", і \ "

Використання:

rm \~\$bgka.mod

Або:

rm '~$bgka.mod'

Тильда розширення

Якщо слово починається з символу тильда без котирування ~, всі символи до першого косого косого косу (або всі символи, якщо немає косого косого косу) вважаються префіксом тильди. Якщо жоден із символів префікса тильди не цитується, символи в префіксі тильди після тильди трактуються як можливе ім’я для входу. Якщо це ім'я для входу є нульовим рядком, тильда заміняється значенням HOMEзмінної оболонки. Якщо HOMEце не встановлено, замість нього заміняється домашня директорія користувача, що виконує оболонку. В іншому випадку префікс тильди замінюється на домашній каталог, пов’язаний із вказаним іменем входу.

Розширення оболонки джерела


Розширення параметра оболонки

$Символів вводить розширення параметрів, підстановки команд, або арифметичне розширення. Ім'я або символ параметра, який потрібно розгорнути, можуть бути укладені в дужки, які є необов'язковими, але служать для захисту змінної, яку потрібно розширити, від символів, що безпосередньо слідують за нею, які можуть бути інтерпретовані як частина імені.

Розширення оболонки джерела


Цитуючи

Цитування використовується для видалення спеціального значення певних символів або слів до оболонки. Цитування можна використовувати для відключення спеціального лікування спеціальних символів, для запобігання розпізнаванню зарезервованих слів як таких і для запобігання розширення параметрів.

Кожен з метахарактерів оболонки має особливе значення для оболонки і повинен бути цитований, якщо він повинен представляти себе.

Втеча персонаж

Зворотний проріз, який не котирується, \- це символ втечі Баша. Він зберігає буквальне значення наступного символу, що випливає, за винятком нового рядка. Якщо з'являється пара \ newline, а сама зворотна косою рисою не цитується, \ new line трактується як продовження рядка (тобто він видаляється з вхідного потоку та фактично ігнорується).

Одиночні цитати

Замикання символів в одиничних лапках 'зберігає буквальне значення кожного символу в лапках. Одиночна цитата може не виникати між окремими цитатами, навіть коли передує зворотна косою рисою.

Подвійні цитати

Замикання символів у подвійних лапках "зберігає буквальне значення всіх символів у лапках, за винятком $", і" \. Символи $і `зберігають своє особливе значення в подвійних лапках. Зворотний слеш зберігає свій особливий сенс лише тоді , коли слід один з наступних символів: $`, ", \або символ нової рядки. У межах подвійних лапок знімаються зворотні риси, які супроводжуються одним із цих символів. Підсумки, що передують символам без особливого значення, залишаються незмінними. Подвійна котирування може бути наведена у подвійних лапках, попередньо додавши її до зворотної косої риски.

Цитування джерела :


Подальше читання


2

Вам потрібно навести ім'я файлу:

rm '~$bgka.mod'

Обговорення

Без лапок оболонка вважає, що $bgkaце змінна оболонки, і вона замінює її поточне значення. Оскільки bgkaйому нічого не призначено, він підміняється порожнім рядком. Як результат, оболонка намагається видалити файл з назвою ~.mod. Цей файл не існує. Ось чому ви отримуєте помилку:

rm: cannot remove ‘~.mod’: No such file or directory

Закриття імені файлу в одинарних лапки вирішує це, оскільки воно говорить оболонці не робити ніяких підстановок.

Ви можете побачити різницю між одинарними і без жодних лапок, скориставшись простим echoоператором:

$ echo ~$bgka.mod '~$bgka.mod'
~.mod ~$bgka.mod

1

Наведені вище відповіді дуже детальні та правильні. Корисна хитрість у роботі з іменами файлів, що містять спеціальні символи, - це команда 'find'.

find -name "*bgka*" -exec rm {} \;

Якщо ви можете знайти шаблон, який повинен відповідати в частині імен, це найпростіший спосіб обробки файлів, що містять спеціальні символи.

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