Где находится .bashrc?

Фортунки

В некоторых Linux-дистрибутивах после запуска консоли выводится небольшая цитата. Практической пользы от нее вроде и нет, но небольшое шуточное высказывание повышает настроение и настраивает на рабочий лад. Тематические пакеты с базами высказываний называются fortunes, а сами цитаты — фортунками.

За несколько десятков лет в Сети появилось большое количество сборников цитат, которые легко интегрируются в консоль. Чтобы установить их в Debian или Ubuntu, достаточно ввести команду:

Последние два пакета содержат большое количество афоризмов на русском. Кроме этого, в интернете доступны и другие русскоязычные сборки фортунок, найти которые очень просто — достаточно вбить в Гугле fortunes-ru и получим несколько десятков ссылок (например, избранные цитаты с сайта linux.org.ru: lorquotes.ru/fortunes.php).

После установки необходимо настроить вывод цитат в консоль. В самом простом случае достаточно прописать в конфиг ~/.bashrc всего одно слово:

Далее следует перезапустить терминал или перезагрузить файл настроек (команда «source ~/.bashrc»). Cписок выводимых категорий фортунок можно получить, введя:

После установки все фортунки помещаются в один из подкаталогов /usr/share/games/fortunes, откуда их и забирает программа. В случае необходимости при помощи ключа ‘-m’ можно указать шаблон фортунок, которые будут выводиться. После добавления своих фортунок следует использовать утилиту strfile для создания индекса (strfile файл_фортунок).

При желании можно грабить RSS-новости, твиты, прогноз погоды или котировки валют с любого сайта, выводя их в качестве фортунок. Хотя для этого мне больше нравятся аналоги fortunes — пакеты cowsay и xcowsay. Сowsay представляет собой приложение на Perl, которое выводит изображение говорящей или думающей коровы, нарисованной ASCII-символами.

По умолчанию корова не знает, что сказать, умную мысль ей надо подкинуть. Например, выведем uptime:

Или фортунку (так реализовано в Linux Mint):

Кроме стандартной коровы доступны и другие персонажи, соответствующие названию файлов в подкаталоге /usr/share/cowsay/ cows. Вызвать их можно при помощи параметра ‘-f’. Также ряд параметров изменяют внешний вид коровы: ‘-t’ — усталая корова, ‘-p’ — параноидальная, ‘-w’ — обалдевшая и так далее. Чтобы автоматизировать процесс, заносим строку запуска в ~/.bashrc:

Планирование для большого Bash

Число и имена сценариев автозагрузки различных командных оболочек также отличаются. Давайте рассмотрим последовательность загрузки сценариев в командной оболочке Bash, /bin/bash. Bash можно найти практически на всех системах UNIX и Linux, обычно это стандартная командная оболочка новых установленных систем и новых пользователей. Это также вполне типичный представитель командных оболочек, который может служить хорошей площадкой для демонстрации работы. (При использовании другой командной оболочки из ее документации и страниц можно узнать имена и последовательность загрузки сценариев.)

Bash имеет шесть сценариев автозагрузки, но не каждый из них будет запущен. Даже если все шесть сценариев существуют и доступны, Bash выполнит только часть из них.

Первым Bash запускает системный сценарий /etc/profile, если он существует и доступен для чтения пользователем. После выполнения этого сценария, Bash ищет сценарии ~/.bash_profile, ~/.bash_login, ~/.profile и ~/.bashrc — именно в этом порядке, — где — стандартный псевдоним пользовательского домашнего каталога (также доступный через переменную $HOME). При завершении работы Bash, командная оболочка ищет файл ~/.bash_logout.

Какие именно из этих шести файлов будут выполнены, зависит от «режима» запускаемой командной оболочки. Командная оболочка может быть запущена для входа в систему, она может быть или не быть интерактивной. (Shell, запущенный при входе в систему, обычно интерактивный, однако можно запустить его принудительно как неинтерактивный. Подробнее об этом поговорим позже.)

