Већину времена можемо наћи ситуацију у којој ћемо можда морати да извршимо радњу која ће проверити да ли датотека постоји или не.
У Басх-у можемо користити 'тест команду' да проверимо да ли датотека постоји и одредимо тип датотеке.
Следе синтаксе команде тест и можемо користити било коју од ових команди:
test expression [ expression ] [[ expression ]]
Од нас се захтева да користимо наредбу '[' са једном заградом да бисмо нашу скрипту учинили преносивом за све ПОСИКС шкољке. Надограђена верзија тест команде садржи двоструке заграде „[[“ што је подржано на већини модерних система који користе Басх, Зсх и Ксх као подразумевану шкољку.
Проверите да ли датотека постоји
Док проверавате да ли датотека постоји, најчешће коришћени оператори датотека су -е и -ф. Опција '-е' се користи за проверу да ли датотека постоји без обзира на тип, док се опција '-ф' користи за враћање праве вредности само ако је датотека обична датотека (не директоријум или уређај).
Најчешћа опција за проверу да ли датотека постоји или не је да користите тест команду са 'иф условном наредбом'.
Следе примери за проверу да ли датотека 'реад_филе.ткт' постоји:
Метод 1
#!/bin/bash File=read_file.txt if test -f '$File'; then echo '$File exist ' fi
Метод 2
#!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist ' fi
Метод 3
#!/bin/bash File=read_file.txt if [[ -f '$File' ]]; then echo '$File exist ' fi
Излаз
Излаз за све три методе ће бити као у наставку јер имамо датотеку (реад_филе.ткт) која је присутна у директоријуму:
низ сорт јава
read_file.txt exist
Ако желимо да извршимо радњу која ће дати резултат на основу тога да ли датотека постоји или не, можемо користити иф/тхен конструкцију на следећи начин:
Пример
#!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist' else echo '$File does not exist' fi
Излаз
read_file.txt exist
Такође можемо користити команду тест без наредбе иф. Можемо користити било који од следећих метода:
Метод 1
#!/bin/bash File=read_file.txt test -f read_file.txt && echo '$File exist'
Метод 2
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist'
Метод 3
#!/bin/bash File=read_file.txt [[ -f read_file.txt ]] && echo '$File exist'
Излаз
Излаз за све три методе ће бити као у наставку јер имамо датотеку (реад_филе.ткт) која је присутна у директоријуму:
read_file.txt exist
Ако постоји неколико команди које треба покренути након && оператора, онда ставите команде у витичасте заграде раздвојене тачком и зарезом (;) или И (&&), тј.:
азбука са бројевима
Пример
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && { echo '$File exist'; echo 'Task Completed'; }
За разлику од &&, изјава после || оператор се извршава само ако је излазни статус тест команде 'фалсе'.
Пример
#!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' || echo '$File does not exist'
Излаз
read_file.txt exist
Ово су најчешће коришћене методе у Басх-у за проверу да ли датотека постоји или не.
Проверите да ли директоријум постоји
Оператор '-д' нам омогућава да тестирамо да ли је датотека директоријум или не.
Следе методе за проверу да ли директоријум „Јаватпоинт“ постоји:
Метод 1
#!/bin/bash File=Javatpoint if [ -d '$File' ]; then echo '$File is a directory' fi
Метод 2
#!/bin/bash File=Javatpoint [ -d '$File' ] && echo '$File is a directory'
Белешка:Такође можемо користити двоструке заграде „[[“ уместо једне заграде „[“.
Излаз
Излаз за обе горе наведене методе ће бити као доле јер имамо директоријум (назван Јаватпоинт) присутан на наведеној локацији:
Javatpoint is a directory
Проверите да ли датотека не постоји
Тест израз се може негирати коришћењем знака узвика (! -логички НОТ оператор). Погледајте следећи пример:
Пример
#!/bin/bash File=missing_read_file.txt if [ ! -f '$File' ]; then echo '$File does not exist' fi
Горња скрипта се такође може написати на следећи начин:
#!/bin/bash File=missing_read_file.txt [ ! -f '$File' ] && echo '$File unavailable'
Излаз
missing_read_file.txt unavailable
Оператори за тестирање датотека
Команде за тестирање укључују следеће Операторе датотека који нам омогућавају да тестирамо одређене типове датотека:
-б Датотека враћа | 'Труе' ако ФИЛЕ постоји као блок посебна датотека. |
-ц Датотека враћа | 'Труе' ако ФИЛЕ постоји као датотека посебних знакова. |
-д Датотека враћа | 'Труе' ако ФИЛЕ постоји као директоријум. |
-е Датотека враћа | „Тачно“ ако ФИЛЕ постоји као датотека, без обзира на тип (чвор, директоријум, сокет, итд.). |
-ф Датотека враћа | „Тачно“ ако ФИЛЕ постоји као обична датотека (не директоријум или уређај). |
-Г датотека враћа | 'Труе' ако ФИЛЕ постоји и садржи исту групу као корисник који покреће команду. |
-х Датотека враћа | „Тачно“ ако ФИЛЕ постоји као симболичка веза. |
-г Датотека враћа | 'Труе' ако ФИЛЕ постоји и садржи сет-гроуп-ид (сгид) заставицу. |
-к Датотека враћа | 'Труе' ако ФИЛЕ постоји и садржи постављену заставу лепљивог бита. |
-Л враћа датотеке | „Тачно“ ако ФИЛЕ постоји као симболичка веза. |
-О враћа датотеке | „Тачно“ ако ФИЛЕ постоји и у власништву је корисника који изводи команду. |
-п Враћа датотеке | 'Труе' ако ФИЛЕ постоји као цев. |
-р Враћа датотеке | „Тачно“ ако ФИЛЕ постоји као читљива датотека. |
-С датотека враћа | 'Труе' ако ФИЛЕ постоји као утичница. |
-с Датотека враћа | „Тачно“ ако ФИЛЕ постоји и има величину различиту од нуле. |
-у Датотека враћа | 'Труе' ако ФИЛЕ постоји и постављена је заставица сет-усер-ид (суид). |
-в Враћа датотеке | 'Труе' ако ФИЛЕ постоји као датотека на коју се може писати. |
-к враћа датотеке | „Тачно“ ако ФИЛЕ постоји као извршна датотека. |