Jak sprawdzić, czy ścieżka jest katalogiem, czy coś innego w skrypcie Bash

Jak sprawdzić, czy ścieżka jest katalogiem, czy coś innego w skrypcie Bash

Próbujemy opracować bardzo podstawowy skrypt Ubuntu, który pozwoli nam podać informacje, niezależnie od tego, czy jest to nazwa pliku, czy folder. Jak mogę sprawdzić, czy folder istnieje w skrypcie skorupy pod Linuksem lub maszynami wirtualnymi podobnymi do UNIX? Lub jak sprawdzić, czy istnieje plik? Jak użytkownik rozróżni, czy wspomniana ścieżka to katalog lub plik? Więc miejmy kilka przykładów w skrypcie Bash, aby rozwinąć tę koncepcję. Pamiętaj, aby najpierw zalogować się z systemu. Używamy Ubuntu 20.04. Po zalogowaniu otwórz aplikację konsoli, aby wykonać przykłady.

Przykład 01:

Aby otworzyć skorupę, spróbuj „Ctrl+alt+t". Tworzenie pliku bash, początkowo, zaczynając od prostego przykładu sprawdzania, czy ścieżka wymieniona w pliku bash jest plik lub katalogu. Aby utworzyć plik kodu bash, wpisz „dotyk” w terminalu, jednocześnie wymieniając nazwę pliku z „.cii" rozszerzenie. Więc nazwaliśmy plik „test.cii". Naciśnij klucz „Wchodzić„Aby przetworzyć zapytanie.

$ Touch Test.cii

Możesz łatwo znaleźć właśnie utworzony plik bash w katalogu domowym. Aby dodać do niego kod bash, musimy go otworzyć w jakimś edytorze. Więc wykorzystaliśmy wbudowanego redaktora GNU Ubuntu 20.04. Dlatego wypróbowaliśmy zapytanie pod spodem w skorupce i otworzyliśmy je w edytorze.

Test $ nano.cii

Plik został uruchomiony w edytorze. Napisz skrypt pokazany poniżej. Najpierw dodaj rozszerzenie bash w pliku jako „#!/bin/bash ”. Zadeklarowaliśmy nową zmienną „V1” i przypisaliśmy jej „ścieżkę” pliku jako jego wartość. Z ścieżki jasno wynika, że ​​wskazuje na niektóre pliki bash. Oświadczenie „If” zostało zainicjowane. Wewnątrz aparatów ortodontycznych [] musimy użyć flagi „-D” reprezentującej katalog w części jego warunku. Sprawdzi, czy wspomniana wartość zmienna jest katalogiem, czy coś innego. Jeśli warunek się spełni, wykona część „Następnie” i wyświetli „$ v1 to katalog”. W przeciwnym razie będzie wykonywać drugą część instrukcji „jeśli” i wyświetlanie „$ v1 to plik” w terminalu Shell. „FI” stwierdza, że ​​stwierdzenie „If” zostało tutaj zakończone. Po zapisaniu tego kodu BASH wrócimy do konsoli za pośrednictwem „Ctrl+s" I "Ctrl+x„Kolejnie.

Teraz czas na wykonanie pliku bash „test testowy.cii". Dlatego użyliśmy instrukcji Bash w naszej konsoli z nazwą pliku, aby sprawdzić dane wyjściowe. Wyjście tej instrukcji pokazuje, że ścieżka wymieniona w pliku określa plik. Dlatego możemy powiedzieć, że część „else” musiała zostać wykonana przez jego czas.

Test $ Bash.cii

Przykład 02:

Tym razem zobaczmy wynik katalogu. Tym razem zobaczymy, jak działa flaga „-D” na zmiennej zawierającej ścieżkę do katalogu. Więc otworzyliśmy plik „Test.SH ”ponownie w redakcji za pośrednictwem zapytania„ Nano ”w skorupce.

Test $ nano.cii

Po otwarciu zaktualizowaliśmy wartość zmiennej „V1” i zmieniliśmy ścieżkę na ścieżkę katalogu. Zastąpiliśmy plik „Plik.sh ”z katalogiem„ Zdjęcia/”. Pozostały skrypt bash jest taki sam w całym pliku w edytorze. Musisz najpierw i szybko zapisać zaktualizowany kod bash i wyjść z edytora za pomocą „Ctrl+S”, a następnie „Ctrl+X”.

