Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Ce contine Creion rani dupa ras?

Filtru sedimente inainte de pompa?

Paște fericit!

electrician constructor video curs
 Cum pot bloca transferul de date ...

Ce reprezinta in chimie abrevieri...

Google pay ma taxeaza in timp ce ...

Kia Picanto 2022 - Problema motor?
 Durere umar AC Joint

Care este cea mai sanatoasa paine?

Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?
 Nu pot activa Memory Integrity

Supratensiuni accidentale

Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...
 

Shell Script

- - - - -
  • Please log in to reply
9 replies to this topic

#1
AlexandruSD

AlexandruSD

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 01.02.2020
Salutare. Am și eu nevoie de puțin ajutor Am primit o temă, făcând doar puțin script, și umblând foarte puțin cu linux, nu prea mă descurc. Trebuie să creez un script (în Ubuntu) prin care se care copiază la o cale separată doar fișierele în care un anumit utilizator a modificat mai mult de 20 de linii la o anumită dată.

Știu că pentru a copia un fișier în altă parte folosesc codul acesta:
$ ls dir1/
dir2/
$ cp -r dir1/ dir1.copy
$ ls dir1.copy
dir2/


Dar cum aș putea face să verific dacă un utilizator a modificat mai mult de 20 de linii, într-un fisier (de ex un simplu txt, la data de astazi de exemplu).

Vă mulțumesc anticipat (enorm)!

#2
Argv

Argv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,511
  • Înscris: 25.10.2007
Esti sigur ca enuntul este complet?

#3
shogun1

shogun1

    Cranky old n00b ☯

  • Grup: Senior Members
  • Posts: 7,542
  • Înscris: 31.01.2009
Fișierele respective sunt salvate ca backup la editare/ modificare? Că altfel cum verifici diferențele?

#4
AlexandruSD

AlexandruSD

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 01.02.2020
Da... ar mai lipsi ceva?Posted Image

View Postshogun1, on 22 mai 2020 - 18:53, said:

Fișierele respective sunt salvate ca backup la editare/ modificare? Că altfel cum verifici diferențele?
Asta este toate cerința nu mi s-a spus mai mult..
Cunosc:
wc -l fisier1 //numara lini
find ~/director -mtime –print
mtime [+|-] (n) - specifica toate fisierele modificate in ultimele (n) zile;

Probabil.. (si sigur) este cum spui, că altcumva nu ai putea verifica nr de linii..

Edited by Dany_Darke, 22 May 2020 - 19:54.


#5
shogun1

shogun1

    Cranky old n00b ☯

  • Grup: Senior Members
  • Posts: 7,542
  • Înscris: 31.01.2009

View Postshogun1, on 22 mai 2020 - 18:53, said:

Fișierele respective sunt salvate ca backup la editare/ modificare? Că altfel cum verifici diferențele?

LE: nu folosesc Ubuntu, nu știu ce editor folosește (Gedit, nano), modifică un fișier local și vezi dacă după salvare/ închidere apare un nou fișier cu același nume și extensie .bak sau ~ (de exemplu fișierul test și test.bak sau test~).
Dacă da poți verifica diferențele între cele 2 fișiere în terminal, îți vor fi afișate toate liniile modificate:
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' test test.bak



#6
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
Ca de obicei, problema nu e de scripting/shelling, ci tine de înțelegerea problemei/cerinței in sine.

#7
shogun1

shogun1

    Cranky old n00b ☯

  • Grup: Senior Members
  • Posts: 7,542
  • Înscris: 31.01.2009
@AlexandruSD.
Căutarea și listarea fișierelor modificate azi, să zicem din directorul /home/userul-tău/Desktop:
find ~/Desktop -type f -newermt 2020-05-22 -ls

Verificarea fișierelor să vezi numărul de linii modificate (ca să nu-ți înșire liniile direcționezi outputul în alt fișier și-i numeri liniile cu wc, te interesează numărul în sine):
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' test test.bak > test1 ; wc -l test1

Copierea fișierelor cu pricina o faci cu cp file1 file2 file3... filex destinație. Fără parametrul -r (-R, --recursive), acesta se folosește la directoare (foldere) pentru copierea sub-directoarelor și fișierelor din director!

#8
AlexandruSD

AlexandruSD

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 01.02.2020
Iți mulțumesc enorm! Posted Image

Ar fi necesar să pun un if .. sau ceva, după wc (trebuie doar fișierele cu 20 de rânduri)?..

Ca să creez programul este intr-un fișier executabil, este bine așa?
$ vi tema.sh
#!/bin/bash
find ~/Desktop -type f -newermt 2020-05-22 -ls
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' test test.bak > test1 ; wc -l test1
cp test1


Mersi frumos, încă odată..!

Edited by Dany_Darke, 22 May 2020 - 22:15.


#9
shogun1

shogun1

    Cranky old n00b ☯

  • Grup: Senior Members
  • Posts: 7,542
  • Înscris: 31.01.2009
Ai testat acel executabil?  Posted Image  Crează-ți un director în care să faci teste, crează câteva fișiere, le modifici câteva linii (la unele 2-3, alte 20-25 linii, cu ocazia asta verifici dacă editorul text folosit le face backup/ btw, Gedit parcă numește fișierele de backup nume-fișier.bak, nano nume-fișier~), testează comenzile pe rând, încearcă să faci un script în care să combini acele comenzi, șamd.
Eu ți-am dat comenzi care fac PAȘII pe care nu știai tu să-i faci în Linux (aflarea fișierelor modificate la data precizată, aflarea numărului de linii modificate), la modul generic, tu trebuie să faci acum o funcție bash care să le combine și să facă ce se dorește.
Și da, cred că va trebui să folosești if, then, dar asta va trebui să faci singur. Documentează-te puțin. https://www.gnu.org/...#Context-Format

#10
AlexandruSD

AlexandruSD

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 01.02.2020

View Postshogun1, on 23 mai 2020 - 08:44, said:

Ai testat acel executabil?  Posted Image  Crează-ți un director în care să faci teste, crează câteva fișiere, le modifici câteva linii (la unele 2-3, alte 20-25 linii, cu ocazia asta verifici dacă editorul text folosit le face backup/ btw, Gedit parcă numește fișierele de backup nume-fișier.bak, nano nume-fișier~), testează comenzile pe rând, încearcă să faci un script în care să combini acele comenzi, șamd.
Eu ți-am dat comenzi care fac PAȘII pe care nu știai tu să-i faci în Linux (aflarea fișierelor modificate la data precizată, aflarea numărului de linii modificate), la modul generic, tu trebuie să faci acum o funcție bash care să le combine și să facă ce se dorește.
Și da, cred că va trebui să folosești if, then, dar asta va trebui să faci singur. Documentează-te puțin. https://www.gnu.org/...#Context-Format
Mersi frumos. Posted Image

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate