Windows vs. Linux tudorka 3 - parancsok meg egyebek.

Ez az írás segíthet a Linuxszal történő ismerkedés során. Sok olyan embernek segítettem Linux telepítésével, akik azelőtt csak Windowst használtak. Ez az írás főleg az általuk feltett kérdéseken alapul. Rengeteg írás, információ fellelhető az interneten, mindenféle szempont szerint kategorizálva. Ez a leírás nem tartalmaz minden érdekes információt, de igyekszem amennyire lehet tömören összefoglalni (így is jó hosszú lesz), azokat a válaszokat, amiket az évek során a nekem feltett kérdésekre volt alkalmam adni.

Ennek a cikknek az előzménye: https://linuxmint.hu/blog/2022/02/windows-vs-linux-tudorka-2-kezelofelulet-kinezet-es-egyebek

Ebben a témakörben, ha felmerülnek, akkor általában két oldalról közelítenek a kérdések. Az egyik, hogy Linux alatt milyen parancsok felelnek meg Windows alatt használtaknak. A másik, hogy miért van egyáltalán szükség erre?

(Az estek többségében ilyen kérdések fel sem merülnek, tehát lehet, hogy ez az írás eléggé unalmas lesz)

Kezdjük azzal, hogy egyáltalán miért van szükség erre?

Erre a kérdésre az egyszerű válasz az, hogy CSAK. Kevésbé egyszerű válasz nincs. De azt gondolom, ha kicsit jobban megvizsgáljuk a helyzetet, összehasonlítva a Windowst a Linuxszal, akkor fel lehet oldani sok dolgot.

Vegyük ezt a megállapítást: Windows alatt nincs szükség ennyi „terminál” parancsra, mint Linux alatt. - Nos, ez így nem teljesen igaz. Ezt inkább úgy lehetne mondani, hogy Windows alatt nincs ennyi lehetőség parancsokkal dolgozni. Egyelőre, mert igyekezet azért látszik Windows oldalról is.

Nézzük nagyobb távlatban a dolgot: Volt egyszer, hol nem volt, volt egyszer egy DOS. A felülete az, az nem volt. Azaz, egy konzol felülete volt, ahol parancsokat lehetett begépelni. Grafikus, színes programokat indítani. A DOS parancsainak a felsorolása egy néhány oldalas füzetben elfértek azok rövid leírásával együtt. És lehetett sok más programot is felrakni a gépre, amik szintén parancsként működtek. A parancsok egyszerűek voltak, általában PARANCS paraméter1 paraméter2 /kapcsolók formájúak, ami néhány paramétert illetve kapcsolót jelentett. (Amíg meg nem jelent az ARJ tömörítő, aminek annyi kapcsolója volt, hogy azok felsorolása több oldalra is kiterjedt.)

Windows 95, 98 alatt a DOS ugyanúgy elérhető volt, NT alatt kezdődött annak amortizálása. Az XP estében fordult a kocka, az már úgymond nem „DOS alapú” volt, hanem már beépített virtuális gépet tartalmazott a DOS programok számára. De a parancsok még támogatottak voltak, valamennyire, de már nem a COMMAND.COM volt a parancsértelmező, hanem a CMD.EXE.

Mindeközben a Linux parancsai fejlődtek és sokasodtak. A mai grafikus felületek alatt egy emulátor biztosítja a parancsok bevitelét, amit jellemzően Terminálnak hívnak (KDE alatt ez Konsole).

Windows alatt is volt egy Terminál nevű program, ami nem tévesztendő össze a parancssort biztosító felülettel, az a modem kezelésről / modemezésről szólt. Ennek a nevét később megváltoztatták HyperTerminal-ra.

Alapból Windows alatt a Linux terminálnak a Parancssor felel meg. Windows alatt a Futtatásba írjuk be: CMD, vagy a menüből a kellékek alatt keressük a Parancssor alkalmazást.

Ma egyébként ott tartunk, hogy Windows 10 alatt megjelent a PowerShell, amivel a lemaradását próbálja behozni, és van rendes „Linux-like” Terminál emulátor is Windows alá:

https://www.microsoft.com/en-US/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab

Nos, ha ez a cucc alapból részét képezné a Windowsnak, tehát nem csak ilyen letölthető formában létezne, akkor minden bizonnyal a Windowsal kapcsolatos fórumok nagyon hasonlítanának a Linuxos fórumokhoz, úgy értem, azokat is a Terminálban futtatható parancsok dominálnák.

