Это хорошая форма и уменьшает путаницу, чтобы запустить все сценарии оболочки, объявив оболочку, в которой они должны запускаться. Первая строка для оболочки Borne (то, что вы назвали «.sh») - «#!/bin/sh». Это помогает устранить всю путаницу в отношении оболочки, в которой каждая имеет нюансы в своем синтаксисе и структуре команд.
Для оболочки Borne команда if выглядит более похожей на это: if [$ rule = "deps"] ; затем # процесс, основанный на HOSTTYPE fi
Пара других предложений, они могут не быть проблемой здесь, но могут укусить вас со временем.
1- определить согласованное соглашение об именах имен, например все в верхнем регистре, чтобы вы могли легче читать код и идентифицировать переменные. 2- Используйте фигурные скобки для обозначения переменных, чтобы они не могли «запутаться». 3. При сравнении строк также помещайте свои переменные в кавычки.
Итак, давайте изменим первую строку из
if ($rule == "") set rule="all"
на
if [ "${rule}XXX" = "XXX" ]; rule="all"
Вьющиеся скобки защищают запутывание с XXX, этот синтаксис говорит, что значение переменной «rule» с «XXX» добавлено до конца. Итак, если результат равен только XXX, вы знаете, что переменная была пуста или null.
Для типа хоста вы можете попробовать добавить еще одну строку, например, для правила:
set HOSTTYPE=$2
[d8 ], а затем, когда вы запустите скрипт, добавьте второй параметр, в который вы вводите тип хоста, например [F6] Жесткая ссылка не является указателем на файл, это запись в каталоге (файл), указывающая на тот же индекс. Даже если вы измените имя другого файла, жесткая ссылка все еще указывает на файл. Если вы замените другой файл на новую версию (скопировав ее), жесткая ссылка не будет указывать на новый файл. Вы можете иметь только жесткие ссылки в одной и той же файловой системе. С hardlinks у вас нет концепции исходных файлов и ссылок, все они равны (подумайте об этом как ссылку на объект). Это концепция очень низкого уровня.
С другой стороны, символическая ссылка фактически указывает на другой путь (имя файла); он разрешает имя файла каждый раз, когда вы обращаетесь к нему через символическую ссылку. Если вы переместите файл, символическая ссылка не будет следовать. Если вы замените файл на другой, сохранив имя, символическая ссылка укажет на новый файл. Символы могут охватывать файловые системы. С символическими ссылками у вас есть очень четкое различие между фактическим файлом и символической ссылкой, в котором нет информации рядом с файлом о файле, на который он указывает.
«Картина стоит тысячи слов».
И «Пример стоит сто абзацев ...»
Создайте два файла:
$ touch blah1
$ touch blah2
Enter некоторые данные в них:
$ echo "Cat" > blah1
$ echo "Dog" > blah2
И как ожидалось:
$cat blah1; cat blah2
Cat
Dog
Давайте создадим жесткие и непрямые ссылки:
$ ln blah1 blah1-hard
$ ln -s blah2 blah2-soft
Давайте посмотрим, что именно произошло:
$ ls -l
blah1
blah1-hard
blah2
blah2-soft -> blah2
Изменение имени blah1 не имеет значения:
$ mv blah1 blah1-new
$ cat blah1-hard
Cat
blah1-hard указывает на inode, содержимое файла - это не было Изменен.
$ mv blah2 blah2-new
$ ls blah2-soft
blah2-soft
$ cat blah2-soft
cat: blah2-soft: No such file or directory
Содержимое файла невозможно найти, потому что мягкая ссылка указывает на имя, которое было изменено, а не на содержимое. Аналогично, если blah1 удаляется, blah1-hard все еще сохраняет содержимое; Если blah2 удален, blah2-soft - это просто ссылка на несуществующий файл.
Оба являются указателями на файлы; разница - это вид указателя. Символьная ссылка указывает на другой файл по имени. Он имеет специальный бит режима, который идентифицирует его как символическую ссылку, а ее содержимое - это имя реального файла. Поскольку он просто содержит имя, это имя фактически не должно существовать или может существовать в другой файловой системе. Если вы замените именованный файл (измените его содержимое, не затрагивая его имя), ссылка все еще будет содержать одно и то же имя, и теперь он указывает на новый файл. Вы можете легко идентифицировать символическую ссылку и увидеть имя файла, на который он указывает.
Жесткая ссылка указывает на файл по номеру inode. Таким образом, жесткие ссылки не отличаются от имени файла. Нет никакого «реального» имени или имени жесткой ссылки; все жесткие ссылки являются одинаково допустимыми именами для файла. Из-за этого файл, на который вы ссылаетесь, должен фактически существовать и находиться в той же файловой системе, где вы пытаетесь создать ссылку. Если вы удалите исходное имя, жесткая ссылка все равно указывает на тот же файл. Поскольку все жесткие ссылки являются одинаково допустимыми именами для файла, вы не можете смотреть на них и видеть другие имена файла; Чтобы найти это, вам нужно взглянуть на каждый файл и сравнить их номер inode, чтобы найти другое имя (имена), которое имеет тот же номер inode.
Вы можете указать, сколько имен имеет файл из вывода ls -l. Первое число после файлового режима - это количество ссылок. Файл с более чем 1 ссылкой имеет другое имя (-ы) где-то, и, наоборот, файл со счетом, связанным только с 1, не имеет (других) жестких ссылок.
Жесткая ссылка может работать только в одной и той же файловой системе, это просто другое имя для того же inode (файлы внутренне ссылаются на inodes). Файл будет удален только с диска, когда последняя ссылка на его inode исчезнет (вы rm d или unlink d последняя ссылка). Hardlinks обычно работают только для файлов, а не для каталогов.
Символьная ссылка (символическая ссылка) - это специальный файл, содержащий путь к другому файлу. Этот путь может быть абсолютным или относительным. symlinks могут работать в разных файловых системах и даже указывать на разные файлы, если вы, например, отключите внешний жесткий диск и замените его другим, у которого есть другой файл по тому же пути. Символьная ссылка может указывать на файлы или каталоги.
Один из ответов другого потока (теперь связанный с верхней части вашего сообщения) упоминает эту страницу, которая, по моему мнению, является довольно хорошим объяснением среднего уровня. Если вы теряетесь в искусстве ascii, вот версия tl; dr:
Стандартные файлы - это указатель от файловой системы на индексный дескриптор, который, в свою очередь, указывает на физические данные. Файловый компонент хранит ссылку на файловую систему (по существу, ее путь) и ссылку на индексный дескриптор. Жесткие ссылки - это как файлы. Это просто дополнительный указатель непосредственно на индексный дескриптор. Символические ссылки - это отдельные файлы (включая отдельный индекс и данные), которые хранят путь файловой системы к файлу.Ядро и используемые файловые системы трансформируют все прозрачно.
Итак, на основе этого:
Стандартные файлы - это указатель из файловой системы в индексный дескриптор, который в свою очередь, указывают на физические данные. Файловый компонент сохраняет ссылку на файловую систему (по существу, ее путь) и ссылку на индекс. Жесткие ссылки (по существу) указывают на абсолютные данные. Символы могут указывать на относительные пути (например, ../parent.file) Жесткие ссылки - это точно такие же файлы. Это просто дополнительный указатель непосредственно на индексный дескриптор. Устранение жесткой ссылки будет быстрее, но неизмеримо. Эта незначительная часть скорости идет за счет негибкой файловой системы.Возможно, я немного смутил себя, но, читая разные вещи, я изо всех сил стараюсь найти разницу между стандартным файлом и жесткой линией. Как я его читаю, каждый файл состоит из жесткой ссылки (сохранение имени файла), связываясь с индедом, который указывает на физические данные.
Добавление жесткой ссылки просто предоставляет индексный дескриптор с дополнительной файловой системой указатель. Правильно?
Когда использовать Soft Link:
Ссылка на файловые системы: если вы хотите связать файлы по файловым системам, вы можете использовать только ссылки symlinks / soft.
Ссылки на каталог: Если вы хотите связать каталоги, вы должны использовать Soft-ссылки, так как вы не можете создать жесткую ссылку на каталог.
Когда использовать Hard Link:
Место для хранения : Жесткие ссылки занимают очень незначительное количество места, так как нет новых inodes, созданных при создании жестких ссылок. В мягких ссылках мы создаем файл, который потребляет пространство (обычно 4 КБ, в зависимости от файловой системы).
Производительность. Производительность будет немного лучше при доступе к жесткой ссылке, так как вы напрямую обращаетесь к указателю на диск, через другой файл. Перемещение местоположения файла: если вы переместите исходный файл в другое место в той же файловой системе, жесткая ссылка будет по-прежнему работать, но софт-ссылка не будет выполнена.
Резервирование: если вы хотите, чтобы безопасность вашей данных, вы должны использовать жесткую ссылку, так как в жесткой ссылке данные безопасны до тех пор, пока все ссылки на файлы не будут удалены, а не в софт-ссылке, вы потеряете данные, если основной экземпляр файла будет удален .
Путаница возникает, когда вы пытаетесь найти разницу между «именем файла» и жесткой ссылкой, потому что ее нет.
Каждый создаваемый вами файл состоит из данных на диске и жесткой ссылки - это имя файла в каталоге и указатель на данные на диске. Конец истории. Когда последняя (или единственная) жесткая ссылка удалена, ОС знает, что данные больше не нужны.
Из этого вы можете видеть, что фактические данные никогда не удаляются, только жесткая ссылка (s ) находятся. И когда он становится достаточно переполненным на диске, данные могут быть перезаписаны данными другого файла. До сих пор данные из удаляемого файла могут быть восстановлены, но его трудно найти без жесткой ссылки.
Символы, как объяснялось ранее, просто говорят вам: «есть файл с именем <targetname> в папку с именем <targetfolder> ". Они указывают на жесткую связь. Они не знают, где находятся данные. Жесткая ссылка знает это.
Для отличного объяснения noob-and-ex-Windoze-user-friendly, с хорошими диаграммами и часто задаваемыми вопросами обращайтесь на эту страницу http://www.geekride.com/hard-link-vs-soft-link/.
Это моя вторая или даже третья попытка схватывания загадки мягкой / жесткой ссылки, всегда бросающей в полотенце и откладывая мое понимание на неопределенный промежуток времени в будущем - как только объяснения и man-страницы получат глубокое ядро и сверхтехнические с помощью inodes и все ...
Наслаждайтесь! [!d9 ]
Это очень просто. Файлы (и каталоги!) Хранятся по адресам на блочном устройстве (HDD или любой другой). Обычно у вас есть одно имя, сопоставленное с адресом, и именно так вы получаете свой файл. Жесткая ссылка - это второе, третье и т. Д. Имя, сопоставленное с тем же адресом. Символическая ссылка вместо этого ссылается на символ - имя - и, следовательно, второе имя сопоставляется с первым именем. Что касается ядра, как только он читает цель символической ссылки, он останавливается и возвращается к началу с целевым значением в качестве имени файла (более или менее), так что относительные символические ссылки возможны, но безумно бесполезны. Имя цели не используется выше уровня файловой системы, кроме случаев, когда оно явно запрашивается в коде пользовательского пространства.