Due to issues with the Internet.ee domain registry, our main domain, paste.ee, is currently disabled due to abuse reports. We are looking into alternative domains to continue operation, but for now the pastee.dev domain is the primary domain.
If you wish to blame someone, blame the scum using this site as a malware host.
Submitted by Atrasko on February 25, 2026

#!/bin/bash

# ------------------------------------------------------------------------------
# A script neve: 1_atrsdel
#
# Fájlok és könyvtárak biztonságos törlése
#
# A scriptet a /bin könyvtárba másold, mert az alapértelmezett könyvtár,
# és ezért futtatáskor elég megadni a fájlnevet elérési út nélkül.
# A fájlnév csak azért kezdődik 1-gyel, hogy a /bin könyvtárban mindig a
# lista tetején legyen. Ez a script írásakor volt hasznos :-).
#
# A scriptet beillesztve a Thunar fájlkezelő jobb-klikk menüjébe,
# ( Szerkesztés / Egyéni művelet beállítása... ) a kijelölt fájl vagy
# könyvtár a jobb klikk menüből biztonságosan törölhető ezzel a
# script-tel.
# A Thunar egyéni művelet Parancs mezőjébe ezt írd be:
#        exo-open --launch TerminalEmulator 1_atrsdel %f
#
# Ellenőrizd le, hogy a törlést végző parancsok telepítve vannak-e.
# A leírások megjelenítése a terminálban:
#   $ srm --help
#   $ wipe --help
#   $ shred --help
# Ha pl. nincs telepítve az srm, ezt az üzeneted kapod:
#      „srm” parancs nem található, de telepíthető így:
#      sudo apt install secure-delete
#
# Atrasko
# 2026. február 25.
# ------------------------------------------------------------------------------

clear
LINAK=0      # a Linux alap kódja Debian = 1  Arch = 2
LINDN="_"    # a Linux disztribúció neve
OBJ_N=$*     # a törlendő objektum (fájl vagy könyvtár) neve
OBJFN="_"    # az objektum fajta neve  ("fájl" vagy "könyvtár")
OBJFK="_"    # az objektum fajta kódja (F = fájl vagy K = könyvtár)
YES_NO="_"   # kérdésre adott válasz betűvel (I vagy N)
DLC_R="_"    # a törlést végző parancs argumentumaival együtt

function xwait
{
   local WAITING
   WAITING="x"
   echo
   read -p "Tovább bármelyik billentyűleütésre ... " -s -n 1 WAITING
   echo
}

function end_of_script
{
   xwait
   exit 0
}

function yes_or_no
{
   while true; do
      YES_NO="0"
      echo -e -n "\r$1 "
      read -r -p " (i / n) " -n 1 YES_NO   
      case $YES_NO in
         i | I ) YES_NO="I" ;break;;
         n | N ) YES_NO="N" ;break;;
         *) echo -n -e "\b " ;;
      esac
   done
}

function chk_obj_name
{
   # A szóköz karakterek cseréje a könyvtár vagy a fájl nevében --------
   SUBSTRING=" "
   if [[ $OBJ_N = *"$SUBSTRING"* ]]; then
      echo "A "$OBJFN "neve szóköz karaktert tartalmaz."
      echo "A script nem futtatható az ilyen nevű "$OBJFN"ra. :-("
      echo "A szóköz karaktereket aláhúzás karakterekre kell cserélni."
      yes_or_no "A script kicserélje-e a szóközöket? "
      echo
      if [ $YES_NO = "N" ]; then
         echo
         echo "A törlési folyamat megszakítva."
         end_of_script
      fi
      mv "$OBJ_N" "${OBJ_N// /_}" &
      OBJ_N=${OBJ_N// /_} 
      echo "A törlésre jelölt " $OBJFN ": " $OBJ_N       
   else
      echo "A "$OBJFN "neve nem tartalmaz szóköz karaktert. :-)"
   fi
}

function get_lin_base
{
   local SOR
   
   while IFS= read -r SOR; do
      case $SOR in              # Debian = 1   Arch = 2
         "ID=debian")           LINAK=1; LINDN="Debian      "; break;;
         "ID=linuxmint")        LINAK=1; LINDN="Linux Mint  "; break;;
         "ID=\"endeavouros\"")  LINAK=2; LINDN="EndeavourOS "; break;;
         "ID=cachyos")          LINAK=2; LINDN="CachyOS     "; break;;
