
Dela med dig av dina egna script/*sh-tips
Re: Dela med dig av dina bästa shell-tips
Slöläste releaseloggen för Bash 4.0 och kan meddela att bash numera har stöd för "autocd" som har funnits i zsh länge.
d. There is a new `autocd' option that, when enabled, causes bash to attempt
to `cd' to a directory name that is supplied as the first word of a
simple command.
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Dela med dig av dina bästa shell-tips
Ctrl-u och Ctrl-y
Exempel:
Börjar att skriva ett kommando
$ file * >/tmp/file.txt
Inser innan jag trycker return att jag står i fel mapp
Klipper bort och sparar kommandot (hela kommandot från början av raden till markören)
<ctrl-u>
Går till rätt mapp
$ cd /bin
<return>
Klistrar in sparat kommando
<ctrl-y>
Nu står det åter "file * >/tmp/file.txt" på kommandoraden
Nu kan jag uföra kommandot
<return>
(Det är ofarligt att testa ovanstående exempel i vilken mapp som helst. Du ska inte skriva $, och du ska inte skriva < och >. Det som ser ut som <ctrl-u>, <ctrl-y> och <return> är distinkta tangent-tryckningar.)
Förklaring:
Ctrl-u = unix-line-discard = klipp ut allt före markören
Ctrl-y = yank = klistra in
(Notera att klipp och klistra med tangenter i bash inte har samma klippbord som grafiska kommandon.)
Exempel:
Börjar att skriva ett kommando
$ file * >/tmp/file.txt
Inser innan jag trycker return att jag står i fel mapp
Klipper bort och sparar kommandot (hela kommandot från början av raden till markören)
<ctrl-u>
Går till rätt mapp
$ cd /bin
<return>
Klistrar in sparat kommando
<ctrl-y>
Nu står det åter "file * >/tmp/file.txt" på kommandoraden
Nu kan jag uföra kommandot
<return>
(Det är ofarligt att testa ovanstående exempel i vilken mapp som helst. Du ska inte skriva $, och du ska inte skriva < och >. Det som ser ut som <ctrl-u>, <ctrl-y> och <return> är distinkta tangent-tryckningar.)
Förklaring:
Ctrl-u = unix-line-discard = klipp ut allt före markören
Ctrl-y = yank = klistra in
(Notera att klipp och klistra med tangenter i bash inte har samma klippbord som grafiska kommandon.)
Re: Dela med dig av dina bästa shell-tips
kanske redan finns här, men jag brukar använda detta kommando när jag behöver ta en snabb backup på en konfigurationsfil innan jag ändrar i den
eller, när jag inte behöver så många versioner av konfiurationsfilen, och inte bryr mog om jag skriver över någon äldre version
Kod: Markera allt
$ cp filnamn{,.$(date +%y%m%d).bak}
Kod: Markera allt
cp filnamn{,.bak}
-
- Inlägg: 466
- Blev medlem: 16 apr 2008, 21:54
- OS: Ubuntu
- Utgåva: 16.04 Xenial Xerus LTS
Re: Dela med dig av dina bästa shell-tips
Grymt bekvämt.Kod: Markera allt
cp filnamn{,.bak}
Synd att det inte funkar i ubuntus sh (dash) bara. Men bash är ju fortfarande login shell iaf.
Man får vara försiktig så man inte använder det närsomhelst.
Hittade detta dokument, för alla som är intresserade över hur det skiljer sig åt; https://wiki.ubuntu.com/DashAsBinSh
MER MAKT TILL MIG! JAG BESTÄMMER!
Re: Dela med dig av dina bästa shell-tips
palle-kuling skrev:Grymt bekvämt.Kod: Markera allt
cp filnamn{,.bak}
Synd att det inte funkar i ubuntus sh (dash) bara. Men bash är ju fortfarande login shell iaf.
Man får vara försiktig så man inte använder det närsomhelst.
Hittade detta dokument, för alla som är intresserade över hur det skiljer sig åt; https://wiki.ubuntu.com/DashAsBinSh
Du har rätt, jag var inte tydlig att det var bash det gällde, måste tänka på det...
Re: Dela med dig av dina bästa shell-tips
Apropå datum funktioner.
$ date
är en guldgruva! Ett enklare sätt att få veckonummer ån ncal är
Har satt ihop ett händigt litet shellscript som jag kallar "isow" (iso-week):
som gör att man enkelt får ut datum på olika sätt för att t ex använda i andra script.
$ isow -h
ger optionerna.
$ date
är en guldgruva! Ett enklare sätt att få veckonummer ån ncal är
Kod: Markera allt
$ date +"%V"
Kod: Markera allt
#!/bin/sh
#
# ISO week function
# Uses `date' function to present various ISO date formats
#
if [ "$1" = "-d" ] ; then
date --iso-8601
elif [ "$1" = "-dt" ] ; then
datum=`date --iso-8601` ; datum="$datum `date +"%T"`"; echo $datum
elif [ -z "$1" ] ; then
date +"%V"
elif [ ${#1} -gt 5 ] ; then
date --date=$1 +"%V"
else
echo "Usage: isow [-d|-dt|-h]"
echo " prints ISO week number"
echo " -d prints ISO date"
echo " -dt prints ISO date + local time"
echo " -h prints this help message"
echo " isow YYYYMMDD|YYYY-MM-DD prints ISO week number of given date"
fi
$ isow -h
ger optionerna.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Dela med dig av dina bästa shell-tips
Vad använder du för editor som inte gör backuper per automatik?Barre skrev:kanske redan finns här, men jag brukar använda detta kommando när jag behöver ta en snabb backup på en konfigurationsfil innan jag ändrar i den
eller, när jag inte behöver så många versioner av konfiurationsfilen, och inte bryr mog om jag skriver över någon äldre versionKod: Markera allt
$ cp filnamn{,.$(date +%y%m%d).bak}
Kod: Markera allt
cp filnamn{,.bak}
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Dela med dig av dina bästa shell-tips
Man kanske bör påpeka att bash och dash skiljer sig åt på betydligt fler sätt än vad som listas i den länken.palle-kuling skrev:Grymt bekvämt.Kod: Markera allt
cp filnamn{,.bak}
Synd att det inte funkar i ubuntus sh (dash) bara. Men bash är ju fortfarande login shell iaf.
Man får vara försiktig så man inte använder det närsomhelst.
Hittade detta dokument, för alla som är intresserade över hur det skiljer sig åt; https://wiki.ubuntu.com/DashAsBinSh
Re: Dela med dig av dina bästa shell-tips
Men herregud, vilken attityd och extremt konstig tolkning av min post?Konservburk skrev: Vad använder du för editor som inte gör backuper per automatik?
Jag har inte nämnt någonstans att jag använder någonsomhelst editor i min post... jag har läst det min post ett flertal gånger nu för att försöka hitta texten där jag refererar till editorer, men inte lyckats....
Kan i min själ inte förstå var din nyfikenhet om vilken editor jag använder kommer ifrån, men jag skall tala om det för dig.
Jag använder vi (eller snarare vim), jag är fullt medveten om att man kan ställa in vi att göra automatiska backupper av filer.
Jag tolkar din relativt konstiga fråga att du ifrågasätter behovet att ta backup på konfigurationsfiler innnan man gör förändringar i dem. Och det anser jag är naivt.... För att inte på gränsen till "off topic".
Jag har läst ganska många av dina inlägg och vet att du Konservburk är väl bevandrad i terminalernas förtrollade värld, och jag skulle bli mycket förvånad om du aldrig använd sed för att ändra t.ex en IP-adress i en fil...
Re: Dela med dig av dina bästa shell-tips
Utanför ämnet: Smaken är som baken...
Jag stänger alltid av automatisk backup i editorn.
Jag stänger alltid av automatisk backup i editorn.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Dela med dig av dina bästa shell-tips
Men snälla Barre, det var inte alls meningen att du skulle ta illa upp. Jag brukar inte använda brace expansion på just det sättet. Antagligen mest för att själv upplever cp filnamn !#$~ vara smidigare ihop med autokomplettering. Jag tyckte dock det var en intressant idé med datummarkering av backuperna och funderade då över varför jag inte redan hade en sådan skalfunktion i min ~/.bashrc (jag är för lat för att skriva hela det kommandot varje gång) och kom då fram till att min editor redan automatiskt ordnar backuper åt mig.Barre skrev:Men herregud, vilken attityd och extremt konstig tolkning av min post?Konservburk skrev: Vad använder du för editor som inte gör backuper per automatik?
Du skrev "innan jag ändrar i den", vilket jag tolkade som att du kör backupkommandot precis innan du använder en editor.Barre skrev:Jag har inte nämnt någonstans att jag använder någonsomhelst editor i min post... jag har läst det min post ett flertal gånger nu för att försöka hitta texten där jag refererar till editorer, men inte lyckats....
Är det så att det krävs att man själv gör någon inställning för att vim ska ordna automatiska backuper? Jag minns inte riktigt hur det var med den saken. :-/Barre skrev:Kan i min själ inte förstå var din nyfikenhet om vilken editor jag använder kommer ifrån, men jag skall tala om det för dig.
Jag använder vi (eller snarare vim), jag är fullt medveten om att man kan ställa in vi att göra automatiska backupper av filer.
Då är jag formodligen naiv. Om editorn gör en backup ser jag inte riktigt syftet med att själv göra en egen. Ordentlig versionshantering av konfigurationsfiler är ett intressant ämne, men nu har vi som du redan påpekat hamnat helt "off topic".Barre skrev:Jag tolkar din relativt konstiga fråga att du ifrågasätter behovet att ta backup på konfigurationsfiler innnan man gör förändringar i dem. Och det anser jag är naivt.... För att inte på gränsen till "off topic".
Jag brukar undvika att använda "sed -i" just eftersom orginalfilen då går förlorad.Barre skrev:Jag har läst ganska många av dina inlägg och vet att du Konservburk är väl bevandrad i terminalernas förtrollade värld, och jag skulle bli mycket förvånad om du aldrig använd sed för att ändra t.ex en IP-adress i en fil...
-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Dela med dig av dina bästa shell-tips
Ett litet shell-tips: Med sed -i~ och perl -i~ så sparas en backup som slutar på ~.Konservburk skrev: Jag brukar undvika att använda "sed -i" just eftersom orginalfilen då går förlorad.
Exempel:
Kod: Markera allt
sed -i~ 's/shit/skit/g' *.txt
Kod: Markera allt
perl -i~ -pe 's/skit/shit/g' *.txt
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Dela med dig av dina bästa shell-tips
Tack för tipset. Mycket praktiskt, åtminstone så länge man inte har något emot att låta editorn (i det här fallet sed eller perl) ta hand om backup:andet.David Andersson skrev:Ett litet shell-tips: Med sed -i~ och perl -i~ så sparas en backup som slutar på ~.Konservburk skrev: Jag brukar undvika att använda "sed -i" just eftersom orginalfilen då går förlorad.
-
- Inlägg: 466
- Blev medlem: 16 apr 2008, 21:54
- OS: Ubuntu
- Utgåva: 16.04 Xenial Xerus LTS
Re: Dela med dig av dina bästa shell-tips
Strålande! Nu vart jag glad. Vad mycket man lär sig i denna tråden.Ett litet shell-tips: Med sed -i~ och perl -i~ så sparas en backup som slutar på ~.
Utanför ämnet: Jag skrev en plugin till gedit som spara backuper centralt i .gedit-backups istället för att sprida ut dem över hela systemet! Jag är nog ingen riktig man, så jag kör inte vi(m).
MER MAKT TILL MIG! JAG BESTÄMMER!
Re: Dela med dig av dina egna script/*sh-tips
mpdrand;
Lägger till n antal slumpvist utvalda låtar från mpd-biblioteket till spellistan.
mpdfav;
Lägger till alternativt skapar en spellista med favoritlåtar. Jag använder det för att skapa en spellista med bra musik som sedan förs över till den bärbara mp3-spelaren inför nattens arbete (se nedan).
För att kopiera låtarna ifrån spellistan till mp3-spelaren kan man använda sig av;
Lägger till n antal slumpvist utvalda låtar från mpd-biblioteket till spellistan.
Kod: Markera allt
#!/bin/sh
if [ -n "$1" ]; then
TRACKS="$1"
else
TRACKS=10
fi
mpc clear > /dev/null && mpc listall|sort -R|head -n $TRACKS|mpc add && mpc play > /dev/null
Lägger till alternativt skapar en spellista med favoritlåtar. Jag använder det för att skapa en spellista med bra musik som sedan förs över till den bärbara mp3-spelaren inför nattens arbete (se nedan).
Kod: Markera allt
#!/bin/sh
LISTDIR=/mnt/Music_2/Playlists
if [ "$1" ];
then
NAME="$1.m3u"
else
NAME=$(date +%Y%m%d).m3u
fi
if [ -f "$LISTDIR/$NAME" ];
then
echo $(mpc --format %file%|head -1 >> $LISTDIR/$NAME)
else
echo $(mpc --format %file%|head -1 > $LISTDIR/$NAME)
fi
echo -e " CONTENT:\n"
cat $LISTDIR/$NAME
Kod: Markera allt
cp -v $(cat favlist.m3u) /mnt/mp3spelare
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Dela med dig av dina egna script/*sh-tips
[besserwisser]dmz skrev:Kod: Markera allt
if [ -f "$LISTDIR/$NAME" ]; then echo $(mpc --format %file%|head -1 >> $LISTDIR/$NAME) else echo $(mpc --format %file%|head -1 > $LISTDIR/$NAME) fi
Omdirigering till fil med >> lägger till i slutet om filen finns och skapar en fil om den inte finns. Man behöver alltså inte testa om filen finns. Ovanstående sex rader kan ersättas med
Kod: Markera allt
echo $(mpc --format %file%|head -1 >> $LISTDIR/$NAME)
Kod: Markera allt
mpc --format %file%|head -1 >> $LISTDIR/$NAME
[/besserwisser]
Re: Dela med dig av dina egna script/*sh-tips
David Andersson skrev: Omdirigering till fil med >> lägger till i slutet om filen finns och skapar en fil om den inte finns. Man behöver alltså inte testa om filen finns.
Kod: Markera allt
scp1:shiva » echo nej >> jo
zsh: no such file or directory: jo

ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 1269
- Blev medlem: 15 dec 2007, 03:20
- OS: Xubuntu
Re: Dela med dig av dina egna script/*sh-tips
[messerschmitt]dmz skrev:David Andersson skrev: Omdirigering till fil med >> lägger till i slutet om filen finns och skapar en fil om den inte finns. Man behöver alltså inte testa om filen finns.En bashism, med andra ord.Kod: Markera allt
scp1:shiva » echo nej >> jo zsh: no such file or directory: jo
Min dator är bättre än din dator
zsh
ls jo
ls: cannot access jo: No such file or directory
echo nej >> jo
ls jo
jo
[/messerschmitt]
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Dela med dig av dina egna script/*sh-tips
Det är precis tvärtom... zsh spökar för dig igen (Du har lyckats aktivera NO_CLOBBER). Kör set +C och gör ett nytt försök så ska du se att det går bättre. >> har faktiskt fungerat som David beskriver ända sedan början av 70-talet, en sådär 15 år innan bash ens blev påtänkt.dmz skrev:David Andersson skrev: Omdirigering till fil med >> lägger till i slutet om filen finns och skapar en fil om den inte finns. Man behöver alltså inte testa om filen finns.En bashism, med andra ord.Kod: Markera allt
scp1:shiva » echo nej >> jo zsh: no such file or directory: jo