Буду признателен за подробности!
Я знаю, что это должен быть скрипт оболочки или что-то в этом роде, но было бы здорово, если бы кто-то более опытный в этой области мог рассказать мне об этом больше.
echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc
решение1
"эхо" (как следует из названия) выведет строку текста на стандартный вывод (обычно на экран).
">>" добавит вывод предыдущей команды к пути к файлу.
"&&" выполнит (в зависимости от успешного завершения предыдущей команды) последующую команду.
";" выполнит (независимо от успешного завершения предыдущей команды) последующую команду.
"функция" создаст функцию, которая будет запущена в оболочке Bash.
"$ДОМОЙ" — это ссылка (переменная Bash) на домашний каталог ОС пользователя, автоматически созданный Bash.
".bashrc" — это скрытый файл (в домашнем каталоге пользователя), который запускается, когда пользователь начинает интерактивный сеанс. Он часто используется для настройки оболочки bash на уровне пользователя.
"CD" — это смена каталога, смена рабочего каталога.
"лс" выводит список файлов в каталоге. В этом случае "--color" — это аргумент, который будет выделять определенные элементы каталога цветом, а не использовать один цвет.
"1 доллар" используется, чтобы позволить пользователю передать аргумент этой команде в качестве переменной.
Итак, короче говоря, для...
echo "" >> $HOME/.bashrc &&
echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc
Первая строка добавляет «пустую» строку к.bashrc- просто для ясности, когда кто-то в будущем посмотрит файл. Вторая строка добавляет новую функцию под названием "cdls" который принимает аргумент (имя каталога), затем изменяет рабочий каталог на это местоположение, а затем немедленно запускает "лс" команда для этого каталога.
EDIT: Пожалуйста, ознакомьтесь с комментариями Селады и Дероберта к ответу Стива.
решение2
Проверьте, доступен ли для записи файл $HOME/.bashrc, попытавшись ничего к нему не добавить:
echo "" >> $HOME/.bashrc &&
Если тест пройден успешно, файл доступен для записи, добавьте к нему функцию. Так что запуск cdls foo
отобразит цветной список каталогов каталога "foo".
echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc