Cześć
Dominik. Mam takie głupie pytanie: czy wymienione w Twoim poście polecenie, wykonujesz jako zwykły użytkownik, czy jako administrator/root? I jeszcze jedno: czy potrzebujesz przekierować wyjście wyniku (mam na myśli wykorzystanie
'>') do pliku
/var/wynik.txt? A co w przypadku, kiedy spróbujesz przekierować wynik z wykorzystaniem podwójnego znaku
'>>'? W sumie, to bez sensu, ale...
Tak przy okazji: może najpierw utwórz plik
wynik.txt, ale w innej lokalizacji, np. w katalogu domowym i spróbuj jeszcze raz? Piszę o tym, ponieważ:
"obcina" plik do zerowej długości. I jeżeli plik nie istnieje, tworzony jest nowy o zerowej długości. Mechanizm podobny do działania polecenia
touch. Ale to, tylko tzw. głośne myślenie.
Dominik pomyślałem, że może pomoże Ci krótki skrypt, który przeszuka dany plik w poszukiwaniu danego słowa, czy wzorca:
Kod: Zaznacz cały
[color=#0000ff][I]#!/bin/bash
#
# Prosty skrypt służący do wyszukania danego wzorca w
# zdefiniowanym pliku.[/I][/color]
[color=#008000]wzorzec[/color]=linuks
[color=#008000]plik[/color]=[color=#ff8c00]/[/color]home[color=#ff8c00]/[/color]kitek[color=#ff8c00]/[/color]systemy
[color=#ff8c00]if grep[/color] -q "[color=#008000]$wzorzec[/color]" "[color=#008000]$plik[/color]"
[color=#ff8c00]then
echo[/color] "[color=#008000]$wzorzec[/color] [color=#00ff00]znalezniony w pliku[/color] [color=#008000]$plik[/color]"
[color=#ff8c00]else
echo[/color] "[color=#008000]$wzorzec[/color] [color=#00ff00]nie znaleziony w pliku[/color] [color=#008000]$plik[/color]"
[color=#ff8c00]fi[/color]
Skypt zapisujesz w pliku tekstowym, pod dowolną nazwą, np.
szukacz. Oczywiście skrypt musi mieć atrybut wykonywania, który nadamy za pomocą polecenia:
chmod +x szukacz. (To bardzo ważne). I teraz tak: jeżeli plik, który chcesz przeszukać znajduje się w tym samym katalogu, co powyższy skrypt, to jego działanie odnosi się, tylko do jego wywołania, w tym przypadku jako zwykłu użytkownik, czyli:
Kod: Zaznacz cały
[color=#ff0000][~]$[/color][color=#008000] ./szukacz[/color]
[color=#008000]linuks znaleziony w pliku /home/kitek/systemy[/color]
Jeżeli, będziesz chciał przeszukać katalogi, które wymagają praw administratora/roota, to uruchom skrypt właśnie z konta admina/roota albo skorzystaj z mechanizmu
sudo. Jak zapewne dostrzegasz, musisz zmienić zmienne
wzorzec oraz
plik tak, aby pasowały Twoim wymaganiom. Niemniej, możliwe jest, aby skrypt przyjmował dowolny wzorzec oraz plik w którym ma szukać. Jest, to kwestia wykorzystania odpowiednio
$1 i
$2 (dla zmiennej
wzorzec i
plik). W takim wypadku, działanie skryptu sprowadza się do wywołania polecenia, np:
Kod: Zaznacz cały
[color=#808080][I]## pierwszy wariant, czyli wzorzec został znaleziony:
## [/I]==================================================[/color]
[color=#ff0000][~]$[/color] [color=#008000]./szukacz linuks /home/kitek/systemy-unixlike[/color]
[color=#008000]linuks znaleziony w pliku /home/kitek/systemy-unixlike[/color]
[color=#808080][I]## drugi wariant, czyli wzorzec nie został znaleziony:
## [/I]===================================================[/color]
[color=#ff0000][~]$[/color] [color=#008000]./szukacz windows /home/kitek/systemy-unixlike[/color]
[color=#008000]windows nie znaleziony w pliku /home/kitek/systemy-unixlike[/color]
A więc w tym przypadku, składnia wygląda w ten sposób: ./szukacz wzorzec_do_wyszukania nazwa_pliku. To tylko przykład. Zdaję sobie sprawę z faktu, że ten skrypt Ci pewnie nie pomoże, ale być może ułatwi choć trochę Twoje zmagania :-)
Trzymaj się.