#        "ID=...........")      LINAK= ; LINDN="            "; break;;
          *)                    LINAK=0; LINDN="Linux       ";  ;;
      esac
   done < /etc/os-release
   if [ $LINAK == 0 ]; then
      echo "
A script nem tudta meghatározni az /etc/os-release fájlból,
hogy melyik alapra épülő Linuxot használsz. Bár az 'ID_LIKE='
kezdetű sorban van megadva a Linux alapja, sajnos nem minden
disztribúció írja bele ezt a sort az /etc/os-release fájlba.
Ez a script ezért keres rá inkább az 'ID=' kezdetű sorra, mert
az mindig megtalálható az eddigi tapasztalatok szerint.

Ellenőrizheted, itt az /etc/os-release fájl tartalma:"
      echo
      cat /etc/os-release
      echo "
Ha tudod, hogy ez a Linux melyik alapra lett fejlesztve,
akkor választhatsz a listából, illetve beírhatod a script
104. sorába a saját Linuxod adatait, hogy a legközelebbi
futtatáskor a script már felismerje azt.
┌──────────────────────────────────────────────────────────────┐
│ Linux alap:                                                  │
│                                                              │
│ 1  Debian                                                    │
│ 2  Arch                                                      │
│                                                              │
│ X  Kilépés                                                   │
└──────────────────────────────────────────────────────────────┘"
      while true; do
         LINAK="0"
         echo -e -n "\rA választott funkció :" 
         read -r -p " ? " -n 1 LINAK
         case $LINAK in
            1 | 2)   break;;
            x | X )  exit 0;;
            *) echo -n -e "\b " ;;
         esac
      done
   fi
}

function set_del_mode
{
   local MTX_1 MTX_2 MTX_3 MTX_4 MTX_5 MTX_6 MTX_7 MTX_8
   local DLC_1 DLC_2 DLC_3 DLC_4 DLC_5 DLC_6 DLC_7 DLC_8
   local DMODE NTS_1 NTS_2
   local LINAN="_"    # a Linux alap neve

   case $LINAK in
      1)
      LINAN="Debian Linux"
     
      MTX_1="Egyszerű       2x  1QM  Véletlen"; DLC_1="wipe -fiqQ2      "
      MTX_2="Egyszerű       4x  3QM  Véletlen"; DLC_2="wipe -fiqQ4      "
      MTX_3="Biztonságos   11x 10QM  Véletlen"; DLC_3="wipe -fiqQ11     "
      MTX_4="Biztonságos   34x       Véletlen"; DLC_4="wipe -fi         "

      MTX_5="Egyszerű       2x       Véletlen"; DLC_5="srm  -vl         "
      MTX_6="Egyszerű       2x       Nulla   "; DLC_6="srm  -vlz        "
      MTX_7="Biztonságos   38x       Véletlen"; DLC_7="srm  -v          "
      MTX_8="Biztonságos   38x       Nulla   "; DLC_8="srm  -vz         "

      NTS_1="Könyvtár esetén hozzá lesz adva az -r rekurzív kapcsoló."
      NTS_2="xQM jelentése: az összes írásból x Quick módban történt."
      ;;
      2)
      LINAN="Arch Linux  "
     
      MTX_1="Egyszerű       1x       Véletlen"; DLC_1="wipe -vz         "
      MTX_2="Egyszerű       1x       Nulla   "; DLC_2="wipe -v          "
      MTX_3="Biztonságos   10x       Véletlen"; DLC_3="wipe -vz -x1 -p10"
      MTX_4="Biztonságos   10x       Nulla   "; DLC_4="wipe -v  -x1 -p10"

      MTX_5="Egyszerű       3x       Véletlen"; DLC_5="shred -fvu       "
      MTX_6="Egyszerű       3x       Nulla   "; DLC_6="shred -fvuz      "
      MTX_7="Biztonságos   10x       Véletlen"; DLC_7="shred -fvu  -n10 "
      MTX_8="Biztonságos   10x       Nulla   "; DLC_8="shred -fvuz -n10 "

      NTS_1="Könyvtár esetén hozzá lesz adva az -r rekurzív kapcsoló."
      NTS_2="Figyelem! A shred CSAK FÁJLOKAT tud törölni!            "

      # A shred parancs nem tud könyvtárat törölni
      if [[ $OBJFK == "K" && $LINAK == 2 ]]; then
      MTX_5="---                             "; DLC_5="                 "
      MTX_6="---                             "; DLC_6="                 "
      MTX_7="---                             "; DLC_7="                 "
      MTX_8="---                             "; DLC_8="                 "
      NTS_2="                                                        "
      fi
      ;;
   esac     
   echo "
