Hej,
potrzebuję napisać prostą powłoke na linuxa z klasami, operującymi na plikach. Nie mam pojęcia od czego zacąć. Mógłby ktoś pomóc ?
Powłoka na linux
-
- Piegowaty Guziec
- Posty: 2
- Rejestracja: 01 lut 2017, 16:59
- enedil
- Przebojowy Jelonek
- Posty: 1352
- Rejestracja: 08 wrz 2012, 16:54
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: i3
- Architektura: x86_64
- Kontakt:
Re: Powłoka na linux
Powłoka powinna być nieskończoną pętlą czekającą na wejście i wykonującą, co zostało podane. Przykład prostej powłoki w Pythonie:
Kod: Zaznacz cały
#!/usr/bin/env python3
from os import getcwd, execvp
from sys import exit
def main():
while True:
try:
line = input("{}$ ".format(getcwd()))
except EOFError: # ctrl+d
exit(0)
args = line.split()
execvp(args[0], args)
def cd(directory):
# ...
pass
# i.t.d.
main()
Dobrze jest, psiakrew, a kto powie, że nie, to go w mordę!
~moderatorzy
~moderatorzy
-
- Piegowaty Guziec
- Posty: 2
- Rejestracja: 01 lut 2017, 16:59
Re: Powłoka na linux
okej, napisałam cos takiego....
czy to jest ok, czy raczej poplątane i pomieszane ?
czy to jest ok, czy raczej poplątane i pomieszane ?
Kod: Zaznacz cały
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fstream>
#include <sstream>
#include <sys/param.h>
#include <sys/types.h>
#include <dirent.h>
#include <fstream>
#include <windows.h>
using namespace std;
int x,t;//
list<string> l;//deklaracja zmiennych
list<string> l1;//
list<string>::iterator it;//dodanie interatora
string nazwa_pliku;//
void data()
{
SYSTEMTIME time;//struktura SYSTEMTIME i nazwanie jej
GetLocalTime(&time);//funkcja pobierajaca date,godzine
HANDLE kolor;
kolor = GetStdHandle( STD_OUTPUT_HANDLE );
int godzina = time.wHour;
int minuta = time.wMinute;
int dzien = time.wDay;
int miesiac = time.wMonth;
int rok = time.wYear;
SetConsoleTextAttribute( kolor, 0x0008 );//zmiana koloru czcionki
cout<<rok<<" "<<dzien<<" "<<miesiac<<" "<<godzina<<":"<<minuta;
cin.get();
}
void otworz()
{
string zawartosc_pliku;
ifstream NowyPlik;
NowyPlik.open("C:\\plik.txt");
while(NowyPlik.good())
{
getline(NowyPlik, zawartosc_pliku);
cout<<zawartosc_pliku<<endl;
}
NowyPlik.close();
cin.get();
}
void usun()
{
char sciezka[MAX_PATH];
cin>>sciezka;
remove(sciezka);
cin.get();
cin.get();
}
void utworz()
{
string znak;//deklaracja zmiennej
cout << " Wpisz swoje notatki ( aby zakoñczyæ wpisywanie w nowej lini wpisz 'wyjdz'" << endl;//komunikat
while(znak != "wyjdz")
{
getline(cin,znak);
if (znak!="wyjdz")
{
l.push_back(znak);
}
}
cout << " Wprowadz nazwe pliku z rozszerzeniem po ." << endl;
cin >> nazwa_pliku;
ofstream plik;
plik.open(nazwa_pliku.c_str());
cout << " wprowadzenie do pliku" << endl;
l.pop_front();
for(it=l.begin() ; it!=l.end() ; it++) /// wpowadzenie zawartosci do pliku
{
plik << *it <<endl;
}
plik.close();
cout << " Wyswietlenie twoich notatek" << endl;
for(it=l.begin() ; it!=l.end() ; it++)
{
t++;
cout << t << " : " << *it << endl;
}
t=0;
}
void kopiuj (string NazwaPliku, string sciezka)
{
int dlugosc=0;
char *bufor=NULL;
fstream NowyPlik;
NowyPlik.open(NazwaPliku.c_str());
NowyPlik.seekg(0, ios::end);
dlugosc=NowyPlik.tellg();
NowyPlik.seekg(0, ios::beg);
NowyPlik.read(bufor,dlugosc);
NowyPlik.close();
ofstream NowyPlik2;
NowyPlik2.open(sciezka.c_str());
NowyPlik2.write(bufor, dlugosc);
NowyPlik2.close();
}
int main()
{
string p;
do
{
cout << " Wpisz polecenie: " << endl;
cin >> p;
if (p!="pomoc")
{
if (p=="utworz")
{
utworz();
l.clear();
l1.clear();
}
if (p=="kopiuj")
{
kopiuj();
l.clear();
l1.clear();
}
if (p=="usun")
{
usun();
l.clear();
l1.clear();
}
if (p=="data")
{
data();
}
}
else
{
if(p=="pomoc")
{
cout << "Polecenia:" << endl;
cout << "data ----- polecenie wyswietla aktualna godzine i date" << endl;
cout << "utworz ----- polecenie tworzy nowy plik z zawarta zawartoscia" << endl;
cout << "usun ----- polecenie usuwa z pliku wedlug wierszy zawartosc" << endl;
cout << "kopiuj ----- polecenie kopiuje jeden plik do drugiego" << endl;
cout << "wyjdz ----- polecenie zamyka dzialanie programu" << endl;
}
else{
cout << " Zle wpisane polecenie wpisz pomoc, aby wyswietlic liste" << endl;
}
}
}
while(p!="wyjdz");
cout << " Zakonczono program " << endl;
return 0;
}
- enedil
- Przebojowy Jelonek
- Posty: 1352
- Rejestracja: 08 wrz 2012, 16:54
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: i3
- Architektura: x86_64
- Kontakt:
Re: Powłoka na linux
No, poza tym, że nie jest to powłoka na Linuksa, mniej więcej tak się to robi. Spodziewałem się powłoki typu n.p. bash, ale czemu nie coś, co służy do tworzenia notatek.
Dobrze jest, psiakrew, a kto powie, że nie, to go w mordę!
~moderatorzy
~moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości