Навіщо вам запускати CD. перш ніж щось робити?


22

У цій збірці жахів сидсмена, як правило, пише один з авторів:

Завжди робіть cd .перед тим, як щось робити.

Чому б ти хотів це зробити?

Відповіді:


32

Ви цього не робите.

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

  • Налаштуйте своє підказку робити pwdщоразу, коли ви CD.
  • Завжди робіть cd .перед тим, як щось робити.

Таким чином, ви як оператор перевіряєте свій поточний робочий режим, перш ніж робити щось важливе, оскільки воно друкується з кожною зміною. cd .не має сенсу інакше.

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


11
Напевно, краще подумати про це як "завжди введіть" pwd ", перш ніж робити щось важливе, щоб переконатися, що ви знаходитесь в каталозі, про який ви думаєте"
Rod MacPherson

4
Чому б просто не зробити щось, pwdперш ніж робити щось?
Мартін Конечний

15
Насправді це має користь. Якщо ви зайшли в каталог через символічне посилання, а потім посилання видаляється та створюється заново в іншому місці, наприклад, під час розгортання сервера, де версії контролюються символьним посиланням на "current_release", то це cd .може змінити фактичну основу каталог, в якому ви перебуваєте.
Стюарт

1
+1 за " завжди надрукуйте робочий редактор за запитом". Це я і роблю.
Paddy Landau

4
@Stewart На жаль, це не допоможе, якщо символічне посилання зміниться після, cd . але перш ніж робити щось інше. Це просто зменшує ймовірність потрапляння в неправильний каталог, але не вирішує загальної проблеми. Якщо ви не переходите до справжнього каталогу, використовуючи щось на зразок того, cd $(readlink -f .)що ви насправді хочете залишитися там.
scai

18

Якщо видалений поточний робочий каталог вашої оболонки, дані можуть втратити.

Наприклад,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

Вихід some_commandне записувався на диск.

Введення тексту cd .перед запуском команди виявить проблему.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

Якщо поточний каталог робочого каталогу було видалено та заново створено, введення тексту cd ."оновить" посилання на цей каталог.

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

13

Я думаю, що важливіше показати свій поточний каталог.

На кожному сервері Linux я змінюю підказку /etc/bashrc, змінюючи "W" на "w".

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

до

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

Ефект цього:

[root@xt include]#

проти

[root@xt /usr/src/spl-0.6.1/include]# 

є PS1специфічним для bash?
qdii

Я так думаю ... Це все, що я використовую.
ewwhite

1
Ваші зміни можуть загубитися з наступним оновленням системи, тхо.
ott--

2
@ ott-- Приклейте його ~/.profileабо ~/.bash_profile, а також оновлення/etc/skel/.profile
jscott
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.