Pytania otagowane jako bash

Pytania specyficzne dla GNU Bourne Again SHell, w przeciwieństwie do innych powłok Bourne / POSIX. W przypadku pytań dotyczących powłok uniksowych użyj zamiast tego znacznika / shell.


4
Pętla przez pliki z wyłączeniem katalogów
Potrzebuję skryptu, aby zrobić coś z każdym plikiem w bieżącym katalogu, z wyłączeniem podkatalogów. Na przykład w bieżącej ścieżce znajduje się 5 plików, ale 1 z nich to folder (podkatalog). Mój skrypt powinien aktywować polecenie podane jako argumenty podczas uruchamiania tego skryptu. To znaczy „skrypt bash wc -w” powinien podawać …
11 bash  for 

2
bash nie może przechowywać wartości szesnastkowej 0x00 w zmiennej
Próbuję zrobić kilka sztuczek z dd. Myślałem, że możliwe będzie przechowywanie niektórych wartości szesnastkowych w zmiennej o nazwie „nagłówek”, aby przesłać je do dd. Mój pierwszy krok bez zmiennej był następujący: $ echo -ne "\x36\xc9\xda\x00\xb4" |dd of=hex $ hd hex 00000000 36 c9 da 00 b4 |6....| 00000005 Potem próbowałem …
11 linux  bash  shell-script  dd 

2
Dlaczego zombie czeka na swoje dziecko?
Przeszukuję różne źródła, ale nie mogę znaleźć dobrego opisu anatomii zbierania dzieci. To prosty przypadek tego, co chciałbym zrozumieć. $ cat <( sleep 100 & wait ) & [1] 14247 $ ps ax -O pgid | grep $$ 12126 12126 S pts/17 00:00:00 bash 14248 12126 S pts/17 00:00:00 bash …


2
Jak sprawić, by `local` przechwycił kod wyjścia?
W moim projekcie mam następujący fragment kodu: local output="$(bash "${1##*/}")" echo "$?" To zawsze wypisuje zero local, ponieważ usunięcie localpowoduje jednak, że $?zmienna zachowuje się poprawnie: co oznacza przyjęcie kodu wyjścia z podpowłoki. Moje pytanie brzmi: jak mogę zachować tę zmienną lokalnie, jednocześnie rejestrując wartość wyjściową?


1
nigdy nie używaj operatora `-a` lub` -o` z `[`
Stéphane Chazelas napisał: kilka zasad takich jak zawsze podawaj zmienne Nigdy nie używać -aalbo -ooperatora (użyć kilku [poleceń oraz &&i ||powłoki operatorzy) Bądź [niezawodny dzięki powłokom POSIX. Dlaczego „nigdy nie należy używać operatora -alub -o”? Jak mogę zrobić „używać kilku [poleceń oraz operatorów powłoki &&i ||”)?
11 bash  shell  test 

3
Usuń plik, ale tylko jeśli jest to dowiązanie symboliczne
Idealnie chciałbym takie polecenie rm --only-if-symlink link-to-file ponieważ spaliłem się zbyt wiele razy przypadkowo usuwając plik zamiast dowiązania symbolicznego wskazującego na plik. Może to być szczególnie złe, gdy zaangażowane jest sudo. Teraz oczywiście robię to, ls -alaby upewnić się, że naprawdę jest to dowiązanie symboliczne i takie, ale jest podatne …
11 bash  command-line  rm 


3
tymczasowa wartość skryptu bash przy komendzie
Jak poniżej polecenia, if true; then IFS=":" read a b c d e f <<< "$test" Książka mówi, że gdy polecenie przypisania wartości ( IFS ":") jest używane przed poleceniem głównym ( read a b c d e f <<< "$value"), jego wartość obowiązuje tymczasowo dla polecenia głównego. Tak więc …

2
Jest podpowłoką to samo, co skorupa podrzędna
Istnieją dwie nazwy: podpowłoka i powłoka podrzędna . Tak, proces potomny zostanie uruchomiony przez dowolną z następujących czynności: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat Czy wszystkie są równoważne i mają tę samą nazwę? Czy wszystkie mają te same właściwości? POSIX ma …

2
Nie możesz użyć! $ W skrypcie?
Zastanawiam się, dlaczego to nie działa #!/bin/bash ls /bin ls !$ Spodziewam się uruchomić ls /bindwa razy, ale drugi powoduje błędy, których !$nie interpretowano Coś przeoczyłem lub !$pracowałem tylko w linii poleceń? Nie mogłem znaleźć odpowiedniej części w man bash(na Macu)
11 bash 

2
Jaka jest różnica między & 6 i / dev / fd / 6?
Aby odczytać z deskryptora pliku 6, mogę użyć <&6lub </dev/fd/6(aka /proc/self/fd/6). Zwykle oba działają równie dobrze. Jednak jeśli deskryptorem pliku jest gniazdo, zdarzają się dziwne rzeczy. Na przykład: $ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345 lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010] cat: /dev/fd/6: No …

3
Jak przedłużyć aliasy bash
Jak utworzyć alias, który faktycznie rozszerza inny alias o tej samej nazwie w Bash? Dlaczego: Kiedyś GREP_OPTIONSustawiłem na .bashrccoś takiego: GREP_OPTIONS="-I --exclude=\*~" Miałem też skrypt (powiedzmy, że setup-java.sh), który zadzwoniłbym przed pracą nad niektórymi projektami Java. Zawierałby wiersz: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=classes" Gdybym również używał Sassa, zadzwoniłbym, setup-sass.shktóry zawiera wiersz: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=\*/.sass-cache" …
11 bash  grep  alias 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.