Yanıtlar:
Bu !!, bu cevapta belirtilen numara üzerinde biraz genişler . Aslında, unutulmaya çalışan bir sürü tarihle ilgili komut vardır (insanlar Upyazdıkları bildikleri bir emri yerine 100 kez bıçaklanma eğilimindedir ).
historyKomut sola bir olay göstergesiyle birlikte son çalıştırılan komutların bir listesini gösterir!N olay göstergesine bağlı komutu yerine koyacaktır N!-Nen son N inci komutu yerine geçecek ; örneğin !-1, en son komutun yerine, en son !-2ikinci komutun yerine geçecektir .!!için!-1!string ile başlayan en son komutun yerini alacak string!?string? içeren en son komutun yerini alacak string!Sonuçları değiştirmek için sözcük tanımlayıcılar bir tarih komutuna eklenebilir . Bir kolon, olayı ve kelime belirleyicileri ayırır, örn !!:0. Etkinlik tanımlayıcı !!, yalnızca !bir sözcük tanımlayıcı kullanıldığında kısaltılabilir !!:0, buna eşdeğerdir !:0.
!:0 idam edilen komutu alacak!:1ilk argümanı alacaksınız (ve !:2ikincisi, vb.)!:2-3 ikinci ve üçüncü argümanları alacak!:^ilk tartışmayı almanın başka bir yolu. !:$son alacak!:*Tüm argümanları alır (ancak komutu değil )Değiştiriciler ayrıca !her biri iki nokta üst üste eklenmiş bir tarih komutuna eklenebilir . Herhangi bir sayı (örneğin !:t:r:p) üzerine istiflenebilir .
h - Temel dosya adına göre sıralat - Sadece temel dosya adır - Dosya adı uzantısına göre sıralae - Yalnızca dosya adı uzantısıs/search/replacement- ilk geçtiği yerine searchilereplacementgs/search/replacement- tüm oluşumları değiştirin searchilereplacement!-#. !stringDizeyle başlayan son komutu çalıştırmak için kullanıyorum , ancak doğru şeyi çalıştırdığımdan emin olmak için genellikle ilk önce tab-tamamladım (zsh)
!Nkomutu çalıştırılacak ..." bir açıklama çok dar; aslında, !Nkomutla değiştirilecektir ...; ve cevabındaki tüm açıklamalar için. Daha doğru ve çok daha kullanışlı olasılıklar açılıyor! Örneğin, belirtilen sudo !!.
bash; Emacs'ta, giriş komutlarının ve değerlerinin geçmişine göz atmak için (Mx veya diğer okuma değerleri için) biri yerine Meta-R kullanılır (Meta-R, eshellEmacs'ta da kullanılır ). Bu yüzden onları sık sık karıştırırım.
bash - önceki satırın son parametresini ekle
alt- . Şimdiye kadarki en kullanışlı tuş kombinasyonu, denemek ve görmek, nedense kimse bu konuda bilmiyor.
eski son parametreleri seçmek için tekrar tekrar basın.
Sadece bir an önce kullandığınız argümana / dosyaya daha fazla şey yapmak istediğinizde harika.
alt- .önceki komuta gider ve son argümanı ondan çeker. Üç komutlar önce son argüman istiyorsanız Yani, sadece vurmak alt- .üç kez.
yank-last-argreadline komutu için varsayılan anahtar bağlamadır , bu nedenle yalnızca BASH veya ZSH ile değil, readline'a bağlı herhangi bir programla çalışması gerekir.
Benim favorim
man 7 ascii
Basit ve çok çok kullanışlı.
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
020 16 10 DLE (data link escape) 120 80 50 P
021 17 11 DC1 (device control 1) 121 81 51 Q
022 18 12 DC2 (device control 2) 122 82 52 R
023 19 13 DC3 (device control 3) 123 83 53 S
024 20 14 DC4 (device control 4) 124 84 54 T
025 21 15 NAK (negative ack.) 125 85 55 U
026 22 16 SYN (synchronous idle) 126 86 56 V
027 23 17 ETB (end of trans. blk) 127 87 57 W
030 24 18 CAN (cancel) 130 88 58 X
031 25 19 EM (end of medium) 131 89 59 Y
032 26 1A SUB (substitute) 132 90 5A Z
033 27 1B ESC (escape) 133 91 5B [
034 28 1C FS (file separator) 134 92 5C \ '\\'
035 29 1D GS (group separator) 135 93 5D ]
036 30 1E RS (record separator) 136 94 5E ^
037 31 1F US (unit separator) 137 95 5F _
040 32 20 SPACE 140 96 60 `
041 33 21 ! 141 97 61 a
042 34 22 " 142 98 62 b
043 35 23 # 143 99 63 c
044 36 24 $ 144 100 64 d
045 37 25 % 145 101 65 e
046 38 26 & 146 102 66 f
047 39 27 ' 147 103 67 g
050 40 28 ( 150 104 68 h
051 41 29 ) 151 105 69 i
052 42 2A * 152 106 6A j
053 43 2B + 153 107 6B k
054 44 2C , 154 108 6C l
055 45 2D - 155 109 6D m
056 46 2E . 156 110 6E n
057 47 2F / 157 111 6F o
060 48 30 0 160 112 70 p
061 49 31 1 161 113 71 q
062 50 32 2 162 114 72 r
063 51 33 3 163 115 73 s
064 52 34 4 164 116 74 t
065 53 35 5 165 117 75 u
066 54 36 6 166 118 76 v
067 55 37 7 167 119 77 w
070 56 38 8 170 120 78 x
071 57 39 9 171 121 79 y
072 58 3A : 172 122 7A z
073 59 3B ; 173 123 7B {
074 60 3C < 174 124 7C |
075 61 3D = 175 125 7D }
076 62 3E > 176 126 7E ~
077 63 3F ? 177 127 7F DEL
Commandlinefu.com web sitesine bakınız .
Peteris Krumins'in bu dört makalesine blogunda bakabilirsiniz.
ascii program da yararlıdır. Tablo yazdırmanın yanı sıra, bir veya daha fazla bireysel karakter için sorgu yapmanızı sağlar.
Bunun bir "hile" olarak sayılıp sayılmadığından emin değiliz, ancak insanlar standart okuma satırı kısayol tuşlarından habersiz görünüyorlar. Özellikle kabuklarda kullanım:
Ctrl+LFormFeed ascii karakterine karşılık gelir. Genellikle ekran pencereli metin uygulamalarında ekranı yeniden çizer (ör. Vim, daha az, mc, vb.). Ekran başka bir programın bir çıktısı tarafından "kirlenmiş" ise, güzel.
Ctrl+Wbir sözcüğü geriye doğru kesmek, bir sözcüğü Alt+Fileri Alt+Bgitmek, bir sözcüğü bir satır geriye doğru gitmek. Seviyorum Ctrl+Yve Shift+Insertçünkü iki kopyalanmış hattınız olabilir. Biri ile Ctrl+U(yapıştırın Ctrl+Y) ve aynı zamanda başka bir kelimeyi kopyalayabilirsiniz (satırı seçin) ile yapıştırın ( Shift+Insert).
CTRLRÖnceden yürütülen komutları aramak / etkinleştirmek için BASH içinde + (~ / .bash_history içeriği).
Bu genellikle son derece yararlıdır. Bu diğer adı kullanmak, 8000 numaralı bağlantı noktasında HTTP üzerinden PWD'ye (dizine alınmış) hizmet eder:
alias webserver="python -m SimpleHTTPServer"
Ve her zaman koştuğum ve çok hızlı bir şekilde fırladığım ve yazdığım için, bu takma adlar muhtemelen en çok kullandığım (ciddi):
alias maek=make
alias mkae=make
alias meak=make
alias amka=make
alias akme=make
Muhtemelen en sık kullandığım BASH parçam, yüklediğim basit bir betik. Herhangi bir içeriği Linode'ime karıştırmak için kullanıyorum ve sonuçta ortaya çıkan HTTP URL'sini panoya kopyalar (orta tıklama). IRC’deki insanlara malzeme yapıştırmak için çok kullanışlıdır:
scp -r $* $user@$host:public_html && {
URL="http://$host/~$user/$(basename $1)"
echo "$URL"
xselection -replace PRIMARY "$URL"
}
Sadece bir çift. Daha sonra gönderebilirim, işe geri dönmeliyim!
alias mk=makeDaha hızlı yazmaya ve daha az yanlış anlama olasılığı var. Veya bir kısayol tuşu kullanarak editörünüzden derleyin ...
alias m=makehatta ya m=make -j6zaten kullanmak dışında - ya da benzer alias m=mutt☺
Oldukça basit, ama insanlar bilmiyor gibi gözüküyor, sizi bir önceki yönetime geri veriyor:
cd -
cd..DOS'tan kas hafızamda DOS kökleşmiş ...
cdsizi ana dizininize götüren (tartışmasız) da var.
Ayraç genişletme, rastgele dizelerin üretilebileceği bir mekanizmadır.
Bu gibi sıkıcı satırları değiştirmenize olanak sağlar:
mv loong/and/complex/file/name loong/and/complex/file/name.bacukup
daha kısa sürede
mv loong/and/complex/file/name{,backup}
diğer bazı kullanımlar
# to display the diff between /etc/rc.conf and /etc/rc.conf.pacsave
diff /etc/rc.conf{,.pacsave}
# to list files in both /usr/share and /usr/local/share
ls /usr/{,local}/share
Aritmetik Genişletme :
Aritmetik genişleme, bir aritmetik ifadenin değerlendirilmesine ve sonucun değiştirilmesine olanak sağlar. Aritmetik genişleme formatı şudur:
$((expression))İfade, çift tırnak içine alınmış gibi ele alınır, ancak parantez içindeki çift tırnak işareti özel olarak ele alınmaz. İfadedeki tüm simgeler, parametre genişletme, dize genişletme, komut değiştirme ve alıntı kaldırma işleminden geçer. Aritmetik genişlemeler iç içe geçmiş olabilir.
$ a=1
$ b=2
$ echo $(( a+(b*2) ))
5
foo[123]genişleyeceği daha kompakt bir konu da var foo1 foo2 foo3, ancak bu durumda çalışmak için dosya
Bu genellikle benim başlangıç betiğimde (.bashrc, .profile, herneyse)
shopt Allahım, yorumları kontrol et:
shopt -s cdspell # try to correct typos in path
shopt -s dotglob # include dotfiles in path expansion
shopt -s hostcomplete # try to autocomplete hostnames
Tuş vuruşlarını kaydeden bir takma ad:
mkdirve cdiçine:
mkcd () { mkdir -p "$@" && cd "$@"; }
Ve son fakat en az değil, tar sözdizimini ezberlemekten vazgeçtim.
extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
mkcdSadece kimliğimi isimle benzer bir işleve sahibim md. Ancak, "$ @" ifadesini cd argümanı olarak kullanmak bir anlam ifade etmez, çünkü birden fazla dizine cd yazamazsınız. "$ @" mkdir için çalışacak, ancak daha sonra mkdir ve cd için farklı argümanlarla md () { mkdir -p "$1"; cd "$1" }
Beni birçok tuş vuruşundan kurtaran iki bash işlevi.
Her başarılı cd'den sonra otomatik olarak bir ls yapın:
function cd {
builtin cd "$@" && ls
}
Go n seviyeleri:
# Usage .. [n]
function .. (){
local arg=${1:-1};
local dir=""
while [ $arg -gt 0 ]; do
dir="../$dir"
arg=$(($arg - 1));
done
cd $dir #>&/dev/null
}
builtin fooBir işlevi tanımlamaktan kurtulmak için yapabileceğinizi asla anlamadım cd; chdirİşlevlerimde kullanıyorum . Handy
cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
Genelde arama yapmak istemeden önce komut satırının yarısı kadar olduğum için (bash'te CTRL-R).
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
Bu, eğer cd yazıp yukarı / aşağı basarsam cd yaptığım tüm seçenekleri görebileceğim anlamına gelir. Temelde bunu sıkça kullanılan dir. "Cd w" gibi ve ben de kullandığım tüm çalışma alanlarından geçiyorum.
Bana zaman kazandıran şeylerden biri pushd / popd komutları. Bu adamlar bir yığın dizin oluşturmanıza ve yazmayı çok azaltmanıza izin verir:
/foobar/ > pushd /src/whatever/foo/test
/foobar/src/whatever/foo/test > make run
/foobar/src/whatever/foo/test > popd
/foobar/ > make
uve odurmak?
setopt autopushdve tüm dizin değişiklikleri otomatik olarak
screen Komut . Temelde geri döndüğünüzde komut satırı oturumunuzu kaydeder. Bir tür terminal yöneticisi, bir pencere yöneticisi gibi. Bu şekilde, tek bir terminal oturumunda, devam eden birden fazla sanal terminaliniz olabilir. Çok havalı.
Biri kullanırsa screen, bu kabuk işlevi (içine koymak .bashrc) son derece kullanışlıdır:
function scr {
if screen -ls | grep -q Main; then
# reattach to Main:
screen -xr Main
else
# name session "Main":
screen -S Main
fi
}
yazarak üzerine scrana oturumu varsa, onu kontrol eder ve ona ekleyecektir. Aksi takdirde onu yaratacaktır.
Bash'ta özellikle uzun bir komut satırı düzenlemeniz gerekirse
^X^E (Ctrl-X Ctrl-E)
editörde açılacaktır ($ EDITOR).
Zsh'de, bunu .zshrc dosyasına ekleyerek aynı davranışı elde edebilirsiniz:
autoload edit-command-line
zle -N edit-command-line
bindkey '^X^e' edit-command-line
Hızlı bir daktiloysanız, bunlar işe yarar:
alias grpe='grep --color=tty'
alias gpre='grep --color=tty'
alias rgep='grep --color=tty'
alias gerp='grep --color=tty'
Bu makro bir çıktı sütununun toplamını hesaplamanıza yardımcı olur: dosya boyutları, baytlar, paketler, yapmanız gereken tek şey eklemek istediğiniz sütunu belirtmektir:
total ()
{
if [ x$1 = x ]; then set `echo 1`; fi
awk "{total += \$$1} END {print total}"
}
Bunu böyle kullanırsınız, örneğin, argüman olmadan, ilk sütunun toplamını ekler:
du | total
Argümanı sağlarsanız, bu sütunu toplayacaktır, örneğin, bu size / tmp içindeki tüm C # dosyalarının kullandığı toplam bayt sayısını verir:
ls -l /tmp/*cs | total 5
Bazen konsolunuz bozulur çünkü yanlışlıkla bir ikili dosya görüntüleyebilirsiniz (örneğin, cat / bin / ls), terminali şu kabuk işleviyle geri yükleyebilirsiniz:
restaura ()
{
perl -e 'print "\e)B";'
}
Dosya sınıfını ayırt etmek ve aynı zamanda editörüm tarafından oluşturulan yedekleme dosyalarını gizlemek için (yedekleme dosyaları ~ karakteriyle biten) ls'lerin karakter kullanmasını seviyorum.
alias ls='ls -FB'
s/fast/sloppy/
resetyeri kullanıyorum restaura.
alias s='sudo'
alias r='rake' # i'm a ruby developer
alias ..='cd ..' # although with autocd feature for zsh this comes packed.
Unuttuğum zaman favorilerimden biri s:
$ s !! # last command with super user priviledges
bindkey -s '\e[12~' "sudo !!\n", bu komutu çalıştırmak için (bu durumda) F2'ye bağlanmak gibi bir şey yapabilirsiniz . Bu bağlayıcılığım var, bu yüzden bir şey çalıştırıp "sudo 'sudo' sesini unuttun" hata mesajını gördüğümde, sadece F2’de sıkıntıdan bıçaklanabiliyorum
Bir komut stdin girişi alırsa, girişi bir dosyadan okuyabilirsiniz <filename. Bu komutun herhangi bir yerinde görünebilir, bu nedenle bu satırlar eşdeğerdir:
cat filename
cat <filename
<filename cat
Bu özellikle grep için kullanışlıdır, çünkü ifadeyi satırın sonuna yerleştirmenize izin verir, böylece bir grep komutunu Updosya ismini geçmek için sola kaydırmaya gerek kalmadan vurarak hızlıca değiştirebilirsiniz :
<filename grep 'expression'
<input foo | bar | baz >output, gibi whileya forda ortasında bazı kabartma ilmekli ilkellerle karıştırmayı denerseniz işe yaramaz . Ben de pes ettim ve sadece sözleşmeye göre sona erdirdim.
CDPATHEşdeğerini ayarlamak için kullanabilirsiniz PATH; denerseniz cd foove foogeçerli dizinde hiçbir şey yoksa , kabuk onları CDPATHbulmak için her bir dizini kontrol fooeder ve bulduğu ilk dizine geçer :
export CDPATH="/usr"
cd bin # switches to 'bin' if there is one in the current directory, or /usr/bin otherwise
vi `which scriptname`
Bir şeyin nerede yaşadığını bilmediğin zaman ve umrunda değil.
whichotomatik olarak çağırmak için foo , yanivi =scriptname
$(scriptname)
Ve işareti . Komutunuzu arka planda tutar, böylece yazmaya devam edebilirsiniz.
$> sudo updatedb &
Birlikte çalışmak ve bir süre sonra şunları görürsünüz:
[1] 17403
Ve senin sürecin bitti! Sonlandırmalarını beklemeniz gerekmeyen şeyler için idealdir.
&!arka plana işi ve kabuğundan çıkmama!
bash.
nohup.
Sekme tamamlama . Her yolun tüm karakterlerini yazmanız ne kadar kötü olurdu?
rm -fr /. Yani evet, Tab'ın tamamlanması oldukça önemlidir ...
ls /usr/lib/game-d*/rott*
rm -rf /Çoğu Linux sisteminde devre dışı değil mi?
En son takılan cihazı çıkarın:
mount /media/whatever
...
u!mo
!moile başlayan son komuta genişler mo(en azından bash'te). Bazen biri mvortada yapar, bu yüzden u!msık sık çalışmaz.
Bu benim .bashrc içinde var
#shortcut for CTRL+C and CTRL+V
alias c-c='xclip -sel clip'
alias c-v='xclip -o -sel clip'
function find-all() {
python -c "import re
import sys
for i in re.findall('$1', sys.stdin.read()):
if type(i) == type(''):
print i
else:
print i[0]"
}
Panodaki html kaynak kodum olduğunda ve kullandığım tüm bağlantıları bulmak istediğimde
c-v | find-all 'href="([^"]*)"' | c-c
Ve panodaki tüm URL'lerim var
Bende de bu fonksiyon var
function lsq(){
ls -lh $@ | tr -s ' ' | cut -d' ' -f5,8
}
hangi boyutta (okunabilir) ve dosya adını gösterir.
alias temp='cat /proc/acpi/thermal_zone/THRM/temperature'
bu takma ad gösteri sıcaklığı içindir
function separate() {
python -c "import sys,re; print '$1'.join(re.split('\s*', sys.stdin.read().strip()))";
}
Bu fonksiyon ile ürün veya argüman toplamını hesaplayabilirim.
alias sum='separate + | bc'
alias product='separate * | bc'
function split-join() {
python -c "import sys,re; print '$2'.join(re.split('$1', sys.stdin.read().strip()))";
}
Bu, standart girdiyi regex ile ayıran ve ardından sonucu birleştiren kullanışlı bir işlevdir.
function factorial() {
seq -s* $1 | bc
}
faktoring işlevi
function wiki() { dig +short txt $1.wp.dg.cx; }
Bu işlev, DNS üzerinden wiki metnini görüntüler
Ayrıca üç renk fonksiyonum var
function blue() {
echo -e "\x1b[34m\x1b[1m"$@"\x1b[0m";
}
function green() {
echo -e "\x1b[32m\x1b[1m"$@"\x1b[0m";
}
function red() {
echo -e "\x1b[31m\x1b[1m"$@"\x1b[0m";
}
function md5check() {
test `md5sum $2 | cut -d' ' -f1` = "$1" && green [OK] || red [FAIL]
}
Bu işlev md5 hash dosyasını doğrular.
bu verilen kod için hata mesajı gösterecektir
function strerror() { python -c "import os; print os.strerror($1)"; }
Tüm mesajları ile yazdırabilirsiniz.
alias all-errors='for i in `seq 131`; do echo -n "$i: "; strerror $i; done'
Başka bir yararlı ZSH numarası:
Bir komutun çıktısını bir dosya olarak kabul edin:
emacs =(hg cat -r 100 somefile)
Bu, sözdizimi ile vurgulanan görüntüleme için emacs'ta Mercurial-izlenen bir dosyanın eski bir versiyonunu açar. Bu olmadan, ben etrafında karışıklık olurdu hg revert, hg archiveveya açıkça göndermek hg catgeçici bir dosyaya çıktı.
Tabii ki, bu dosyaları açan herhangi bir program ve standart çıktıya yazdıran herhangi bir program ile çalışır.
Bir ZSH özgü bir özellik vererek belirlenen eki takma ad olduğunu bayrak:alias-s
alias -s ext=program
Belirli bir uzantının soneki bir takma adı varsa, doğrudan bu uzantıyla bir dosyayı çalıştırabilir ve ZSH verilen programı başlatacak ve dosya adını bir argüman olarak iletecektir. Bu nedenle, yukarıdaki diğer ad geçerliyse, bu satırlar eşdeğerdir:
/path/to/foo.ext
program /path/to/foo.ext
Tüm zamanların en sevdiğim ZSH özelliklerinden biri dizinler. Belirli bir yola işaret eden bir değere sahip belirli bir adı olan bir değişkeni dışa aktarabilirsiniz:
export foo=/usr/bin
Şimdi ~foobir komutta başvuruda bulunmak için kullanabilirsiniz /usr/bin:
cd ~foo
~foo/ls
cat ~foo/filename
Bu soruya bakınız .
Koşarken ps ax | grep string:
[steve@sage-arch ~]$ ps ax | grep 'openbox'
3363 ? Ss 0:00 /usr/bin/openbox
3382 ? Ss 0:00 /usr/bin/ssh-agent -- /usr/bin/openbox-session
3386 ? S 0:00 /bin/sh /usr/bin/openbox-session
3388 ? S 0:00 /bin/sh /usr/bin/openbox-session
3389 ? S 0:00 /bin/sh /usr/bin/openbox-session
3390 ? S 0:00 /bin/sh /usr/bin/openbox-session
5100 pts/0 S+ 0:00 grep openbox
içeren son satır grepbiraz can sıkıcı bir şeydir
Bunu çalıştırarak kendinizden kurtulabilirsiniz ps ax | grep '[s]tring':
[steve@sage-arch ~]$ ps ax | grep '[o]penbox'
3363 ? Ss 0:00 /usr/bin/openbox
3382 ? Ss 0:00 /usr/bin/ssh-agent -- /usr/bin/openbox-session
3386 ? S 0:00 /bin/sh /usr/bin/openbox-session
3388 ? S 0:00 /bin/sh /usr/bin/openbox-session
3389 ? S 0:00 /bin/sh /usr/bin/openbox-session
3390 ? S 0:00 /bin/sh /usr/bin/openbox-session
güncelleme : veya sadece çalıştırınpgrep string
'[o]penbox'). Parantezler bir tür glob gibi çalışacak, bu yüzden eğer dizininizde openbox varsa (içinde olduğunuzu söyleyin /usr/bin) bash sadece grep numaralarını engelleyen openbox kullanacaktır.
Do-nothing komutu :olarak
while :; do :; doneDestekler için kombinasyonda destek genişlemesi:
for c in {1..3}; do :; done!operatör ve kısa devre operatörleri ||ve&&
[ -d /tmp/dir ] || mkdir /tmp/dir
if ! ping 34.41.34.1; then :; fipop / push yerine alt kabukları kullanma (scriptlerde kullanışlıdır)
~$ ( cd /tmp; echo $PWD )
/tmp
~$ne türünün emritype
~$ type type
type is a shell builtin
~$ type ls
ls is aliased to `ls --color=auto'
~$ f(){ :; }
~$ type f
f is a function
f ()
{
:
}ayrıca çok hoş: here-string
~$ cat <<<"here $PWD"
here /home/yourname
~$ve favorim: bir komut listesinde yönlendirme
{ w; ps; ls /tmp; } 2>/dev/null |lessPS1'ime elimden geldiğince fazla şey atmayı çok seviyorum. Hatırlanması gereken bazı şeyler:
\e[sve \e[usırasıyla imleç konumunu kaydedin ve kurtarın. Bunu ekranın en üstünde bir kaç satır uzunluğa sahip bir 'bilgi çubuğu' oluşturmak için kullanıyorum. Örnek:
PS1='\[\e[s\e[7m\e[1;1H\]\w\n\t \j / \! / \#\[\e[u\e[0m\e[33;1m\][\u@\h \[\e[34m\]\W]\[\e[0m\]\$ '
İle birleştir alias clear='echo -e "\e[2J\n"'. Denemek!
Ayrıca, PROMPT_COMMANDdeğişken her zaman PS1'den önce çalıştırılacak bir komut tanımlar.
Bir diğeri bgkomuttur. &Bir komutun sonuna koymayı unutursanız , sadece basın ^Zve yazın bg, arka planda çalışır.
bg, arka planda çalışan ve yanlışlıkla fg
PS1bu yüzden istediğim şeylerin çoğunu ekranın en alt satırına