┌──────────────────────────────────────────────────────────────┐
│ OS: $LINDN Linux alap: $LINAN                   "           "│
│                                                              │
│                  Felűlírás Karakter  Parancs                 │
│                                                              │
│ 1  $MTX_1  $DLC_1      "                                    "│
│ 2  $MTX_2  $DLC_2      "                                    "│
│ 3  $MTX_3  $DLC_3      "                                    "│
│ 4  $MTX_4  $DLC_4      "                                    "│
│                                                              │
│ 5  $MTX_5  $DLC_5      "                                    "│
│ 6  $MTX_6  $DLC_6      "                                    "│
│ 7  $MTX_7  $DLC_7      "                                    "│
│ 8  $MTX_8  $DLC_8      "                                    "│
│                                                              │
│ X  Kilépés törlés nélkül                                     │
│                                                              │
│    $NTS_1 "                                                 "│
│    $NTS_2 "                                                 "│
└──────────────────────────────────────────────────────────────┘"
   echo
   DLC_R="0"
   while true; do
      DMODE="0"
      echo -e -n "\rA választott funkció : " 
      read -r -p " ? " -n 1 DMODE
      if [[ $OBJFK == "K" && $LINAK == 2 && $DMODE -gt 4 ]]; then
         DMODE="0"
      fi      
      case $DMODE in
         1) DLC_R=$DLC_1; break;;
         2) DLC_R=$DLC_2; break;;                
         3) DLC_R=$DLC_3; break;;
         4) DLC_R=$DLC_4; break;;  
         5) DLC_R=$DLC_5; break;;
         6) DLC_R=$DLC_6; break;;                
         7) DLC_R=$DLC_7; break;;
         8) DLC_R=$DLC_8; break;;  
         x | X )         exit 0;;
         *) echo -n -e "\b "; ;;
      esac        
   done
   if [[ $OBJFK == "K" ]]; then
         DLC_R=$DLC_R" -r"
   fi   
}

# ************************* Itt indul a script *************************

if [ "$#" = 0 ]; then
   echo "
┌──────────────────────────────────────────────────────────────┐
│ Nem adtál meg sem fájlt sem könyvtárat!                      │
│ Argumentum nélkül a script futtatása értelmetlen.            │
│ A leírás megjelenítése: 1_atrsdel --help vagy 1_atrsdel -h   │
│ A script futtatása megszakítva.                              │  
└──────────────────────────────────────────────────────────────┘"    
   end_of_script
fi
if [ "$1" = $PWD ]; then
   echo
   echo "Figyelem! Az argumentum az aktuális könyvtár!"
   echo $1
   echo "
┌──────────────────────────────────────────────────────────────┐
│ Az aktuális könyvtár törlése tiltva van, annak az esetnek a  │
│ kizárására, ha Thunar-ból indítod a scriptet a jobb klikk    │
│ menüből, de elfelejtettél elötte fájlt vagy könyvtárat       │
│ kijelölni. A script futtatása megszakítva.                   │  
└──────────────────────────────────────────────────────────────┘"  
   end_of_script
fi
if [[ $1 = '--help' || $1 = '-h' ]]; then
   echo "
************************************************************************
 A scriptet a /bin könyvtárba másold, mert az alapértelmezett könyvtár, 
 és ezért futtatáskor elég megadni a fájlnevet elérési út nélkül. 
 A fájlnév csak azért kezdődik 1-gyel, hogy a /bin könyvtárban mindig a 
 lista tetején legyen. Ez a script írásakor volt hasznos :-).           
                                                                        
 A scriptet beillesztve a Thunar fájlkezelő jobb-klikk menüjébe,        
 ( Szerkesztés / Egyéni művelet beállítása... ) a kijelölt fájl vagy    
 könyvtár a jobb klikk menüből biztonságosan törölhető ezzel a          
 script-tel.                                                        
 A Thunar egyéni művelet Parancs mezőjébe ezt írd be:                   
        exo-open --launch TerminalEmulator 1_atrsdel %f                 
                                                                        
 Ellenőrizd le, hogy a törlést végző parancsok telepítve vannak-e.      
 A leírások megjelenítése a terminálban:                                
   $ srm --help                                              
   $ wipe --help
   $ shred --help                                          
 Ha pl. nincs telepítve az srm, ezt az üzeneted kapod:                  
      „srm” parancs nem található, de telepíthető így:                  
      sudo apt install secure-delete  
                                           