В стародавние времена UNIX (немногим меньше двух десятилетий назад) пользователи обычно получали доступ к UNIX-машине через терминал. Они набирали свой пользовательский идентификатор и пароль в строке приглашения, и система порождала новый процесс командной оболочки для начала сессии пользователя. В этом окружении оболочка для входа в систему отличалась от остальных экземпляров командной оболочки (таких, например, как запускающие сценарии) по имени: имя процесса каждой командной оболочки, запущенной при входе в систему, предварялось дефисом, например, . Это специальное имя — древнейший артефакт UNIX — говорит командной оболочке о необходимости выполнения специального конфигурирования для входа.

Что такое интерактивная оболочка, объяснить несколько проще: командная оболочка интерактивна, если она воспринимает входные данные (со стандартного устройства ввода) и выводит результат (на стандартное устройство вывода). Сейчас X-терминалы заменили текстовые, но соглашения и парадигмы режимов работы командных оболочек остались прежними. Обычно X-терминал запускает Bash под именем , которое говорит о необходимости запустить загрузочную последовательность сценариев входа в систему.

В случае Bash интерактивная командная оболочка входа в систему запускает сценарий /etc/profile, если он существует. (Неинтерактивная оболочка также запускает /etc/profile, если Bash вызван командой .) Затем интерактивная оболочка ищет файл ~/.bash_profile и выполняет этот сценарий, если он существует и доступен для чтения пользователем. Иначе командная оболочка продолжает попытки выполнить ~/.bash_login. Если и этот файл не существует или недоступен для чтения, то Bash, наконец, пытается запустить файл ~/.profile. Bash запускает только один пользовательский сценарий автозагрузки: выполнение сценариев автозагрузки заканчивается непосредственно по окончании работы пользовательского сценария. Когда командная оболочка завершает работу, она запускает файл ~/.bash_logout.

Если Bash интерактивен, но не является запущенным для входа в систему, он пытается прочесть файл ~/.bashrc. Никакой другой сценарий не выполняется. Если Bash не интерактивен, он обращается к переменной BASH_ENV и выполняет указанный там файл.

Конечно, можно изменить эту последовательность, вызывая собственные файлы из стандартных сценариев. Специальный псевдоним командной оболочки (или его синоним ) выполняет другой сценарий оболочки. Например, если необходимо, чтобы установки из ~/.bashrc выполнялись для любой интерактивной оболочки, запишите команду:

. ~/.bashrc

в файл ~/.bash_profile. Когда командная оболочка получает команду (точка), она выполняет сценарий с именем, указанным сразу же за этим оператором.

Invocation

Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.

If Bash is spawned by in a TTY, by an SSH daemon, or similar means, it is considered a login shell. This mode can also be engaged using the / command line option.

Note: In Arch (which used to be the Bourne shell executable) is symlinked to . If Bash is invoked with the name , it tries to mimic the startup behavior of historical versions of , including POSIX compability.

Configuration files

File Description Login shells (see note) Interactive, non-login shells
Sources application settings in and . Yes No
Per-user, after . If this file does not exist, and are checked in that order. The skeleton file also sources . Yes No
Per-user, after exit of a login shell. Yes No
Depends on the compilation flag. After exit of a login shell. Yes No
Depends on the compilation flag. Sources . No Yes
Per-user, after . No Yes

Note:

  • Login shells can be non-interactive when called with the argument.
  • While interactive, non-login shells do not source , they still inherit the environment from their parent process (which may be a login shell). See for details.

Shell and environment variables

These shell variables in Bash can be exported in order to become environment variables:

VARIABLE=content
export VARIABLE

or with a shortcut

export VARIABLE=content

Environment variables are conventionally placed in or so that other Bourne-compatible shells can use them.

See Environment variables for more general information.

Wo liegt die bashrc?¶

Man hat grundsätzlich zwei bashrc-Dateien. Eine findet man unter /etc/bash.bashrc. Dies ist die globale bashrc, was bedeutet, dass Änderungen. die man in dieser vornimmt, Auswirkungen auf die Bash von sämtlichen Benutzern des Systems haben.

