Pokazywanie postów oznaczonych etykietą bash. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą bash. Pokaż wszystkie posty

piątek, 16 sierpnia 2019

Pożyteczne (techniczne) linki

Poniżej umieszczam trochę pożytecznych linków, z których czasami korzystam.

DistroWatch.com - dokładny przegląd dystrybucji Linuksa i BSD:
https://distrowatch.com/

Cheat.sh - ściągawka do komend Unix/Linux i języków programowania:

Explain Linux Commands - wpisujemy pełną komendę np. ps -aux i dostajemy pełne wyjaśnienie, co robi komenda oraz jej parametry:

What is my IP - mój publiczny i prywatny adres IP:
https://www.cleancss.com/what-is-my-ip/

Default Router Settings - domyślne nazwy i hasła użytkowników oraz adresy IP routerów, modemów, kamer IP i innych urządzeń sieciowych:
https://www.cleancss.com/router-default/

BezKompilatora.pl - ciekawy blog o Linuksie:
https://www.bezkompilatora.pl/

Crontab Guru - edytor (kreator) tabeli crontab dla harmonogramu zadań cron:
https://crontab.guru/

repl.it - kompilatory online dla różnych języków programowania:
https://repl.it/

Circuit Simulator - symulator układów elektronicznych w przeglądarce:
http://lushprojects.com/circuitjs/

Crypto-IT : Protokoły TCP/IP - opis TCP/IP:
http://www.crypto-it.net/pl/teoria/protokoly-tcp-ip.html

Codecademy - kursy online z języków programowania:
https://www.codecademy.com/

Rosetta Code - różne zadania programistyczne w bardzo wielu językach programowania:
http://www.rosettacode.org/wiki/Category:Programming_Tasks
np. najprostszy program Hello World napisany w ponad 400 różnych językach programowania:
http://www.rosettacode.org/wiki/Hello_world/Text

SS64 - opis komend wiersza poleceń dla systemów Linux, macOS i Windows oraz opis poleceń i funkcji dla SQL, VBS i PowerShell:
https://ss64.com/

VirusTotal - można sobie online przeskanować plik za pomocą różnych silników antywirusowych:
https://www.virustotal.com

WolframAlpha - strona ta formułuje odpowiedź na pytanie zadane w języku naturalnym, wykonuje obliczenia, przedstawia dane statystyczne, rozwiązuje równania itp.:
https://www.wolframalpha.com/

ark.intel.com - specyfikacje produktów Intela:
https://ark.intel.com

FORBOT - elektronika, Arduino, Raspberry Pi, kursy:
https://forbot.pl/blog/

BlogIT by Artur Dębski - pożyteczne notatki z różnych dziedzin IT:
http://blogit.one.pl/news_cats.php

Kalkulator IP - na podstawie adresu IP i maski oblicza adres sieci, adres rozgłoszeniowy oraz ilość hostów w sieci:
https://42.pl/ipcalc/

--- Na koniec moje dwa ulubione na dzień dzisiejszy systemy operacyjne ---

FreeBSD:
https://www.freebsd.org/
https://www.freshports.org/
https://pl.wikipedia.org/wiki/FreeBSD

Linux Mint:
https://www.linuxmint.com/
https://pl.wikipedia.org/wiki/Linux_Mint

czwartek, 12 marca 2015

Kurs Bash cz.2

1. Arytmetyka

W bashu mamy następujące operatory arytmetyczne:

+ dodawanie
- odejmowanie
* mnożenie
/ dzielenie
% reszta z dzielenia (modulo)
** potęgowanie

Przykład wykorzystania tych operatorów:

#!/bin/bash

X=9
Y=4

# dodawanie
let Z=X+Y
echo "$X + $Y = $Z"

# odejmowanie
let Z=X-Y
echo "$X - $Y = $Z"

# mnozenie
let Z=X*Y
echo "$X * $Y = $Z"

# dzielenie
let Z=X/Y
echo "$X / $Y = $Z"

# reszta z dzielenia (modulo)
let Z=X%Y
echo "$X modulo $Y = $Z"

# potegowanie
let Z=X**Y
echo "$X^$Y = $Z"


Uruchamiając powyższy skrypt widać, że bash operuje tylko na liczbach całkowitych tzn. 9/4 =2. Resztę z dzielenia otrzymujemy po wykonaniu operacji modulo.

Mamy też operatory arytmetyczne bitowe:

>> przesunięcie bitowe w prawo
<< przesunięcie bitowe w lewo
~ bitowa negacja
& AND bitowe
| OR bitowe
^ XOR bitowe

#!/bin/bash

X=8
Y=1

# przesuniecie bitowe w prawo
let "Z=X>>2"
echo "$Z"

# przesuniecie bitowe w lewo
let "Z=X<<2"
echo "$Z"

# bitowa negacja
let "Z=~X"
echo "$Z"

# AND bitowe
let "Z=X&Y"
echo "$Z"

# OR bitowe
let "Z=X|Y"
echo "$Z"

# XOR bitowe
let "Z=X^Y"
echo "$Z"

W bashu można też przeliczać systemy liczbowe:

#!/bin/bash

declare -i a #deklaracja zmiennej calkowitej

#BIN->DEC
a=2#1001
echo $a

#HEX->DEC
a=16#EF
echo $a

2. Pętle

Pętla for - wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy (iteracja).