************************************************************************
 srm in DEBIAN LINUX
 
 srm v3.1 (c) 1997-2003 by van Hauser / THC <vh@thc.org>   
                 
 Syntax: srm [-dflrvz] file1 file2 etc.                                 
                                                                        
 Options:
 	-d  ignore the two dot special files "." and "..".
 	-f  fast (and insecure mode): no /dev/urandom, no synchronize mode.
	-l  lessens the security (use twice for total insecure mode).
	-r  recursive mode, deletes all subdirectories.
	-v  is verbose mode.
	-z  last wipe writes zeros instead of random data.

 srm does a secure overwrite/rename/delete of the target file(s).
 Default is secure mode (38 writes).
 You can find updates at http://www.thc.org
                                                                     
 Az eredeti srm parancs leírása itt:                                    
 https://linuxcommandlibrary.com/man/srm                                
 Figyelem! Az eredeti srm parancs leírásában felsorolt opciók           
 nem azonosak a fent megado$tt srm v3.1 (c) 1997-2003 van Hauser        
 féle verzióval. Ahhoz csak a felsorolt hat opció használható.          
                                                                        
************************************************************************
 wipe in DEBIAN LINUX                                                  
                                                                       
 Usage: wipe [options] files...                                        
 Options:                                                              
 -a Abort on error                                                     
 -b <buffer-size-lg2> Set the size of the individual i/o buffers       
 	 by specifying its logarithm in base 2. Up to 30 of these           
 	 buffers might be allocated                                         
 -c Do a chmod() on write-protected files                              
 -D Dereference symlinks (conflicts with -r)                           
 -e Use exact file size: do not round up file size to wipe             
 	 possible junk remaining on the last block                          
 -f Force, i.e. don't ask for confirmation                             
 -F Do not attempt to wipe filenames                                   
 -h Display this help                                                  
 -i Informative (verbose) mode                                         
 -k Keep files, i.e. do not remove() them after overwriting            
 -l <length> Set wipe length to <length> bytes, where <length> is      
    an integer followed by K (Kilo:1024), M (Mega:K^2) 
    or G (Giga:K^3)  
 -M (l|r) Set PRNG algorithm for filling blocks (and ordering passes)  
 	 l Use libc's random() library call                                 
 	 a Use arcfour encryption algorithm                                 
 -o <offset> Set wipe offset to <offset>, where <offset> has the       
 	 same format as <length>                                            
 -P <passes> Set number of passes for filename wiping.                 
 	 Default is 1.                                                      
 -Q <number> set number of passes for quick wipe                       
 -q Quick wipe, less secure, 4 random passes by default                
 -r Recurse into directories -- symlinks will not be followed          
 -R Set random device (or random seed command with -S c)               
 -S (r|c|p) Random seed method                                         
    r Read from random device (strong)                                 
    c Read from output of random seed command                          
    p Use pid(), clock() etc. (weakest)                                
 -s Silent mode -- suppresses all output                               
 -T <tries> Set maximum number of tries for free filename search; 
    default is 10                                     
 -v Show version information                                           
 -Z Do not attempt to wipe file size                                   
 -X <number> Skip this number of passes (useful                        
             for continuing a wiping operation)                        
 -x <pass1,pass2,...> Define pass order   