Ennek egyszerű oka az egyértelműség, a konkrét kifejezés lehetősége, a félreérthető körülírással szemben.

No. Akkor lássunk néhány Windows vs. Linux parancsot….

Megjegyzés:

- Linux alatt kisbetű / nagybetű számít!

- Linux alatt, ha a parancs emelt szintű jogosultságokat igényel, akkor azt a sudo előtét paranccsal kell indítani. Windows alatt ilyen esetben a parancssort kell rendszergazda jogokkal indítani, jobb egérgombbal kattintva az ikonja felett.

Művelet

Windows

Linux

Megjegyzés

Segítség, rövid információ adott paranccsal kapcsolatban

Parancs /?

Help parancs

man parancs

parancs --help

 

Melyik könyvtárban vagyok?

cd

pwd

Mind Linux mind Windows alatt alapból a promtból is látszik ez, de mindkét rendszer alatt át lehet állítani a promptot, hogy más információt mutasson.

Milyen fájlok vannak ebben a mappában?

dir

ls -l

További kapcsolókkal alakítható a kimenet tartalma, formája

Fájl másolása

copy file1.txt file2.txt

cp file1.txt file2.txt

Windows alatt van egy xcopy parancs is, ami bővebben konfigurálható több kapcsolóval

Fájl törlése

Del file.txt

rm file.txt

Windows is ismeri az rm parancsot

Fájl tartalmának megjelenítése

Type file.txt

cat file.txt
strings file.txt

A cat minden karaktert megjelenít, a strings csak az „olvasható” karaktereket jeleníti meg.

Fájl tartalmának megjelenítése „adagokban”. (egyszerre annyit, ami az ablakban elfér)

type file.txt | more

cat file.txt | more
more file.txt (u.a, csak rövidebben)
less file.txt

A more kapcsoló/ parancs egyszerre egy „képernyőnyit” jelenít meg, billentyű leütésre tovább lép, a végén kilép. Linux alatt a less parancs is egyszerre ennyit jelenít meg, de lehet fel-le lapozni, ebből q-val kell kilépni.

Szöveg beszúrása egy fájlba

echo “szöveg” > 1.txt

echo “szöveg” > 1.txt

 

További szöveg beszúrása egy fájlba

echo “újabb szöveg” >> 1.txt

echo “újabb szöveg” >> 1.tx

 

Két fájl összemásolása egy harmadikba

type 1.txt 2.txt > 3.txt

cat 1.txt 2.txt > 3.txt

 

Mappa váltás

cd \mappa1\mappa2

cd /mappa1/mappa2

 

Mappa létrehozása

mkdir vagy md

mkdir vagy md

 

Mappa törlése

rmdir vagy rm

rmdir vagy rm

 

Fájl áthelyezés

move

mv

 

Fájl átnevezés

rename vagy ren

rm

 

Fájlok összehasonlítása

fc

diff

 

Rendszer verziója

ver

uname -a

 

Ki vagyok én (milyen user van bejelentkezve)?

whoami

whoami

 

Parancs üzeneteinek az elrejtése

parancs 2>nul

parancs 2>/dev/null

 

Fájl keresése

dir c:\ /b/s | find “password”

find / -name  *password*

locate password (u.a, csak gyorsabb)

A locate parancs Linux alatt indexek alapján keres, ezt az adatbázist sudo updatedb-vel lehet frissíteni

Környezeti változók megjelenítése

set

env

 

Konkrét környezeti változó megjelenítése

set Path

echo %Path%

env | grep PATH

echo $PATH
 

Megjegyzés: Windows alatt az aktuális mappa automatikusan a Path „részét képezi,” Linux alatt explicit módon meg kell adni az elérési utat futtatás esetén, ha az aktuális mappa nem a Path változó része.

Milyen portokat figyelnek a folyamatok?

netstat -nao
netstat -naob (ehhez r.gazda jog kell)

netstat -ant

sudo netstat -pant

 

Konkrét szövegre keresése a fenti parancs kimenetben

netstat -naob | find 9999

sudo netstat -pant | grep 9999

 

Futó programok listája

tasklist

wmic process list full

ps -aux

 

További infó konkrét PID-re keresve a fenti listából

wmic process where ProcessID=45

ps -Flww -p 45

 

Az aktuális host neve

hostname

hostname

 

Induláskor betöltött processzek listája

wmic startup full list

ls -l /etc/init.d

crontab -l

systemctl list-unit-files | grep

