Sida 1 av 1

Vill skapa ett eget kommando

Postat: 01 jun 2007, 19:22
av Christian Holmberg
Föreställ dig att du sitter i terminalen och ska ändra äganderätten till en mapp

Kod: Markera allt

drond@drond:~$ chown root /var/www
chown: changing ownership of `/var/www': Operation not permitted
fan också du glömde sudo och i ren frustration ber du datorn att ha samlag med sig själv

Kod: Markera allt

drond@drond:~$ fuck you
bash: fuck: command not found
Men jivetvis så verkar det som datorn inte förstår sig på det hela.

Hur ska man gå till väga för att datorn ska förstå kommandot fuck med växlen you och ta och utföra föregående kommando med root/sudo rättigheter?

exempel på hur jag vill att det ska se ut:

Kod: Markera allt

[code]drond@drond:~$ chown root /var/www
chown: changing ownership of `/var/www': Operation not permitted
drond@drond:~$ fuck you
Password:
drond@drond:~$ 
[/code]

SV: Vill skapa ett eget kommando

Postat: 01 jun 2007, 19:43
av DeepThought
Haha, jadu.. jag försökte, men lyckades inte riktigt :(

Min idé var iallafall följande:

!! (två utropstecken) kör det du körde senast.
alias gör att man kan låta bash förstå att om man skriver en sak så betyder det något annat (ex. alias l=ls gör att om man skriver l så körs ls).
sudo kan du ;)

Så något sådant här:

alias fuck_you = "sudo !!"

Men det fungerar inte. Det går åt pipan redan när jag kör kommandot, för då tolkar bash innebörden av !! som det jag skrev precis innan, vilket gör att fuck_you blir ett väldigt lustigt kommando :( Dessutom så låter alias mig inte deklarera två osammanhängande ord ("fuck" och "you") som ett kommando utan jag får skriva ihop det som fuck_you istället..

Jag flyttar tråden till Terminal-tavlan så kanske vi får ett svar från någon som kan ;) (Den är postad i Caféet, för er som inte visste)

SV: Vill skapa ett eget kommando

Postat: 01 jun 2007, 20:42
av Trill
Kommandot innan det föregående bör alltså fungera?
eventuellt !!!?

SV: Vill skapa ett eget kommando

Postat: 01 jun 2007, 21:30
av DeepThought
Trill skrev: Kommandot innan det föregående bör alltså fungera?
eventuellt !!!?
Njae, inte riktigt så. Det blir såhär:

Jag kör ett kommando, t.ex. cd ~. Sedan försöker jag skapa ett alias som jag tänkt skall använda sig av det föregående när det körs, men om jag skriver alias kommando="sudo !!" så tolkas det redan då som alias kommando="sudo cd ~", vilket ju inte var planen.. :( Jag testade även alias kommando='sudo !!' men får då reda på att sudo: !!: command not found

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 10:55
av Konservburk
DeepThought skrev: Jag kör ett kommando, t.ex. cd ~. Sedan försöker jag skapa ett alias som jag tänkt skall använda sig av det föregående när det körs, men om jag skriver alias kommando="sudo !!" så tolkas det redan då som alias kommando="sudo cd ~", vilket ju inte var planen.. :( Jag testade även alias kommando='sudo !!' men får då reda på att sudo: !!: command not found
Vad hade du tänkt dig at "sudo cd ~" skulle göra ?
Det kommandot fungerar ju inte ens utan alias !

Kod: Markera allt

bash$ cd ~
bash$ sudo !!
Password:
sudo: cd: command not found
Problemet är att sudo inte kan köra cd rakt av eftesom det
inte finns något sådant externt kommando. Man kan låta
sudo starta ett subskal och köra cd därifrån, men då gäller
det bara under just det subskalet.

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 10:58
av Konservburk
Christian Holmberg skrev: Hur ska man gå till väga för att datorn ska förstå kommandot fuck med växlen you och ta och utföra föregående kommando med root/sudo rättigheter?
Skapa en skalfunktion "fuck". I den testar du ifall "you" är det
enda argumentet. Om det stämmer så skickar du föregående
kommando till sudo.

Skalfunktioner lägger du lämpligen i ~/.bashrc .

Kod: Markera allt

fuck() { test you = "$*" && fc -ln -1 | sudo -s ;}
fuck() { ... ;} --  Definerar skalfunktionen "fuck".
test you = "$*" --  Testar ifall "you" är det enda argumentet.
&&              --  Fortsätter endast om testet innan lyckades.
fc -ln -1      --  Tar reda på det föregående kommandot.
| sudo -s      --  Skickar vidare till sudo.

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 11:00
av ninetwozero
såå hur gör man för att skapa ett eget kommando? skulle vilja göra massvis med sådana :D

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 11:08
av DeepThought
DrKonservburk skrev: Vad hade du tänkt dig at "sudo cd ~" skulle göra ?
Jag hade inte tänkt att det skulle bli så, det var ett exempel på hur det inte fungerade att göra som jag tänkte (läs: gissade hur det skulle kunna gå till). Som jag skrev så var min tanke egentligen att det skulle
DeepThought skrev: använda sig av det föregående när det körs
Men jag fick det ju inte att fungera, av förklarliga orsaker ;)

Tack för att du klargjorde det hela!

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 17:39
av zenbios
Shadow skrev: såå hur gör man för att skapa ett eget kommando? skulle vilja göra massvis med sådana :D
hoppas det var någon liknande du menade.  8)

http://ubuntu-bossieman.blogspot.com/20 ... andon.html

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 18:03
av Lars
Kanske det är någonting sådant här ni är ute efter:

Kod: Markera allt

fuck() {
    if [ $1 = "you" ]; then
	sudo `history -p !!`
    else
	echo "Fuck who?"
    fi
}
Spara i en fil och kör sedan "source filnamn" för att ladda in funktionen.

SV: Vill skapa ett eget kommando

Postat: 02 jun 2007, 21:01
av ninetwozero
zenbios skrev:
Shadow skrev: såå hur gör man för att skapa ett eget kommando? skulle vilja göra massvis med sådana :D
hoppas det var någon liknande du menade.  8)

http://ubuntu-bossieman.blogspot.com/20 ... andon.html
thanks :D

SV: Vill skapa ett eget kommando

Postat: 03 jun 2007, 15:32
av ipx
Haha, klockren post. Ska testa när jag kommer hem! UNDERBART!