************************************************************************
 wipe in ARCH LINUX
  
 Wipe v2.3.1 - released November 1st, 2009
 by Tom Vier <nester@users.sf.net>
 
 Usage is wipe [options] [file-list]
 Default: wipe -ZdNTVEAkO -S512 -C4096 -l1 -x1 -p1
 Options:       
 
 -h          -- help - display this screen
 -u          -- usage
 -c          -- show copyright and license
 -w          -- show warranty information
 -i  and  -I -- enable (-i) or 
                disable (-I) interaction - overrides force
 -f          -- force file wiping and override interaction
 -r  and  -R -- recursion - traverse subdirectories
 -s          -- silent - disable percentage and error reporting
 -v          -- force verbose - always show percentage
 -V          -- verbose - show percentage if file is >= 25K
 -e  and  -E -- enhance (-e) percentage accuracy or faster writes (-E)
 -d  and  -D -- delete (-d) or keep (-D) after wiping
 -n  and  -N -- delete (-n) or skip (-N) special files
 -k  and  -K -- lock (-k) or don't lock (-K) files
 -z          -- zero-out file - single pass of zeroes
 -Z          -- perform normal wipe passes
 -t  and  -T -- enable (-t) or disable (-T) static passes
 -a  and  -A -- write until out of space (-a) or don't (-A)
 -o[size] -O -- write to stdout (-o) or use files (-O)
 -B(count)   -- block device sector count
 -S(size)    -- block device sector size - default 512 bytes
                or stdout write length when used with -A
 -C(size)    -- chunk size- maximum file buffer size in kilobytes(2^10)
 -l[0-2]     -- sets wipe s$ecure level
 -x[1-32] -X -- sets number of random passes per wipe or disables
 -p(1-32)    -- wipe file x number of times
 -b(0-255)   -- overwrite file with this value byte
************************************************************************
 shred in ARCH LINUX

 Használat: shred [KAPCSOLÓ]… FÁJL…
 A megadott FÁJLT többször egymás után felülírja, így még nagyon 
 költséges hardver megoldásokkal sem lehet könnyen visszaállítani 
 az adatokat.
 
 Ha a FÁJL a -, akkor a szabványos kimenetet semmisíti meg.
 
 A hosszú kapcsolók kötelező argumentumai a rövid kapcsolókhoz is 
 kötelezők.
 -f, --force    jogosultságok megváltoztatása, ha akadályozzák az írást
 -n, --iterations=N  N-szer írja felül az alapértelmezett 3 helyett
     --random-source=FÁJL  véletlenszerű bájtok olvasása 
 -s, --size=N   ennyi bájt megsemmisítése (a k, M, G utótagok 
                megengedettek)
 -u,            fájl foglalásának megszüntetése és törlése 
                felülírás után
     --remove[=ÍGY]  mint a -u, de a törlés módja befolyásolható, 
                     lásd alább
 -v, --verbose  folyamat előrehaladásának mutatása
 -x, --exact    nem kerekíti fel a fájlméretet a következő teljes 
                blokkra ez az alapértelmezés nem szabályos fájlok 
                esetén
 -z, --zero     a végén nullákkal írja felül a fájlt, így álcázva a
                megsemmisítést
     --help     display this help and exit
     --version  output version information and exit
 
 Delete FILE(s) if --remove (-u) is specified.  
 The default is not to remove the files because it is common to operate
 on device files like /dev/hda,   and those files usually should 
 not be removed.
 The optional HOW parameter indicates how to remove a directory entry:
 'unlink' => use a standard unlink call.
 'wipe' => also first obfuscate bytes in the name.
 'wipesync' => also sync each obfuscated byte to the device.
 The default mode is 'wipesync', but note it can be expensive.
 
 CAUTION: shred assumes the file system and hardware overwrite data 
 in place. Although this is common, many platforms operate otherwise.
 Also, backups and mirrors may contain unremovable copies that will let
 a shredded file be recovered later.
 See the GNU coreutils manual for details.
************************************************************************
   "
   end_of_script
fi

if test -d "$1"; then
   OBJFN="könyvtár"
   OBJFK="K"
else
   OBJFN="fájl"
   OBJFK="F"
fi

echo
echo "A törlésre jelölt "$OBJFN": "$OBJ_N

chk_obj_name
get_lin_base
set_del_mode
echo
echo $DLC_R $OBJ_N
echo "
┌──────────────────────────────────────────────────────────────┐
│ Figyelem!  A kiválasztott fájl vagy könyvtár                 │
│ véglegesen és visszaállíthatatlanul törlésre kerül!          │
│                                                              │
│ A könyvtár törlése rekurzív, azaz a beágyazott               │
│ alkönyvtárak és azok tartalma is törölve lesz!               │
└──────────────────────────────────────────────────────────────┘" 
echo
yes_or_no "Valóban törlöd....?"
if [ $YES_NO = "N" ]; then
   echo
   echo "A törlési folyamat megszakítva."
   end_of_script
fi
echo
echo "A törlési folyamat elindítva."
echo "
────────────────────────────────────────────────────────────────"
$DLC_R $OBJ_N
echo "
────────────────────────────────────────────────────────────────"
echo "A törlési folyamat befejezve."
end_of_script
# ************************* Itt a script vége **************************