enabled

less /home/user/.bashrc

Linux alatt lehetnek egyéb helyekről /módon betöltött processzek is, az itt felsoroltak az általános esetek.

Egy konkrét cím (pl. 192.168.1.100) nyitott portjainak a figyelésével kapcsolatos infó lekérése

nmap 192.168.1.100

nmap 192.168.1.100

 

Fentivel kapcsolatban mi fut konkrétan a nyitott porton

nmap 192.168.1.1-254 -sV

nmap 192.168.1.1-254 -sV

 

Infó az összes portról adott host esetében

nmap 192.168.1.100 -p0-65535

nmap 192.168.1.100 -p0-65535

(elég sok időt igényel a végig szkennelése a portoknak)

Cím pingelése 4 alkalommal

ping 192.168.1.200

ping -c4 192.168.1.200

Linux alatt, ha nem adjuk meg, hogy hányszor fusson a ping, akkor addig fut, amíg le nem állítjuk. Windows alatt 4 futás után automatikusan leáll a ping.

Egy távoli cím 25-ös port lekérdezése, arra fókuszálva, hogy milyen fejsort dob vissza (pl. SMTP vagy TCP)

nc.exe 192.168.1.100 25

nc 192.168.1.100 25

Windows alatt az nc alapból nincs telepítve, azt külön fel kell rakni.

IP konfiguráció

ipconfig

ip addr

dhcpcd

 

Adott IP cím névfeloldása, kapcsolódó információk

nslookup <IP cím>

nslookup <IP cím>

A használatáról /paraméterezésről ld. a dokumentációkat

Hálózati csomagkövetés

tracert

traceroute

A használatáról /paraméterezésről ld. a dokumentációkat

Hálózati konfigurálás

netsh

ifconfig

A használatáról /paraméterezésről ld. a dokumentációkat

 

Persze, a végtelenségig lehetne folytatni a listát. Ez itt csak egy kis ízelítő.

Kötegelt futtatás / szkriptelés.

Mind Windows, mind pedig Linux alatt lehetséges a parancsok kötegbe foglalása, azaz szkript létrehozása. Ennek akkor van értelme, ha sokszor kell ugyanazokat a parancsokat futtatni egymás után.

Mindkét rendszer alatt a szkriptek szöveges fájlok, azaz sima egyszerű szöveg szerkesztővel kell azokat létrehozni. (Pl. Windows alatt notepad, Linux alatt nano)

Windows alatt .BAT vagy .CMD kiterjesztést kell adni a fájloknak. A BAT és CMD között a technikai eltérés csak akkor mutatkozik, ha egyéb DOS programokat futtatunk belőlük, és ez csak 32 bites környezetben adott. A BAT számára virtuális DOS-t biztosít a Windows NTVDM szolgáltatása, amiben a parancsértelmező a COMMAND.COM, stb. A CMD számára a parancsértelmező a CMD.EXE, ez alatt futnak a rendszer parancsai, elképzelhető, hogy adott DOS program futtatása CMD szkriptből nehézségekbe ütközik. De a rendszer parancsok tekintetében nincs eltérés a kettő között. 64 Bites Windowsok alatt nincs NTVDM, így DOS programokat sem lehet futtatni, de a rendszer parancsokat kötegelhetjük a megszokott módon.

Windows alatt még lehet .VBS szkripteket is készíteni. Ez már túlmutat a rendszer parancsokon, rendszer API-kat és objektumokat használ, a szintaktikája Visual Basic szerinti. A VBS képes párbeszéd ablakokat is megjeleníteni, változókkal operálni, stb. Ennek a használatáról összefogott dokumentációt nehéz találni, de konkrét kérdésekre rá lehet keresni az interneten.

Alább egy VBS szkript példa, ami egy mappában a fájlok nevében képes kicserélni egy szövegrészletet, illetve opcionálisan a kiterjesztésüket is kicseréli. Windows alatt ezt csak külön telepített fájlmenedzser programmal lehetne megoldani (pl. Total Commander), a Windowsnak magának erre nincs saját eszköze.

Option Explicit  'Változókat kötelező definiálni
Dim StdIn:   Set StdIn = WScript.StdIn
Dim StdOut: Set StdOut = WScript
Dim fso:      Set fso = CreateObject("Scripting.FileSystemObject")