Die zweite bashrc findet man versteckt im Homeverzeichnis unter .bashrc. In dieser kann jeder Benutzer Änderungen nur für sich vornehmen und in dieser sollte man grundsätzlich seine Änderungen auch eintragen, außer man hat einen gewichtigen Grund, dass sie für alle Benutzer gelten sollen.

Die globale bash_profile befindet sich in /etc/profile und die des Benutzers unter ~/.bash_profile. Letztere existiert meist noch nicht und muss erst von Hand erstellt werden.

Функции

Zsh позволяет пользователю определять собственные функции, которые могут выполняться точно также как и обычные программы. Функции выполняются в том же процессе, что и вызвавшая их программа. При вызове функции аргументы передаются как позиционные параметры.

Распаковка архива

Чтобы распаковать архив не указывая тип распаковщика и его аркументы, а выполнив всего лишь команду вида
Добавьте следующий код в

ex () {
 if  ; then
   case $1 in
     *.tar.bz2) tar xvjf $1   ;;
     *.tar.gz)  tar xvzf $1   ;;
     *.tar.xz)  tar xvfJ $1   ;;
     *.bz2)     bunzip2 $1    ;;
     *.rar)     unrar x $1    ;;
     *.gz)      gunzip $1     ;;
     *.tar)     tar xvf $1    ;;
     *.tbz2)    tar xvjf $1   ;;
     *.tgz)     tar xvzf $1   ;;
     *.zip)     unzip $1      ;;
     *.Z)       uncompress $1 ;;
     *.7z)      7z x $1       ;;
     *)         echo "'$1' Не может быть распакован при помощи >ex<" ;;
   esac
 else
   echo "'$1' не является допустимым файлом"
 fi
}

Упаковка в архив

Упаковка в архив командой — при этом архив будет в Домашней папке.

pk () {
if  ; then
case $1 in
tbz)       tar cjvf $2.tar.bz2 $2      ;;
tgz)       tar czvf $2.tar.gz  $2       ;;
tar)      tar cpvf $2.tar  $2       ;;
bz2)    bzip $2 ;;
gz)        gzip -c -9 -n $2 > $2.gz ;;
zip)       zip -r $2.zip $2   ;;
7z)        7z a $2.7z $2    ;;
*)         echo "'$1' не может быть упакован с помощью pk()" ;;
esac
else
echo "'$1' не является допустимым файлом"
fi
}

Индикатор прогресса

Отсутствие индикатора прогресса у большинства консольных утилит — одна из главных проблем для тех, кто часто работает в консоли. И хорошо, если под рукой есть mc, который многие так и используют, чтобы получить окошко с прогрессом. А что если это голая консоль, а тебе требуется сохранить бэкап на флешку, смонтированную в режиме sync? В этом случае тебе поможет rsync, который хоть и несколько замедляет процесс копирования, но зато обеспечивает вывод на экран шкалы прогресса. Помещаем в ~/.bashrc следующую строку:

И используем команду cpr вместо cp:

Если добавить опцию ‘—remove-source-files’, то исходные файлы будут удалены (правда, следует помнить, что в пределах одной файловой системы mv гораздо быстрее rsync). Единственный минус — прогресс отображается для каждого файла в отдельности, общий прогресс увидеть нельзя.

Чтобы увидеть ход выполнения, например, при создании архива, можно использовать утилиту pv (Pipe Viewer). Технически она представляет собой замену стандартного cat, способную не только тупо копировать байты на выход, но и показывать прогресс этой операции. Например:

Уже хорошо. Но не хватает времени завершения. Для этого надо передать утилите pv размер каталога (в байтах) с помощью ключа ‘-s’:

Каждый раз набирать такую конструкцию не очень удобно, лучше сделать алиас.

Решение проблем

Скрипты не совместимые с fish

В Arch, некоторые скрипты написаны для Bash, и они не полностью совместимы с fish. Вы можете получатьошибки вскриптах, если ваша оболочка по умолчанию устанавливается как fish. В Arch есть много сценариев оболочки (shell scripts), написанных для Bash, и они небыли переведены для fish. Чтобы не устанавливать Fish оболочкой по умолчанию, самым лучшим вариантом будет открыть эмулятор терминала с возможностью командной строки fish. Для большинства терминалов это параметр , так например, чтобы открыть gnome-terminal, использующим fish, измените свой ярлык для использования:

