Co powoduje komenda type bez opcji w bashu?

0

Witam, czy ktoś może wyjaśnić mi na czym polega działanie funkcji type wywołanej bez opcji w bashu? Bo rozumiem, że type -t "plik" informuję jakiego typu jest dany plik?

0

WYDAJE MI SIĘ, że aby to sprawdzić, trzeba to wpisać w Windows'owskim terminalu, ale mogę się mylić.

0

Poza pytaniem w pierwszym poście, zastanawia mnie jeszcze, czy katalog domowy i główny to to samo?

0

Katalog domowy, to katalog, w którym po zalogowaniu się do terminala aktualnie się znajdujemy? A główny to taki, względem którego są rozmieszczone wszystkie inne? domowy "~" główny "/"

0
$ help type
type: type [-afptP] name [name ...]
    Display information about command type.
    
    For each NAME, indicate how it would be interpreted if used as a
    command name.
    
    Options:
      -a	display all locations containing an executable named NAME;
    	includes aliases, builtins, and functions, if and only if
    	the `-p' option is not also used
      -f	suppress shell function lookup
      -P	force a PATH search for each NAME, even if it is an alias,
    	builtin, or function, and returns the name of the disk file
    	that would be executed
      -p	returns either the name of the disk file that would be executed,
    	or nothing if `type -t NAME' would not return `file'.
      -t	output a single word which is one of `alias', `keyword',
    	`function', `builtin', `file' or `', if NAME is an alias, shell
    	reserved word, shell function, shell builtin, disk file, or not
    	found, respectively
    
    Arguments:
      NAME	Command name to be interpreted.
    
    Exit Status:
    Returns success if all of the NAMEs are found; fails if any are not found.

Wygląda na to, że type jest do komend, czyli np plików wykonywalnych siedzących w PATH czy poleceń powłoki. Nie analizuje zwykłych plików (niewykonywalnych).

Wygląda też na to, że type bez przełączników działa jak which jeśli chodzi o pliki wykonywalne.

0

xD
Katalog główny to korzeń czyli '/'
A katalog w krórym znajdują się katalogi użytkowników to /home.
Katalog użytkownika nazywa się jak jego nazwa
Możesz użyć ~/ który mówi to samo co /home/$USER czyli mój katalog xD

0

Chociaż niekoniecznie xD Katalog domowy może się nazywać inaczej, możesz go wskazać sobie
Ale defaultowo to nazwa użytkownika
Dlatego lepiej używać ~ albo $HOME

0

A jeszcze odnośnie tej różnicy między type, a type -t, to nie jest przypadkiem tak, że type -t zwraca typ polecenia, natomiast wywołane bez opcji w przypadku komend wbudowanych zwraca builtin, a w przypadku plików po prostu ścieżkę do nich?

0

I jeszcze pytanie odnośnie plików ukrytych, które możemy wyświetlić za pomocą polecenia ls -a. Czy można o nich powiedzieć coś więcej, poza tym, że poprzedza je zawsze ".", oraz że są ukryte?

0

Zastanawia mnie również jaka różnica jest między wyświetleniem plików w ten sposób
wersja 1) ls plik1 plik2
wersja 2) ls plik1 "plik2"
?

0

@sdfa
Dla tych plików żadna, ale jak plik ma spacje w nazwie to cudzysłów będzie potrzebny.

0

Ok, dzięki. Będę wdzięczny za odpowiedzi jeszcze na te pytania:

1.A jeszcze odnośnie tej różnicy między type, a type -t, to nie jest przypadkiem tak, że type -t zwraca typ polecenia, natomiast wywołane bez opcji w przypadku komend wbudowanych zwraca builtin, a w przypadku plików po prostu ścieżkę do nich?

2.I jeszcze pytanie odnośnie plików ukrytych, które możemy wyświetlić za pomocą polecenia ls -a. Czy można o nich powiedzieć coś więcej, poza tym, że poprzedza je zawsze ".", oraz że są ukryte?

0

3.Czy da się zmienić jedynie datę dostępu pliku, czy zawsze będzie zmieniana również data modyfikacji automatycznie?
Bo próbuję w ten sposób "touch -t 203508021234.12 textt.txt" jednak wtedy modify date zostaje ustawiona na tą samą co access date. Jakieś porady?

0

Z manuala (man touch):

       -a     change only the access time
       -m     change only the modification time
0

Właśnie widziałem tę opcję, wywoływałem ją w ten sposób "touch -a 203508021234.12 textt.txt", jednak nadal po sprawdzeniu "stat textt.txt" access date jest ta sama co była.

0

No to trochę zły sposób. Nie wiesz jak się używa przełączników?

Rozwiązanie:

piotrek@piotr-desktop:~$ cd /tmp
piotrek@piotr-desktop:/tmp$ touch textt.txt
piotrek@piotr-desktop:/tmp$ stat textt.txt 
  Plik: „textt.txt”
Dostęp:      2016-03-06 01:20:13.830748421 +0100
Modyfikacja: 2016-03-06 01:20:13.830748421 +0100
Zmiana:      2016-03-06 01:20:13.830748421 +0100
Utworzenie:  -
piotrek@piotr-desktop:/tmp$ touch -a -t 203508021234.12 textt.txt
piotrek@piotr-desktop:/tmp$ stat textt.txt 
  Plik: „textt.txt”
Dostęp:      2035-08-02 12:34:12.000000000 +0200
Modyfikacja: 2016-03-06 01:20:13.830748421 +0100
Zmiana:      2016-03-06 01:20:49.474748343 +0100
Utworzenie:  -
0

A czym się różnią przełączniki od opcji?

0

To to samo.

0

Aha, a możecie mi tylko jeszcze wyjaśnić czemu "touch -a -t 203508021234.12" textt.txt działa poprawnia, natomiast "touch -t -a 203508021234.12 textt.txt"? Myślałem, że kolejność opcji nie ma znaczenia?

0

I jeszcze na te pytania gdyby znał ktoś odpowiedział i zechciał się podzielić to będę niezmiernie wdzięczny:

1.Odnośnie tej różnicy między type, a type -t, to nie jest przypadkiem tak, że type -t zwraca typ polecenia, natomiast wywołane bez opcji w przypadku komend wbudowanych zwraca builtin, a w przypadku plików po prostu ścieżkę do nich?

2.Odnośnie plików ukrytych, które możemy wyświetlić za pomocą polecenia ls -a. Czy można o nich powiedzieć coś więcej, poza tym, że poprzedza je zawsze ".", oraz że są ukryte?

0
sdfa napisał(a):

Aha, a możecie mi tylko jeszcze wyjaśnić czemu "touch -a -t 203508021234.12" textt.txt działa poprawnia, natomiast "touch -t -a 203508021234.12 textt.txt"? Myślałem, że kolejność opcji nie ma znaczenia?

Ma znaczenie, bo niektóre opcje przyjmują parametry. Jeśli pomieszasz kolejność opcji i ich parametrów to niby w jaki sposób parser komend ma się zorientować co do czego przypisać? Parametr i opcja mogą być przedzielone spacją (jak w przykładzie) bądź znakiem równości albo jeszcze innym zależnym od fantazji autora parsera komend.

0

Dzięki, już rozumiem. Zastanawia mnie jeszcze jedna rzecz. Mianowicie jeśli mam dowiązanie stałe do pliku, to dlaczego przy zmianie zawartości obojętnie którego pliku, dowiązanie stałe zostaje usunięte? Przecież one wskazują na miejsce w pamięci, gdzie znajduje się zawartość. Zatem wydaje mi się, że zawartość w obu powinna się zmienić. Zdaje sobie sprawę, że źle myśle, ale chciałbym się dowiedzieć gdzie leży błąd w moim rozumowaniu.

0

Na czym polega zmiana? To zapis do pliku czy np konkretne komendy jak 'cat', 'cp', 'mv'? Pokaż konkretne kroki.

0

Zmiana polega na edycji tekstu w pliku z rozszerzeniem .txt . Dajmy na to mamy plik a.txt, z zawartością "a" i tworzymy dowiązanie stałe pliku b.txt. Następnie obojętnie w którym pliku zostanie zmieniona zawartość, to dowiązanie stałe zostaje usunięte.

0

U mnie dowiązanie cały czas jest:

:/tmp$ echo a > a.txt
:/tmp$ cat a.txt
a
:/tmp$ ln a.txt b.txt
:/tmp$ cat b.txt
a
:/tmp$ echo b > b.txt
:/tmp$ cat a.txt
b
:/tmp$ cat b.txt
b
:/tmp$ gedit a.txt
:/tmp$ cat a.txt
a
:/tmp$ cat b.txt
a
:/tmp$ ls -i *.txt
917531 a.txt  917531 b.txt
:/tmp$ 

U ciebie to inaczej działa?

Na jakim systemie testujesz?

0

Mac OS X El Capitan 10.11.3

0

No i? Działa inaczej? Wklej logi z konsoli.

0

Jak robię przez konsolę wszystko się zgadza. Jednak jeśli stworzę dowiązanie statyczne i następnie ręcznie zmieniam zawartość jednego z plików w interfejsie graficznym, to dowiązanie stałe znika i nie następuję zmiana zawartości w drugim pliku. Jaki jest tego powód?

0

Być może program usuwa plik i tworzy go od nowa - wtedy traci się dowiązanie twarde. Usuwanie plików w uniksopodobnych systemach odbywa się przez usunięcie przypisania nazwy pliku do inode. Jeśli stworzysz plik ponownie o takiej samej nazwie i w tym samym położeniu, to będzie miał inny inode.
https://en.wikipedia.org/wiki/Inode

0

Wiem, dlatego dziwiło mnie dlaczego tak się dzieje, że podczas modyfikacji treści zostają utracone dowiązania twarde. Trochę dziwnie, jeśli rzeczywiście podczas zmiany treści w interfejsie graficznym plik zostaje usunięty i ponownie stworzony zamiast jego zmodyfikowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1