Main
set fso = nothing
Sub Main
   dim objArgs: Set objArgs = WScript.Arguments
   if objArgs.Count > 2 then
      dim path: path = objArgs(0)   'Elérési útvonal
      dim olds: olds = objArgs(1)   'Kicserélendõ (régi) szövegrészlet
      dim news: news = objArgs(2)   'Új szövegrészlet 

      dim ext1: ext1 = ""
      dim ext2: ext2 = ""
      if objArgs.Count > 3 then ext1 = objArgs(3)   'régi kiterjesztés
      if objArgs.Count > 4 then ext2 = objArgs(4)   'új kiterjesztés               
      dim CurrentFolder: Set CurrentFolder = fso.GetFolder(path)
     StdOut.Echo CurrentFolder
     ProcessFolder CurrentFolder , olds, news, ext1, ext2

   else
         StdOut.Echo "Használat: Frename.vbs [elérési út] [Cserélnivaló] [Új névrészlet] [régi kiterjesztés] [új kiterjesztés] "
   end if

End Sub

Sub ProcessFolder (ByVal folder, ByVal oldTag, ByVal newTag, ByVal extOld, ByVal extNew)
   Dim Files: Set Files = folder.Files
   Dim File
   For Each File In Files
         If inStr(1,File.Name,oldTag) > 0 Then                                 
            if (extOld <> "" and extNew <> "") then
               File.Move Replace(Replace(File.Path,oldTag,newTag),extOld,extNew)
            else
               File.Name = Replace(File.Name,oldTag,newTag)
            end if

         End If
   Next

  End Sub  

 

Ezt a kódot egy Frename.vbs nevű fájlba kell menteni. A használata:

Frename.vbs mappa régi_szöveg új_szöveg [régi_kiterjesztés új_kiterjesztés]

Az első három paramétert kötelező megadni, ha a fájlok az aktuális mappában vannak, akkor az első paraméter egy pont legyen.

Ugyanez a művelet Linux alatt jóval egyszerűbb. Ha telepítve van a rename csomag, akkor azzal is megoldható. (Vannak disztribúciók, amelyek eleve tartalmazzák, mint pl. a Linux Mint, de amelyek nem tartalmazzák, azokra is egyszerű telepíteni.)

De a szemlétesség kedvéért nézzük azt az esetet, hogy nincs ilyen eszközünk, és ugyanezt a műveletet Linux alatt is egy szkripttel kell megoldani. Ebben az esetben a szkriptünk valahogy így néz ki:

#!/bin/bash
SEARCH_PATH="$1"
SEARCH="$2"
REPLACE="$3"
OLDEXT="$4"
NEWEXT="$5"
if (($# < 2))
then
echo Echo "Használat: bash Frename.sh [elérési út] [Cserélnivaló] [Új névrészlet] [régi kiterjesztés] [új kiterjesztés] "
else
  cd "$SEARCH_PATH"
for file in $(find . -maxdepth 1 -name "*${SEARCH}*" -type f )
do
newfile="`echo "${file%.*}" | sed s/${SEARCH}/${REPLACE}/g`.${file##*.}"
mv "$file" "$newfile"
done

if (($# > 3))
then
if [[ ${OLDEXT:0:1} == "." ]]; then echo " "; else OLDEXT=".$OLDEXT"; fi
if [[ ${NEWEXT:0:1} == "." ]]; then echo " "; else NEWEXT=".$NEWEXT"; fi
for file in $(find . -name "*$OLDEXT"); do
mv "$file" "${file%$OLDEXT}$NEWEXT"
done
fi
fi

Ezt a kódot egy Frename.sh nevű fájlba kell menteni. A használata:

bash Frename.sh mappa régi_szöveg új_szöveg [régi_kiterjesztés új_kiterjesztés]

Az első három paramétert kötelező megadni, ha a fájlok az aktuális mappában vannak, akkor az első paraméter egy pont legyen.

Mint az látható Linux alatt a kód jóval rövidebb, és elegánsabb, tömörebben megoldható a feladat, mindez a Linux parancsainak a magas szintű kidolgozottságának a folyománya.

= A harmadik rész vége =

A következő részben alkalmazásokkal foglalkozunk….

(bár ez már akkora téma lesz, hogy szerintem több részre ki fog terjedni)

Hozzászólások

parancs 2&gt;/dev/null nem a

#2 Jogos, elírtam, hamarosan javítom, a többi elírással együtt, csak a limitált szerkesztési lehetőségek miatt még várok a következő rész befejezésére, (fel van írva, mit kell javítani még).....

Értékelés: 

0
Még nincs értékelve