gnome-terminal -e fish

С LilyTerm и другими легкими эмуляторами терминалов, которые не поддерживают заданную оболочку, команда будет выглядеть следующим образом:

SHELL=/usr/bin/fish lilyterm

Другой вариант: установить fish в качестве оболочки по умолчанию для терминала в настройках терминала или его профиле, — конечно если ваш эмулятор терминала поддерживает это. This is contrast to changing the default shell for the user which would cause the above mentioned problem.

Чтобы установить fish, как оболочку в tmux, установите это в вашем :

set-option -g default-shell "/usr/bin/fish"

Not setting fish as system wide default allows the arch scripts to run on startup, ensure the environment variables are set correctly, and generally reduces the issues associated with using a non-Bash compatible terminal like fish.

If you decide to set fish as your default shell, you may find that you no longer have very much in your path.
You can add a section to your file that will set your path correctly on login. This is much like or as it is only executed for login shells.

if status --is-login
        set PATH $PATH /usr/bin /sbin
end

Обратите внимание, что вам нужно будет вручную добавлять различные другие переменные окружения, такие как. Это огромный объем работы, чтобы получить удобство работы с fish в качестве оболочки по умолчанию.

su запускает Bash

Если su запускается с Bash (потому что Bash оболочка по умолчания), определите функцию в fish:

$ funced su
function su
        /bin/su --shell=/usr/bin/fish $argv
end
$ funcsave su

Запуск X при входе в систему

Добавьте следующее в нижнюю часть .

# start X at login
if status --is-login
    if test -z "$DISPLAY" -a $XDG_VTNR -eq 1
        exec startx -- -keeptty
    end
end

3 ответа

88

— это сценарий оболочки , который Bash запускается всякий раз, когда он запускается в интерактивном режиме. Он инициализирует интерактивный сеанс оболочки. Вы можете поместить любую команду в этот файл, который вы можете ввести в командной строке.

Здесь вы вводите команды, чтобы настроить оболочку для использования в вашей конкретной среде или настроить параметры в соответствии с вашими предпочтениями. Общеизвестно, что в есть псевдонимы , которые вы всегда хотите быть доступными.

запускается при запуске интерактивной оболочки each . Если вы скажете:

, а затем три раза нажмите Ctrl-D , будет выполняться три раза. Но если вы это скажете:

, тогда не будет запущен вообще, поскольку делает вызов Bash неинтерактивным. То же самое происходит при запуске сценария оболочки из файла.

Контраст и , которые запускаются только в начале новой оболочки входа. () Вы выбираете, идет ли команда в vs в зависимости от того, хотите ли вы, чтобы она выполнялась один раз или для запуск каждой интерактивной оболочки.

Как контрпример для псевдонимов, которые я предпочитаю помещать в , вы хотите сделать настройки в поскольку эти изменения обычно не idempotent :

Если вы помещаете это в , то каждый раз, когда вы запускаете интерактивную под-оболочку, будет привязана к концу снова, создавая дополнительную работу для оболочки, когда вы ошибочно вводите команду.

Вы получаете новую интерактивную оболочку Bash всякий раз, когда вы shell out с помощью , например.

16

Цель файла — предоставить место, где вы можете настроить переменные, функции и псевдонимы, определить свою (PS1) подсказку и определить другие параметры, которые вы хотите использовать каждый запуск вы открываете новое окно терминала.

Он работает, запускаясь каждый раз, когда вы открываете новый терминал, окно или панель.

Здесь вы можете увидеть (рис. с подсветкой синтаксиса) :

Пояснение:

