Saya ingin mencari file dan kemudian memasukkan direktori yang berisi itu. Saya mencoba find /media/storage -name "Fedora" | xargs cdtetapi tentu saja, saya is not a directorykesalahannya.
Bagaimana cara memasukkan direktori induknya dengan perintah satu baris?
shopt -s globstar, Anda bisa cd /media/storage/**/Fedora, tetapi itu tidak berhenti mengevaluasi glob pada pertandingan pertama (jadi itu lebih lambat daripada solusi steeldriver. Untuk penggunaan interaktif, apa yang biasanya saya lakukan adalah meraih mouse dan menyalin / menempelkan nama direktori, (dan alt + backspace yang diperlukan untuk menanggalkan komponen path trailing yang tidak saya inginkan), tetapi jika Anda sering melakukan ini, saya rasa fungsi shell bisa bernilai.
xargs cdtidak mungkin bekerja. cdhanya dapat berfungsi sebagai shell builtin, karena harus memodifikasi konteks shell itu sendiri. Tidak mungkin xargsproses anak dapat melakukannya. IDK jika itu yang Anda maksud dengan "tentu saja", atau jika jalur yang findmencetak berisi spasi, yang dipisahkan oleh xargs karena Anda tidak menggunakan -d \natau apa pun. Atau find -exec {} \;.
cdseperti itu. cdadalah sebuah bash yang dibangun, jika cdmerupakan perintah yang terpisah, maka itu akan mengubah dir (miliknya), dan kemudian berhenti (mengembalikan Anda ke shell, yang berada dalam keadaan yang sama seperti sebelumnya, tidak ada perubahan dir).