Favicons

Masz problem z faviconami na wszystkich urządzeniach, użyj poniższego linku:  http://realfavicongenerator.net/

xargs: How To Control and Use Command Line Arguments

xargs is more safer and easy to use

xargs functionality can be achived using the backquote feature of shell. But, it offers more options. It can deal with blanks or special characters in file names easily. It is often used with find, grep and other commands.

xargs examples

For example following example will print 1 2 3 4 using xargs (echo command is default)
$ echo 1 2 3 4 | xargs echo
OR
$ echo 1 2 3 4 | xargs
You can force xargs to use at most max-args arguments per command line. For example following will use first two argument per command:
$ echo 1 2 3 4 | xargs -n 2
Find all .bak files in or below the current directory and delete them.
$ find . -name "*.bak" -type f -print | xargs /bin/rm -f

{} as the argument list marker

{} is the default argument list marker. You need to use {} this with various command which take more than two arguments at a time. For example mv command need to know the file name. The following will find all .bak files in or below the current directory and move them to ~/.old.files directory:
$ find . -name "*.bak" -print0 | xargs -0 -I {} mv {} ~/old.files
You can rename {} to something else. In the following example {} is renamed as file. This is more readable as compare to previous example:
$ find . -name "*.bak" -print0 | xargs -0 -I file mv file ~/old.files
Where,

  1. -0 If there are blank spaces or characters (including newlines) many commands will not work. This option take cares of file names with blank space.
  2. -I Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character.

Dealing file names with blank spaces and newline

The following will work incorrectly if there are any filenames containing newlines or spaces (it will find out all .mp3 file located in current directory and play them using mplayer):
$ find . -iname "*.mp3" -print | xargs mplayer
To get rid of this problem use -0 option:
$ find . -iname "*.mp3" -print0 | xargs -0 -I mp3file mplayer mp3file
To find out all *.c file located in 100s of subdirectories and move them to another directory called ~/old.src, use:
$ find /path/to/dir -iname "*.c" -print0 | xargs -0 -I file mv file ~/old.src

Avoiding errors and resource hungry problems with xargs and find combo

To copy all media files to another location called /bakup/iscsi, you can use cp as follows:
$ cp -r -v -p /share/media/mp3/ /backup/iscsi/mp3
However, cp command may fail if an error occurs such as if the number of files is too large for the cp command to handle. xargs in combination with find can handle such operation nicely. xargs is more resource efficient and will not halt with an error:

$ find /share/media/mp3/ -type f -name "*.mp3" -print0 | xargs -0 -r -I file cp -v -p file --target-directory=/bakup/iscsi/mp3

Please note that all of the above commands are tested with GNU/xargs version. BSD and UNIX xargs command may not have options such as -r. Please refer to your local xargs man page for further info:
man xargs

Logowanie przez putty kluczem prywatnym

Na początek musimy wygenerować na serwerze FreeBSD klucz prywatny i klucz publiczny, wydajemy komendę:

ssh-keygen -t dsa

Klucze zapiszą się w naszym katalogu domowym w podkatalogu .ssh
Klucz ~/.ssh/id_dsa.pub jest kluczem publicznym który możemy przekopiować na wszystkie nasze serwery które obsługujemy do pliku ~/.ssh/authorized_keys

Zabezpieczmy nasz klucz na serwerach:

chmod 755 ~username
chmod 700 ~username/.ssh
chown username ~username
chown -R username ~username/.ssh

Klucz prywatny ~/.ssh/id_dsa trzymamy w domu w kopercie na dyskietce, nie na serwerze :)

Klucz prywatny przyda nam się do wygenerowania klucza publicznego zrozumiałego dla putty.

Putty nie rozumie klucza formatu OpenSSH’s więc posłużymy się programem który go przekonwertuje, ściągamy program: puttygen.

Po uruchomieniu klikamy na LOAD i wskazujemy ścieżkę do pliku id_dsa. Następnie zaznaczamy typ generowanego pliku na SSH-2 DSA i liczbę bitów ustawiamy na 1024.

Klikamy na SAVE PRIVATE KEY i zapisujemy go w bezpiecznym miejscu.

Uruchamiamy program putty.

wpisujemy nazwę hosta lub adres IP a następnie przechodzimy do ustawień CONNECTION/DATA i w polu Auto-login username wpisujemy swoją nazwę użytkownika na którą się będziemy logować. Następnie w CONNECTION/SSH/AUTH/ w polu Private key file for authentication wybieramy nasz klucz prywatny który wygenerowaliśmy za pomocą puttygen. Wracamy do SESSION i zapisujemy nasze ustawienia dotyczące logowania dla danego serwera.

Teraz już tylko wystarczy kliknąć na zapisaną wcześniej sesję i logujemy się bez hasła przy pomocy klucza prywatnego.

 

Podział pliku na mniejsze części

#split -b 700m plik_do_podziału

Po opcji -b podajemy liczbę w bajtach. Jeśli chcemy użyć większej jednostki, po liczbie dopisujemy odpowiednio:
b – dla 512 bajtów,
k – dla 1 kilobajta,
m – dla 1 megabajta.

Program nie dokona zmian w oryginalnym pliku, a jedynie utworzy obok niego nowe, o wyznaczonej przez nas wielkości, o nazwach: xaa, xab, xac, xad, xae…

Łączenie pliku możemy wykonać w następujący sposób:

#cat * > scalony_plik

Musimy jednak pamiętać jeżeli podajemy gwiazdkę *, jako plik źródłowy, to oprócz małych plików (tych podzielonych), w danym katalogu nie mogą znajdować się żadne inne pliki. W przeciwnym razie scalony plik będzie bezużyteczny (szczególnie binarny). Najrozsądniej przenieść już podzielone pliki do osobnego katalogu.

Szukanie plików większych niż?

Aby znaleźć pliki większe niż 500MB w danym katalogu wykonujemy komendę:

#find KATALOG -type f -size +ROZMIAR -exec ls -lh {} \; | awk '{ print $3 ": " $5 ": " $9 }'

na przykład:

#find / -type f -size +500M -exec ls -lh {} \; | awk '{ print $3 ": " $5 ": " $9 }'

Rozmiar można podać używając:

  • ‘k’ – kilobajty
  • ‘M’ – megabajty
  • ‘G’ – gigabajty

Jaki mam zewnętrzny adres IP?

Czasami chcę sprawdzić jaki mam zewnętrzny adres IP ale korzystając tylko z terminala?

Musimy doinstalować CURL

#pkg_add -r curl

Następnie wydajemy komendę z konsoli:

#curl ifconfig.me

Jeśli mamy kilka łącz internetowych skonfigurowanych przez setfib to możemy sprawdzić adres IP na każdym z łącz:

#setfib 0 curl ifconfig.me
#setfib 1 curl ifconfig.me