-1. Настройте мой файл истории, чтобы игнорировать дубликаты и быть намного больше, чем значение по умолчанию.
-2. Опция цвета для в зависимости от того, используете ли вы linux или OSX
-3. Функция «» для создания и cd в каталог с помощью одной команды
-4. Найдите текущую ветку git, если в git repo и …
-5. -9. Определите удивительную подсказку PS1, как в
-10. Улучшенная версия PS2
-11. Установите vi в качестве редактора в командной строке
-12. Установите vi в качестве редактора по умолчанию
-13. выполните мой файл , если он существует.
-14. Выполните мой скрипт завершения закладки git (для пультов и ветвей), если он существует.
-15. Выполнить автоматическое переключение, если оно существует.
-16. Разрешить cd’ing без ввода части cd, если версия bash> = 4
-17. Выполните скрипт завершения bash, если он существует.
-18. Используйте TMUX, если он присутствует
-19. Добавить rvm в мою папку PATH
-20. Используйте rvm, если он существует.

Я сделал этот перенос, чтобы он работал на любых моих Linux или OSX-машинах без настройки — поэтому перед использованием некоторых функций и других скриптов выполняется ряд тестов для присутствия.

Это также упрощает использование всего файла сразу на новом компьютере без проблем, которые влияют
открывая новое окно терминала.

2

Это конфигурационный файл .

Интерактивные (не входящие в систему) оболочки, затем конфигурация считывается из этих файлов:

$HOME/.bashrc

Для оконных оболочек входа конфиг считывается из этих файлов:

  • (всегда источник)
  • (остальные файлы проверяются по порядку до тех пор, пока не будут найдены, а другие не будут прочитаны)

Простая иллюстрация того, как /когда они загружаются, находится на изображении ниже.

Я добавил в свой и

см. для получения дополнительной информации

9 ответы

Не забывайте, что это скрытый файл внутри вашего домашнего
каталога (вы бы не первый, кто сделал и думал,
что его там нет).

Сделайте:

На первой странице должен быть . Если не
просто создать его с помощью:

и добавьте в строки, которые вам нужно добавить в нее.

Разрешения моего :

( , чтобы сделать его ).

111

User specific, hidden by default.

Если нет, просто создайте его.

System wide:

21

В домашней папке каждого пользователя (99.99% времени) есть
.bashrc, а также одна системная (что я не знаю, где находится
Ubuntu).

Самый быстрый способ доступа к нему — с терминала (замените на все,
что вам нравится).

Если этого нет в домашней папке пользователя, общесистемный
используется как резерв, поскольку он
загружается перед файлом пользователя. Вы можете просто скопировать
и вставить его (конечно, с правами root), но
не является абсолютно необходимым (может потребоваться, чтобы все
работало, я не обнаружил) у пользователя поскольку он в основном
переопределяет общесистемный подход с пользовательскими
настройками. Вы могли бы написать свой собственный, хотя.

Основными компонентами для этих пользователей могут быть
следующие: (приглашение Bash по умолчанию
отображает ) и псевдонимы, а
также установку приглашения цвета и, возможно, < code> PS2
(сообщение состояния занятости).

11

Он скрыт из-за начинается с имени файла.
Перечислите его

или включить «Показать скрытые файлы» в меню просмотра в
nautilus ( CtrlH ) также сделает
трюк).

Вы можете отредактировать его в своем любимом текстовом
редакторе из своего домашнего каталога, например. ,
чтобы перейти в ваш домашний каталог:

5

Используйте , это позволит вам
изменить с помощью gedit.

3

Если не находится в вашей домашней папке,
даже после того, как вы перечислите скрытые файлы, вы можете
скопировать его из:

2

если вы не находитесь в домашнем каталоге, вы можете просто
скопировать его из и сделать его
источником для своего терминала, набрав в своем терминале
из своего домашний каталог после
копирования.

1

Используйте , чтобы открыть и
отредактировать файл .bashrc. (Это создаст файл, если он еще не
существует)

1

Если вы используете шифрование и работаете из командной строки,
вы можете не видеть его, поскольку сначала необходимо установить
реальный домашний каталог (в отличие от графического интерфейса,
где это делается automaticallu) командой:

(У меня был тот же вопрос и наткнулся на этот вопрос, но нашел
my ответ в readme вместо этого)

