Setiap kali memulai mesin, saya menjalankan program berikut:
$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &
Susah &> /dev/null &
... Bagaimana saya bisa mempersingkat logika?
command-line
bash
redirect
background-process
Kalkulus
sumber
sumber
Jawaban:
Bagian ini
&> /dev/null
berarti pengalihan output. Anda dapat mengalihkan beberapa perintah ke file yang sama dengan mengelompokkannya ke dalam blok:Namun, hal yang sama tidak dapat digunakan untuk memulai perintah individual di latar belakang (
&
). Menempatkan&
setelah blok berarti menjalankan seluruh blok sebagai skrip tunggal di latar belakang.sumber
&>
sintaks sudah usang dan harus diganti dengan>/dev/null 2>&1
wiki-dev.bash-hackers.org/scripting/obsolete#!/bin/bash
skrip dalam shell yang berbeda tanpa memeriksa portabilitas terlebih dahulu, itu jelas bukan kesalahan Bash jika itu tidak berfungsi.Saya menulis sebuah fungsi dan memasukkannya ke saya
.bashrc
untuk menjalankan hal-hal yang terlepas dari terminal saya:... lalu:
Dan karena saya malas, saya juga menulis jalan pintas untuk
xdg-open
:Karena
xdg-open
mengharapkan tepat satu argumen, fungsi inixo
mengulangi semua argumen dan panggilanxdg-open
untuk masing-masing argumen secara terpisah.Ini memungkinkan untuk:
sumber
Anda bisa mengarahkan output untuk semua perintah selanjutnya dengan
sumber
Anda bisa membuat lingkaran dan memberikannya perintah sebagai argumen:
Perhatikan bahwa cara ini persis sama dengan pendekatan subkulit dengan kurung kurawal mungkin untuk meringkas output dan mengarahkan semuanya sekaligus.
sumber
Saya membuat file khusus seperti
/dev/null
dengan jalur yang lebih pendek untuk mempersingkat pengalihan. Saya menggunakan/n
sebagai jalur file baru:Dengan cara ini Anda dapat memperpendek garis individual menjadi misalnya:
Sumber: Cara membuat / dev / null?
sumber