Więc wykonajmy nasz plik ponownie. Do wykonania to samo powyższe zapytanie zostało wykorzystane w konsoli. Tym razem wykonanie pokazuje, że wspomniana ścieżka w skrypcie Bash jest katalogiem w katalogu domowym Ubuntu 20.04.

Test $ Bash.cii

Przykład 03:

W powyższych dwóch przykładach widziałeś, jak użyć flagi „-D”, aby sprawdzić, czy wspomniana zmienna ścieżki jest katalogiem, czy nie. Tym razem użyjemy innej flagi „-f”, w naszym przykładzie, określając, czy wspomniana ścieżka jest plik, czy nie. Z drugiej strony będziemy używać zagnieżdżonej instrukcji „IF-Else” w naszym kodzie bashu, aby użyć flag „-D” i „-f”. Otworzyliśmy „test.plik sh ”w edytorze GNU za pośrednictwem terminalu za pomocą instrukcji„ nano ”jeszcze raz.

Test $ nano.cii

Po otwarciu dokumentu Bash napisaliśmy w nim skrypt Bash poniżej. Dodano rozszerzenie Bash i zainicjował zmienną V1, zawierającą ścieżkę pliku jako jej wartość. Ponadto zagnieżdżona instrukcja „IF-Else” została właściwie wykorzystana do sprawdzenia, czy ścieżka zmiennej jest plik, czy katalog. Tak więc, w ramach pierwszego, jeśli wymieniliśmy warunek, aby sprawdzić, czy wartość zmienna jest katalogiem za pośrednictwem flagi „-D”. Jeśli warunek się spełni, wydrukuje „$ V to katalog”; W przeciwnym razie druga część oświadczenia zostanie skompilowana. W części „else” jest to inne stwierdzenie „IF-Else”. W części „If” tego stwierdzenia warunek został użyty do sprawdzenia, czy ścieżka zmienna „V” zawiera plik, czy nie za pomocą flagi „-F”. Jeśli ścieżka zawiera plik, wydrukuje, że „$ V to plik”; W przeciwnym razie instrukcja Echo „Else” zostanie skompilowana na terminalu.

Po zapisaniu kodu nadszedł czas, aby skompilować skrypt BASH za pośrednictwem zapytania Bash. Dlatego użyliśmy zapytania „Bash” z wymienioną w nim nazwą pliku. Wyjście jest tak samo, jak się spodziewaliśmy. Ponieważ wartość zmienna zawiera ścieżkę określającą ścieżkę pliku, wyświetla, że ​​„$ v jest plik”.

Test $ Bash.cii

Przykład 04:

W wyżej ilustrowanym przykładzie użyliśmy ścieżki dla pliku, aby zobaczyć, jak reaguje zagnieżdżona instrukcja „IF-Else” podczas używania flag „-D” i „-f”. Tym razem użyjemy ścieżki katalogu. Otwórz ponownie plik i zaktualizuj wartość ścieżki zmiennej. Zastąpiliśmy „Test.txt ”z„ dokumentami/”. Pozostały skrypt jest taki sam.

Po pomyślnym skonstruowaniu skryptu BASH deklarowana ścieżka w wartości zmiennej „V” jest katalogiem, e.G., Pliki.

Test $ Bash.cii

Przykład 05:

Ostatnim i dodatkowym przykładem jest dodatkowa praktyka. Otwórz nowy plik „Plik.sh ”i wypełnij go poniższym kodem. Zadeklarowano dwie zmienne, aby pokazać ścieżkę plików i katalogu. Oświadczenia „IF-Else” zostały wykorzystane z flagą „-D”, aby określić typ ścieżki, e.G., katalog lub plik.

Po skompilowaniu kodu pierwsza zmienna zawiera plik, a druga zawiera katalog zgodnie z poniższym wyjściem.

plik $ bash.cii

Wniosek:

W tym przewodniku widzieliśmy, jak znaleźć, że wspomniana ścieżka to plik, katalog lub coś innego. Użyliśmy instrukcji „IF-Else” i zagnieżdżonych „IF-Else”, jednocześnie wykorzystując flagi „-D” i „-f” w naszych przykładach, aby lepiej rozwinąć.