Автодополнение bash

Одна из самых удобных функций, имеющихся в bash — автодополнение команд по клавише <Tab>. К этому быстро привыкаешь, и кажется, что улучшить уже ничего нельзя. Однако в разных дистрибутивах автодополнение работает по-разному.

Например, в современных Linux-дистрибутивах, ориентированных на обычного пользователя, bash не только дополняет саму команду, но и предлагает дополнительные параметры. Однако в Gentoo и производных (вроде Calculate Linux) такого нет. Здесь приходится помнить все параметры назубок. Как такое может быть? Некоторые разработчики дистрибутивов используют патченые версии bash?
На самом деле, возможность автодополнения в bash — расширяемая функция. За необходимую функциональность отвечает встроенная команда compgen, генерирующая соответствующие списки. Все настройки производятся в файле /etc/bash_completion (или пользовательском ~/.bash_completion), хотя в некоторых дистрибутивах можно найти целый каталог /etc/bash_completion.d, в котором обычно собраны настройки, специфичные для отдельных программ.

В самом простом случае файл содержит программу и указания для bash по дополнению имен файлов.

Например, чтобы MPlayer предлагал пользователю в качестве автодополнения только файлы с расширением avi и mpg, пишем такое правило: complete -f -X ‘!*.@(avi|mpg|AVI|MPG/so)’ mplayer Но это самый простой вариант, ведь MPlayer имеет большое количество дополнительных параметров, а значит, ему потребуется описать шрифты, звуковые файлы, субтитры и так далее. Все это легко решается при помощи оператора case. Поддерживаются регулярные выражения, что немного упрощает создание правил.

Обычно майнтейнеры конкретного пакета сами составляют списки параметров программы для bash_completion. Никаких чудес здесь нет.

Например, для tar создаем такое правило:

Как видишь, мы просто перечислили все параметры, и теперь в процессе ввода bash сам выдаст этот список. Команда compgen имеет ряд параметров. Так ‘-b’ позволяет получить список встроенных команд оболочки, ‘-c’ — имена команд, ‘-v’ — имена переменных и так далее. Все подробности можно найти в man-странице bash, в секциях complete и compgen.

8 ответов

252

Лучший ответ

Создайте файл в и все . Аналогично для .

обычно ваша папка . Набрав в терминале Git Bash, вы узнаете, что это за папка.

Если вы не можете создать файл (например, под управлением Windows), выполните следующую команду:

Окно выведет сообщение об ошибке (команда не найдена), но файл будет создан и готов для редактирования.

30 июль 2011, в 15:56
Поделиться

87

В более новых версиях Git для Windows Bash запускается с что приводит к тому, что Bash не читает напрямую . Вместо этого он читает .

Если этот файл не существует, создайте его со следующим содержимым:

Это заставит Bash прочитать файл . Из моего понимания этой проблемы Git для Windows должен делать это автоматически. Однако я только что установил версию 2.5.1, а это не так.

02 сен. 2015, в 13:17
Поделиться

4

Я думаю, что вопрос здесь заключается в том, как найти файл .bashrc в Windows.

Поскольку вы используете Windows, вы можете просто использовать такие команды, как

ИЛИ ЖЕ

чтобы открыть окно с корневым каталогом вашей установки Git Bash, где вы найдете файл . Вам может понадобиться создать его, если он не существует.

Вы можете использовать инструменты Windows, такие как Notepad++, чтобы редактировать файл, вместо того, чтобы использовать Vim в вашем окне Bash.

15 июнь 2016, в 01:14
Поделиться

4

Мне пришлось добавить переменную среды пользователя, , с помощью , перейдя в раздел «Система», «Дополнительные параметры системы», в окне «Свойства системы», вкладке «Дополнительно», «Переменные среды»…

Затем в моем я создал файл , например, и добавил нужные псевдонимы.

30 сен. 2014, в 06:56
Поделиться

3

1) Начните с открытия git — bash.exe в режиме администратора. (Щелкните правой кнопкой мыши файл и выберите «Запуск от имени администратора» или измените настройки в свойствах → Совместимость → Запустите эту программу как администратор.)

