Saya menggunakan Ubuntu 16.04 dan OS X.
alias ll='ls -Flh --group-directories-first'
Ini adalah alias di bashrc saya, tetapi entah bagaimana --group-directories-first
opsi menjadi ilegal di OS X setelah saya memutakhirkan bash saya dengan Homebrew. Di desktop Ubuntu saya, saya masih bisa menggunakan opsi itu.
Dalam versi Bash apa, opsi ini tidak didukung? Versi Bash di mesin OS X saya mengatakanGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Saya ingin menggunakan --group-directories-first
opsi lagi. Apakah ada cara untuk mencapainya?
ls
atau macOSls
? Sudahkah Anda mencoba yang lain?Jawaban:
Instal
coreutils
dengan Homebrew dan aliasll
untukgls -Flh --group-directories-first
gantinya.brew install coreutils
menginstal GNU Coreutils , kalau-kalau tidak diinstal.alias ll='gls -Flh --group-directories-first'
dalam.bashrc
.(Jika Anda ingin menggunakan
.bashrc
file yang sama di kedua sistem operasi, lihat di bawah.)Di Ubuntu,
ls
disediakan oleh GNU Coreutils , yang selalu dimiliki Ubuntu. Itu sebabnyals
mendukung--group-directories-first
di Ubuntu. Mungkin Anda pernah menggunakan versi GNU Coreutilsls
pada macOS sebelumnya, yang diinstal Homebrewgls
tetapi dapat digunakan sepertils
dalam beberapa cara.ls
adalah perintah eksternal, bukan Bash builtin. Menggunakan versi atau versi Bash yang berbeda seharusnya tidak memengaruhinya. Saya tidak yakin apa yang terjadi ketika Anda memutakhirkan Bash menggunakan Homebrew. Mungkin lebih dari Bash juga ditingkatkan; mungkin Anda memilikils
fungsi shell atau alias yang ditentukan dalam file konfigurasi global yang diganti; mungkin Anda memiliki tautan simbolisls
yang telah menunjukgls
dan ditimpa; mungkin Anda masih memiliki sesuatu seperti itu tetapi Anda$PATH
telah berubah. Apa pun yang terjadi, GNU Coreutilsls
mendukung--group-directories-first
, dan beralih ke sana (seperti yang saya sarankan bmike ) harus memperbaiki masalah Anda.Jika karena alasan tertentu Anda ingin menggunakan
.bashrc
file yang sama persis di kedua sistem, ada beberapa pendekatan yang mungkin. Anda dapat membuat symlink, skrip wrapper, fungsi shell, atau (karena ekspansi Bash adalah non-rekursif) untuk aliasgls
di sistem Ubuntu Anda. Tapi saya sarankan bukan pengecekan yang OS sedang digunakan dalam.bashrc
. Meskipun Anda akan mendapatkanll
alias berbeda yang didefinisikan dalam setiap sistem, pendekatan ini memiliki manfaat mendokumentasikan diri. Anda.bashrc
akan masuk akal untuk Anda dalam setahun, atau sebulan.Atau jika Anda biasanya lebih suka menjalankan Coreutils
ls
, bahkan jika Anda tidak menggunakanll
alias, Anda bisa membuatls
alias untukgls
:(Terima kasih pergi ke soroushjp untuk menangkap kesalahan dalam versi sebelumnya dari skrip itu.)
sumber
"$OSTYPE" != linux-gnu
karena Anda ingin alias ls to gls jika Anda tidak menggunakan sistem GNU Linux (mis. Anda menggunakan Mac).