- Bash history mac os
- Hint Options
- Question: Q: Expand bash history
- All replies
- How to search your Terminal history
- How to search in your Mac’s Terminal
- Browse your Terminal history
- View your Terminal’s entire history
- Deleting your Terminal’s history
- Before you go
- [Mac OS X] Начинающим о работе в Терминале
- Небольшое введение
- Командная строка
- Язык скриптов bash
- Небольшое, но важное пояснение
- Совет 1 — автодополнение
- Совет 2 – история команд
Bash history mac os
If you do that through the Terminal (since the file is invisible), the terminal will replace the file with the commands used in the current window (so if you open a new terminal window, use the command, then close/open a new window, the history will consist just of the command to remove the history file).
- Currently 4.20 / 5
- 1
- 2
- 3
- 4
- 5
(5 votes cast)
Hint Options
If you use tcsh,
/.tcsh_history is the history file.
i use tcsh, and i do not have a
/usr/share/tcsh/examples/tcsh.defaults set the histfile variable to
/.tcsh_history. Otherwise the default is
/usr/share/tcsh/examples/README explains how to use the tcsh example init files.
The existence of these history files is a good reason to never put your password on the command line — always let the program prompt you for it.
Other details:
The history file doesn’t keep every command you’ve ever typed; instead it keeps the most recent xxx (I believe the default in bash is 500, and you can change the value if you want).
Also, the file is updated only on a clean shell exit — during your session, it’s cached in memory — so if you close a Terminal window with the prompt still active, your history file won’t contain whatever commands you issued that session.
is an easier and more portable way of clearing the history.
This way, your command history is limited to only those commands you used during the current session. More information and options can be found on the bash man page ( man bash ).
I didn’t have a .bash_profile, so I made one with only this line in it.
I don’t notice any difference. I can quit & restart the Terminal, and still scroll back through weeks of my history.
I keep forgetting the way to check which shell I’m running, which might be the prob, for all I know. No, wait, I did a ‘ps’ and I see «-bash», so I’m using the same shell this hint’s meant for.
To get it to work for you, you might need to log out and back in. bash_profile is only read at login time. Alternatively, you can put it in your
/.bashrc file (read whenever a new shell is opened). It is redundant to set env variables everytime you start a new shell, but I do it often because it’s convenient and guaranteed to work right away.
To make bash *erase* your history file every time you quit the shell, you should try this instead of unsetting HISTFILE:
/bash_history )? My suggestion will keep the history file from being created, but I don’t think it will stop an already created history file from being used.
try
[code]history -c[/code]
mode compliant and somewhat more universal (it works on tcsh and bash)
Источник
Question: Q: Expand bash history
How do I expand bash history size in Mac OS X 10.6.6? Everytime I go into terminal and go into the .bash_profile file and change the size, it defaults back to 500 when I «$echo $HISTSIZE after restarting terminal. Also anyone know how to automatically have history output to a text file? I know how to do this manually (history | vim -) Any ideas?
MacBookPro5,1, Mac OS X (10.6.6)
Posted on Jan 18, 2011 3:09 AM
All replies
Loading page content
Page content loaded
How do I expand bash history size in Mac OS X 10.6.6? Everytime I go into terminal and go into the .bash_profile file and change the size, it defaults back to 500 when I «$echo $HISTSIZE after restarting terminal.
Also anyone know how to automatically have history output to a text file? I know how to do this manually (history | vim -) Any ideas?
and of course there is always
But that seems too easy, so I’m not sure I’m really answering your question.
By the way, Terminal, Unix, and command line command questions are best asked in the Mac OS X Technologies > Unix Forum
Jan 18, 2011 7:10 AM
Thinking on this a little longer, I’m wondering if there is something else going on.
How did you set HISTSIZE in your .bash_profile?
Are you sure there are not other places that might be setting a different HISTSIZE? For example a .bashrc, or if you have a complex bash initialization process where you ‘source’ other files, is it possible that one of those sets HISTSIZE after your setting it? You could modify your .bash_profile and include
Jan 18, 2011 9:37 AM
Try this in your bash startup script,
export HISTSIZE=1000
export HISTFILESIZE=1000
Difference here being you are exporting the shell variables.
Jan 18, 2011 8:59 PM
Jan 19, 2011 12:05 AM
On my system I add that sort of thing to a file called .profile so I’m wondering why yours is called .bash_profile. Did you manually create that file? If you did try renaming it to .profile and see if it works.
Bash, the default Mac OS X shell will look for the following startup scripts, in the following order, and stop looking after the 1st one it finds:
If you are already in a bash shell, and start a subshell, then bash will read .bashrc
If you have a .bashrc file, then it is common practice to source your .bashrc file from your .bash_profile (or .bash_login, or .profile).
The use of .profile is so bash is backwards compatible with the Bourne shell (/bin/sh) which used .profile as its initialization script.
«man bash» will give more information about the shell initialization files.
Источник
How to search your Terminal history
The Terminal is one of macOS’ most powerful utilities, but typing into the Terminal can be a time-consuming and frustrating process – especially since it’s not all that unusual for Terminal commands to stretch across multiple lines.
To make matters worse, if you reach the end of a command only to realise that you made a typo or spelling mistake somewhere along the way, then correcting that mistake can be a clunky process. Instead of moving the cursor around the Terminal using your mouse, you’re restricted to moving it one character at a time, using your Mac’s Left/Right arrow keys. Sometimes it’s quicker just to cut your loses and re-type the command from scratch!
But why bother typing the command at all?
By default, every command you run is stored in your Terminal’s history. Assuming that you’ve ran this command at least once before, you can re-run the command by finding it in your Terminal’s history log, and then pressing the ‘Enter’ key on your keyboard.
In this article I’m going to show you how to run long, complex commands with ease, by searching your Terminal history.
How to search in your Mac’s Terminal
The quickest way to search your Terminal history, is with a ‘reverse-i-search’ command:
- Launch the Terminal application.
- Press the ‘Control + r’ keys on your keyboard.
- The Terminal should now update to display the ‘reverse-i-search’ command. Start typing the command you want to search for.
- As you type, Terminal will offer different suggestions. Once it’s displaying the correct command, you can press the ‘Enter’ key on your keyboard to execute that command.
It’s possible that the Terminal may display a command that matches part of your search term, but isn’t the command you were looking for. For example maybe your search for “Sudo” returns sudo chflags hidden, when you were really looking for sudo mdfind “com_apple_backup_excludeItem = ‘com.apple.backupd.” If this happens, you can cycle through all the commands that match your search term, using the ‘Ctrl + r’ keyboard shortcut.
You can exit ‘reverse-i-search’ without executing any commands, using the ‘Ctrl + G’ keyboard shortcut.
Browse your Terminal history
Sometimes, you might know that you performed a certain task via the Terminal, but you have absolutely no idea about how you did it. If you can’t remember anything about the command, then how are you going to search for it?
One solution is to browse through your Terminal history using your Mac’s ‘Up/Down’ arrows, bringing up each command in turn, until you find the command you were looking for.
To view the previous command, keep pressing the ‘Up’ key; and if you get carried away and scroll past the command in question, then you can move “forward” in your Mac’s Terminal history, by pressing the ‘Down’ key.
View your Terminal’s entire history
The most time-consuming tasks are those that require you to enter multiple commands. If you know that you’ve completed this cycle at least one before, then it may be quicker to find this block of commands in your Terminal’s history, and then copy/paste them back into the Terminal window, rather than typing each command from scratch.
To view your entire Terminal history, type the word “history” into the Terminal window, and then press the ‘Enter’ key. The Terminal will now update to display all the commands it has on record.
Deleting your Terminal’s history
If viewing the contents of your Terminal history has left you itching to wipe the slate clean (perhaps you’ve spotted your password in one of the commands, or lots of misspelled commands) then you can delete your Terminal history.
To delete the history for your current Terminal session, run the following command:
To permanently delete your entire history, enter the following:
Alternatively, if you want to delete a specific command while preserving the rest of your Terminal history, then it’s possible to view this record as a series of TextEdit documents. However, macOS does create a separate document for each Terminal session, and uses a string of random number and letters to identify each session, which can make tracking down the correct TextEdit a time-consuming and frustrating process.
To browse these files:
- Open a new ‘Finder’ window.
- Select ‘Go > Go to Folder…’ from the Finder toolbar.
- Enter
/.bash_sessions/ and then click ‘Go.’
To view and potentially edit any of the files in this folder, Control-click the file and then open it in TextEdit. At this point you can delete and edit commands, as if they were normal text.
Before you go
After spending over 20 years working with Macs, both old and new, theres a tool I think would be useful to every Mac owner who is experiencing performance issues.
CleanMyMac is highest rated all-round cleaning app for the Mac, it can quickly diagnose and solve a whole plethora of common (but sometimes tedious to fix) issues at the click of a button. It also just happens to resolve many of the issues covered in the speed up section of this site, so Download CleanMyMac to get your Mac back up to speed today.
Источник
[Mac OS X] Начинающим о работе в Терминале
В OS X обычный пользователь практически не сталкивается с необходимостью использовать командную строку, поскольку большинство его нужд покрывает то, что реализовано в графическом интерфейсе системы.
Другое дело, когда нужны некоторые скрытые возможности, которые недоступны из графического интерфейса. Собственно в этой рубрике мы частенько прибегаем к извлечению этих скрытых возможностей при помощи командной строки. А потому я и решил немного рассказать о программе Терминал и командной строке, а так же дать пару советов новичкам, которые позволят им ощущать себя в ней более комфортно.
Небольшое введение
Начнем с вопроса, что такое Терминал? Прежде всего, это приложение, внутри которого выполняется командный интерпретатор. Его еще часто называют интерфейсом командной строки. Он интерпретирует команды специального языка скриптов.
Пояснение слова скрипт
Правильнее «скрипт» следует называть сценарием, поскольку это одно из значений английского слова — sript. Да и фактически «скрипт» является сценарием. Но термин «скрипт» очень прочно устоялся среди программистов, а потому я немного нарушу правила русского языка и буду называть его именно – скрипт. Тем более что и само слово «сценарий» заимствовано русским языком и родным ему не является.
Языки скриптов бывают разные, но есть наиболее распространенный набор таких языков, а соответственно и их интерпретаторов.
В OS X, по умолчанию используется командный интерпретатор bash . Это улучшенный вариант интерпретатора Bourne shell, который обычно называют просто shell . И он тоже присутствует в нашей системе в виде файла /bin/sh . Правда не используется.
В настоящее время bash – фактически стандарт де-факто в большинстве Unix-подобных систем.
Так же достаточно популярен интерпретатор zsh , который в свою очередь является улучшенным bash (и он тоже есть в нашей системе), но стандартом де-факто он не стал. Возможно пока. Существует и еще целый ряд командных интерпретаторов, не получивших такого большого распространения как bash .
Найти информацию обо всех перечисленных интерпретаторах несложно в «Википедии».
Командная строка
Когда вы запускаете программу Терминал, то видите в ее окне командную строку, которая в моей системе выглядит так:
Командная строка начинается с названия компьютера (у меня он называется iMac), затем следует название текущего каталога — по умолчанию открывается домашний каталог пользователя, который в Unix-системах обозначается знаком
(тильда). Далее следует имя пользователя (в моем случае — gosha ), а за ним знак $ , который называется приглашением – приглашением вводить команды интерпретатору.
Вид командной строки и приглашения можно настраивать, а в минимальном виде это будет просто знак $ . Именно после знака $ и вводятся все команды интерпретатору. Это место обозначает курсор — мигающий прямоугольник (его вид тоже можно настраивать).
Примечание: в заголовке окна Терминала вы видите текущий каталог (в данном случае это домашний каталог, а потому он обозначен домиком), затем имя пользователя, затем название используемого интерпретатора (в данном случае — bash ) и размер окна в символах.
Язык скриптов bash
Командный интерпретатор bash , как я уже написал выше, интерпретирует команды специального языка скриптов. Язык скриптов достаточно несложный язык программирования, который, как и любой язык программирования, предназначен для передачи команд и данных от человека к компьютеру.
Самой простой командой этого языка является запуск программы – она состоит только из имени файла программы и, если необходимо, то и полный путь до этого файла, а так же, возможно, с последующими за именем файла ключами и параметрами, которые дают различные указания выполняемой программе.
Приведу пример. Вы хотите посмотреть содержимое текущего каталога (при запуске Терминала, по умолчанию это будет ваш домашний каталог). Для этого в системе есть программа, находящаяся в файле ls . Ее запуск в командном интерпретаторе заключается во вводе имени файла этой программы и нажатием клавиши Enter:
Небольшое, но важное пояснение
На самом деле, этот файл находится в каталоге /bin и полностью этот файл обозначается как /bin/ls . Но в интерпретаторе есть специальный механизм, позволяющий не вводить полный путь до некоторых файлов программ. Этот инструмент — переменная окружения, которая называется PATH (путь) и содержит список каталогов. Интерпретатор, получив в качестве команды имя файла, указанное ему без пути, просто ищет этот файл в каталогах, перечисленных в переменной окружения PATH . Если находит, то запускает его на выполнение, если не находит, то выводит сообщение — файл не найден.
Посмотреть содержимое переменной PATH вы можете командой:
Естественно эту переменную можно настраивать, но какой-то особой необходимости в этом у обычного пользователя не возникает, а потому я опущу этот вопрос.
Ну а теперь перейдем собственно к советам.
Совет 1 — автодополнение
При использовании командной строки очень часто приходится вводить имена файлов – обычно это файлы различных команд, и вводить имена файлов или каталогов, передаваемых в качестве параметра командам, которые необходимо набирать с указанием полного пути до них. И вот для того, чтобы не ошибиться при наборе, в bash имеется механизм, называемый автодополнением.
Примечание: в дальнейшем, для удобства, я буду называть имя файла команды просто командой. Это общепринятая практика.
Смысл этого механизма заключается в том, что когда вы начинаете набирать команду, вводите первые несколько букв и нажимаете клавишу Tab, в результате чего набор команды будет завершен автоматически. Это же работает и при наборе пути и имен файлов, передаваемых командам в качестве параметров.
Для того, чтобы понять, как это работает, приведу пример. Пусть мы хотим ввести команду diskutil . Начинаем вводить disku и нажимаем клавишу Tab, команда будет дописана автоматически – diskutil . А теперь попробуйте ввести на одну букву меньше — disk и нажать Tab — прозвучит звуковой сигнал и команда дописана не будет. Этот звуковой сигнал предупреждает нас, что есть несколько вариантов команд, начинающихся с букв disk . А вот для просмотра этих вариантов нажмите второй раз клавишу Tab и все эти варианты будут показаны:
Как видно на картинке, имеется шесть команд, название которых начинается с disk , а потому интерпретатор предлагает уточнить следующую букву. В нашем случае нужно ввести букву u , для того, чтобы интерпретатор смог понять, что нам нужна именно команда diskutil , поскольку это единственная команда, начинающаяся с букв disku и затем нажать клавишу Tab. Команда будет дописана полностью.
Попробуйте ввести только буквы di и нажать два раза клавишу Tab. Команд, начинающихся на эти две буквы, будет еще больше. А вот если бы в системе была только одна команда, начинающаяся с букв di , то после первого же нажатия клавиши Tab, она была бы дописана полностью, поскольку интерпретатору не приходилось бы выбирать из разных вариантов.
Точно так же это действует и при наборе имен каталогов и файлов, передаваемых в качестве параметров командам.
Пример. Предположим мы хотим посмотреть содержимое вашего каталога Загрузки при помощи команды ls .
И сразу небольшое отступление.
На самом деле, каталога с названием Загрузки , в вашем домашнем каталоге нет. Это программа Finder, так показывает вам название каталога Downloads . То есть фактически переводит на русский язык слово Downloads . Сделано это для удобства пользователей.
Вы можете убедиться в этом, взглянув на второй сверху снимок экрана, где мы командой ls выводили содержимое домашнего каталога. Как видите, там нет каталога с названием Загрузки , но есть каталог Downloads . Точно так же вы там не увидите каталогов с названиями Библиотеки , Документы , Изображения , Музыка , Общие , Сайты и Фильмы , которые показывает вам программа Finder как перевод с английского на русский названий каталогов: Library , Documents , Pictures , Music , Public , Sites и Movies соответственно.
Итак, вернемся к просмотру содержимого каталога Загрузки (а на самом деле Downloads ) командой ls . Нам нужно ввести название каталога в качестве параметра к этой команде. Набираем ls Dow и нажимаем клавишу Tab, получаем команду ls Downloads , в результате выполнения которой и получим содержимое каталога Загрузки ( Downloads ).
И еще одно отступление.
На самом деле в Unix -системах в этом случае вводят не ls Downloads , а ls ./Downloads . Тем самым обозначая, что каталог Downloads находится в текущем каталоге. Точка — обозначение текущего каталога. Но в реализации bash в OS X , сделано небольшое послабление пользователям и в текущем каталоге, можно ./ опускать, так как будто в переменной окружения PATH прописан текущий каталог, хотя на самом деле его там нет. Вы можете убедиться в этом, выполнив команду echo $PATH . Зачем это было сделано для меня остается загадкой, но таковы реалии OS X. Естественно можно набирать и канонически для Unix-систем – ./Downloads .
Итак, мы ознакомились с автодополнением. Этот инструмент позволяет очень быстро и безошибочно вводить команды. Между прочим, многие файловые операции (копирование, перемещение, переименование, удаление) бывают гораздо проще и их быстрее выполнить именно в командной строке, используя механизм автодополнения. 🙂
Совет 2 – история команд
Это еще один механизм, облегчающий работу в командной строке. Дело в том, что интерпретатор bash запоминает все команды, которые вы выполняли. Он сохраняет всю историю команд в скрытом файле вашего домашнего каталога с названием .bash_history . Увидеть этот файл можно при помощи команды ls с ключом -la , т.е. ls -la . Попробуйте.
Пользоваться историей команд очень просто – при помощи клавиш навигации — Стрела вверх и Стрелка вниз. Нажмите первую из них и вы увидите в командной строке предыдущую выполненную команду. Последующие нажатия этой клавиши будут последовательно выводить ранее выполненные вами команды. Соответственно вторая клавиша листает список выполненных команд в обратном направлении.
Это удобно использовать собственно для повторения выполненных команд. Но и очень удобно для их модификации. Например, в моих статьях часто встречаются команды вида defaults write … , которыми мы обычно включаем некоторые скрытые настройки OS X. А отмена включения этих настроек часто делается командой defaults delete … , которую очень просто получить, вызвав из истории предыдущую команду defaults write … и просто исправить ее на соответствующую команду defaults delete… , а не вводить ее с нуля.
Так же, если вы ввели команду с ошибкой и попытались ее выполнить, то после получения сообщения об ошибке, гораздо проще бывает не вводить команду заново, а исправить ошибку в предыдущей, вызвав ее нажатием на клавишу Стрелка вверх, а затем внеся исправления.
Надеюсь, это небольшое введение в основы мира командной строки, не слишком вас утомило. 🙂
Источник