2) Запустите . Он перенесет вас на .

3) Запустите . Это откроет вас в редакторе. Нажмите INSERT, а затем введите следующую информацию:

05 фев. 2016, в 18:49
Поделиться

Если вы хотите изменить конфигурацию bash для всех пользователей Windows или не хотите создавать пользовательский файл конфигурации, вы можете отредактировать глобальный файл конфигурации git bash, который находится по адресу:

В linux эквивалентом для этого файла будет .

30 янв. 2019, в 11:45
Поделиться

-2

Иногда файлы на самом деле находятся в . Это шаги, которые я предпринял для запуска Zsh в качестве терминала по умолчанию в Visual Studio Code/Windows 10.

  • Вставьте следующее…

  • Сохранить/закрыть Vim.

  • Перезагрузите терминал

08 июль 2017, в 00:16
Поделиться

-5

Если вы хотите иметь список выбора проектов при открытии Git Bash:

Отредактируйте ppath в заголовке кода по пути к своим проектам Git, поместите этот код в файл .bashrc и скопируйте его в каталог $ HOME (в Windows Vista/Windows 7 это часто C:\Users\$ YOU)

,

Возможно, вы захотите установить этот файл как исполняемый внутри Git Bash, chmod +x.bashrc (но он, вероятно, избыточен, так как этот файл хранится в файловой системе NTFS).

26 сен. 2014, в 17:59
Поделиться

Ещё вопросы

  • 526установка pip из ветки git repo
  • 30Как скопировать в буфер обмена с помощью Access / VBA?
  • 271Как преобразовать новую строку DOS / Windows (CRLF) в новую строку Unix (LF) в сценарии Bash?
  • 203«Невозможно найти удаленного помощника для https» во время git clone
  • 148Добавление ветки git в командную строку Bash
  • 60ошибка соединения pip: невозможно получить базовый URL индекса http://pypi.python.org/simple/
  • 137Ошибка установки libv8: ОШИБКА: не удалось создать собственное расширение для gem
  • 951Node.js / ошибка Windows: ENOENT, статистика ‘C: \ Users \ RT \ AppData \ Roaming \ npm’
  • 63хороший клиент postgresql для Windows?
  • 1066Как я могу разработать для iPhone, используя машину для разработки Windows?

Why should I edit bashrc?

There’s a couple of useful tricks you can do to make your terminal experience more efficient and user-friendly.

Bash Prompt

The bash prompt allows you to style up your terminal and have it to show prompts when you run a command. A customized bash prompt can indeed make your work on the terminal more productive and efficient.

Check out some of the useful and interesting bash prompts you can add to your bashrc.

Aliases

Aliases can also allow you to access a favored form of a command with a shorthand code. Let’s take the command as an example. By default, displays the contents of your directory. That’s useful, but it’s often more useful to know more about the directory, or know the hidden contents of the directory. As such, a common alias is , which is set to run or something similar. That will display the most details about files, revealing hidden files and showing file sizes in “human readable” units instead of blocks.

You’ll need to format your aliases like so:

Type the text you want to replace on the left, and the command on the right between quotes. You can use to this to create shorter versions of command, guard against common typos, or force a command to always run with your favored flags. You can also circumvent annoying or easy-to-forget syntax with your own preferred shorthand. Here are some of the you can add to your bashrc.

Functions

In addition to shorthand command names, you can combine multiple commands into a single operation using bash functions. They can get pretty complicated, but they generally follow this syntax:

The command below combines and . Typing creates a directory named “folder_name” in your working directory and navigates into it immediately.

The you see in the function represents the first argument, which is the text you type immediately after the function name.

Command line

Bash command line is managed by the separate library called Readline. Readline provides emacs and vi styles of shortcuts for interacting with the command line, i.e. moving back and forth on the word basis, deleting words etc. It is also Readline’s responsibility to manage of input commands. Last, but not least, it allows you to create .

Tab completion

Tab completion is the option to auto-complete typed commands by pressing (enabled by default).

