Vill skapa ett eget kommando

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Christian Holmberg
Inlägg: 194
Blev medlem: 02 nov 2006, 22:02
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Vill skapa ett eget kommando

Inlägg 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]
"Use the force Harry" - Gandalf
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

SV: Vill skapa ett eget kommando

Inlägg 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)
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Trill

SV: Vill skapa ett eget kommando

Inlägg av Trill »

Kommandot innan det föregående bör alltså fungera?
eventuellt !!!?
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

SV: Vill skapa ett eget kommando

Inlägg 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
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Vill skapa ett eget kommando

Inlägg 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.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Vill skapa ett eget kommando

Inlägg 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.
Användarvisningsbild
ninetwozero
Inlägg: 973
Blev medlem: 07 feb 2007, 22:43
OS: Ubuntu
Utgåva: 6.06 Dapper LTS
Ort: ---

SV: Vill skapa ett eget kommando

Inlägg av ninetwozero »

såå hur gör man för att skapa ett eget kommando? skulle vilja göra massvis med sådana :D
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

SV: Vill skapa ett eget kommando

Inlägg 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!
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Användarvisningsbild
zenbios
Inlägg: 2153
Blev medlem: 10 maj 2007, 22:24
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

SV: Vill skapa ett eget kommando

Inlägg 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
Bild
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: Vill skapa ett eget kommando

Inlägg 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.
Användarvisningsbild
ninetwozero
Inlägg: 973
Blev medlem: 07 feb 2007, 22:43
OS: Ubuntu
Utgåva: 6.06 Dapper LTS
Ort: ---

SV: Vill skapa ett eget kommando

Inlägg 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
ipx
Inlägg: 167
Blev medlem: 29 apr 2007, 16:21
Ort: Skövde, Sverige

SV: Vill skapa ett eget kommando

Inlägg av ipx »

Haha, klockren post. Ska testa när jag kommer hem! UNDERBART!
Can somebody PLEASE think of the children?
Skriv svar

Återgå till "Terminalforum"