for zmienna in lista
do
  polecenia
done


Na poniższym przykładzie mamy dwie pętle for. Pierwsza wyświetla elementy listy a druga wszystkie pliki o rozszerzeniu .sh:

#!/bin/bash

for x in apple pear strawberry
do
  echo "This is $x"
done

for plik_sh in *.sh
do
  echo $plik_sh
done

I tu przychodzi następujące pytanie - jak odliczać kolejne wartości liczbowe w pętli for. Jest kilka sposobów. Oto  jeden z nich:

#!/bin/bash

for i in {1..10}
do
  echo $i
done

Pętla while - sprawdza warunek czy jest prawdziwy, jeśli tak to wykonane zostaną polecenia wewnątrz pętli, gdy warunek stanie się fałszywy pętla zostanie zakończona.

while warunek
do
polecenia
done


Przykład:

#!/bin/bash

x=1

while [ $x -le 10 ] #-le mniejsze badz rowne
do
echo $x
x=$[x+1]
done

Pętla until - działa odwrotnie niż while; polecenia w pętli wykonywane są, gdy warunek jest fałszywy - aż stanie się prawdziwy.

until warunek
do
polecenia
done


Przykład:

#!/bin/bash

x=1

until [ $x -ge 10 ] #-le wieksze badz rowne
do
echo $x
x=$[x+1]
done

Koniec części drugiej, cdn. 

niedziela, 15 lutego 2015

Kurs Bash cz.1

1. Wstęp

Bourne Again Shell (bash) - jest to jedna z wielu powłok występujęcych w systemach uniksowych. Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu Unix oraz zawiera pomysły zawarte w powłokach ksh i csh. Poza tym bash jest również językiem skryptowym.

2. Pierwszy skrypt

Tworzymy nowy plik np. hello.sh a potem nadajemy mu uprawnienia do wykonywania (uruchamiania).

chmod +x hello.sh

W tym pliku wpisujemy kod skryptu np.:

#!/bin/bash
#To jest komentarz
echo "Hello World"

Wykonanie skryptu:

./hello.sh

3. Polecenie echo

Polecenie echo wyświetla napis lub zmienną na ekranie.

Przykłady:

echo "Hello World"
echo "$ZMIENNA"
echo -e "Hello World \n"

Parametr -e umożliwia stosowanie znaków specjalnych np.:

\b - backspace
\n - nowa linia
\t - tabulacja pozioma
\xnn - znak ASCII o wartości szesnastkowej
\unnnn - znak Unicode o wartości szesnastkowej

unicode-table.com - tabela znaków Unicode.

4. Zmienne

Zmienne w bashu mogą być typu tekstowego lub liczbowego, ale też mogą służyć do cytowania poleceń. Myślę, że najlepiej typy zmiennych pokaże nam poniższy przykład.

#!/bin/bash

#zmienne lancuchowe
S1="Zmienna tekstowa (lancuch znakow)"
echo $S1
S2='To tez jest lancuch znakow'
echo $S2

#cytowanie polecen
C=`uname -a`
echo $C

#liczba
X=31
echo $X

W bashu istnieją także zmienne specjalne:

$0 - nazwa naszego skryptu
$# - liczba przekazanych parametrów
$$ - numer indentyfikacjny procesu skryptu (PID)
$* - lista porozdzielanych parametrów
$@ - lista parametrów z którymi został uruchomiony skrypt
$? - kod ostatniego wykonywalnego polecenia
$1,$2,$3,... - poszczególne parametry


Można też używać zmiennych środowiskowych (printenv) np. $HOME, $USER, $SHELL i wielu innych.

Zmienne tablicowe są to takie zmienne, które przechowują listę określonych wartości. W bashu stosujemy tablice jednowymiarowe. Zmienne tablicowe indeksujemy liczbami całkowitymi zaczynając od 0. Poniżej prosty przykład.

#!/bin/bash
TAB=(Alpha Beta Gamma Delta)
echo ${TAB[0]}
echo ${TAB[1]}
echo ${TAB[2]}
echo ${TAB[3]}

Mamy też podział zmiennych na globalne i lokalne. Zmienne globalne są dostępne w obrębie całego skryptu. We wszystkich powyższych przykładach mieliśmy do czynienia ze zmiennymi globalnymi. Zmienne lokalne działają tylko w obrębie danej funkcji. Poprzedzone są słowem kluczowym local. Poniżej przykład pokazujący różnicę między globalnymi i lokalnymi zmiennymi.

#!/bin/bash
ZMIENNA="zmienna globalna"

function fun1 {
  local ZMIENNA="zmienna lokalna"
  echo $ZMIENNA
}

echo $ZMIENNA
fun1
echo $ZMIENNA

Wynik działania tego skryptu:

zmienna globalna
zmienna lokalna
zmienna globalna

5. Polecenie read - wprowadzanie danych

Polecenie read służy do wprowadzania danych przez użytkownika. Mogą to być wartości tekstowe lub liczbowe. Poniżej prezentuję skrypt operujący na wejściowych danych tekstowych oraz liczbowych.

#!/bin/bash

echo -en "Podaj swoje imie: "
read IMIE
echo "Witaj $IMIE"

echo -en "Podaj liczbe X: "
read X
echo -en "Podaj liczbe Y: "
read Y
let Z=X*Y
echo "$X * $Y = $Z"

Koniec części pierwszej, cdn.