Single-tab

It may require up to three tab-presses to show all possible completions for a command. To reduce the needed number of tab-presses, see .

Customize per-command

Note: Using the builtin may cause conflicts with .

By default Bash only tab-completes file names following a command. You can change it to complete command names using :

~/.bashrc
complete -c man which

or complete command names and file names with :

complete -cf sudo

See the Bash man page for more completion options.

History

History completion

~/.bashrc
 bind '"\e[A": history-search-backward'
 bind '"\e[B": history-search-forward'

or to affect all readline programs:

~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward

Shorter history

The variable can prevent certain commands from being logged to the history. For example, to stop logging of repeated identical commands

~/.bashrc
export HISTCONTROL=ignoredups

or set it to to ensure that Bash’s history will only contain one copy of each command (regardless of order). See the Bash man page for more options.

Disable history

To disable the bash history only temporarily:

set +o history

The commands entered now are not logged to the .

For example, now you can hash passwords with , or hide GPG usage like
and your secret is not written to disk.

To enable history:

set -o history

Tip: If the variable contains , commands starting with a space will not be saved into the history file. See for details.

To disable all bash history:

~/.bashrc or /etc/profile
export HISTSIZE=0

… and just to make sure:

# warning. this will destroy your old histfile forever
wipe -i -l2 -x4 -p4 "$HISTFILE"
ln -sv /dev/null "$HISTFILE"

Mimic Zsh run-help ability

Zsh can invoke the manual for the command preceding the cursor by pressing .
A similar behaviour is obtained in Bash using this Readline bind:

~/.bashrc
run-help() { help "$READLINE_LINE" 2>/dev/null || man "$READLINE_LINE"; }
bind -m vi-insert -x '"\eh": run-help'
bind -m emacs -x     '"\eh": run-help'

This assumes are you using the (default) Emacs .

Ввод/Вывод

Файловые дескрипторы

Как и другие оболочки fish позволяет перенаправлять потоки ввода/вывода. Это полезно при использовании текстовых файлов для сохранения вывода программы или ошибок, или при использовании текстовых файлов в качестве входных данных. Большинство программ использует три входных/выходных потока, представленные набором номеров файловых дескрипторов (file descriptors (FD)).
Это:

  • Стандартный ввод (FD 0), используется для чтения (клавиатуры по умолчанию).
  • Стандартный вывод (FD 1), используется для записи (экран по умолчанию).
  • Стандартная ошибка (FD 2), используется для отображения ошибок и предупреждений (экран по умолчанию).

Перенаправление

Любой файловый дескриптор может быть перенаправлен в другой файл механизмом называемым перенаправлением:

Перенаправление стандартного ввода:
$ команда < исходный файл

Перенаправление стандартного вывода:
$ команда > назначение

Добавление стандартного вывода в существующий файл:
$ команда >> назначение

Перенаправление стандартной ошибки:
$ команда ^ назначение

Добавить стандартную ошибку в существующий файл:
$ команда ^^ назначение

Вы можете использовать один из следующих :

  • Имя файла (выход будет записан в указанный файл).
  • за которым следует номер другого дескриптора файла. Выход будет написан на другой файловый дескриптор.
  • с последующим знаком . Выход не будет записан.

Примеры:

Перенаправление стандартного выхода в файл:
$ команда > файл_назначения.txt

Перенаправление стандартного вывода и стандартной ошибки в тот же файл:
$ команда > файл_назначения.txt ^ &1

Отключение стандартного вывода:
$ команда > &-

Пайпинг (piping)

Вы можете перенаправить стандартный вывод одной команды на стандартный ввод следующей команды. Это делается путем разделения команд вертикальной чертой (). Пример:

cat example.txt | head

Вы можете перенаправить другие файловые дескрипторы пайпингом (кроме стандартного вывода). Следующий пример показывает, как использовать стандартную ошибку из одной команды в качестве стандартного ввода другой команды, передавая номер файлового дескриптора стандартной ошибки в пайп :

$ команда 2>| less

Это выполнит и перенаправить его стандартную ошибку в .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector