Лучшие практики командной строки Linux и подсказки?

Я сначала попытался бы копировать Ваш VRRP, но с дополнительным VIP. Для каждого VIP чередуйте основные и резервные узлы.

DNS1 = vip1 основной, vip2 вторичный DNS2 = vip2 основной, vip1 вторичный

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

112
задан 19 February 2015 в 09:10
85 ответов

Используйте экран, свободный оконечный мультиплексор, разработанный Проектом GNU, который позволит Вам иметь несколько терминалов в одном.

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

111
ответ дан 28 November 2019 в 19:20
  • 1
    Наиболее распространенные переключатели, которые я использую, являются ' экранируйте-D-R' для отсоединения и возобновления моей последней экранной сессии и ' экран-x' для просмотра того же скрывают сессию от нескольких логинов. Кроме того, вовлеките себя хороший .screenrc от dotfiles.org/.screenrc –  Nick Devereaux 5 March 2009 в 03:41
  • 2
    Другая хорошая вещь об экране состоит в том, что можно совместно использовать терминал с другими людьми, когда Вы хотите сотрудничать на чем-то, с помощью экрана-x –  gareth_bowles 12 March 2009 в 20:40

Переключатель от удара до zsh, и видит, что Ваша производительность улучшается:

  • Действительно интеллектуальное, scriptable заполнение клавишей Tab. Это завершает не только командные строки, но и все опции, названия страниц справочника, имена пакета (для Кв. - добираются / появляются и т.д.), и что имеет Вас. И дает полезное объяснение опций во время завершения. Все это, не используя scrollback пространства после команды было выпущено.
  • Заполнение клавишей Tab подстановочных знаков; запишите кошку *.txt, нажмите вкладку и выберите между любыми файлами, которые соответствуют выражению.
  • Каталоги переключателя только путем введения их имен.
  • Несколько режимов строчного редактора. Может вести себя как vi или emacs, если Вы хотите его к.
  • Настраиваемые привязки клавиш, чтобы сделать независимо от того, что Вы желаете.
  • Подсказки Themeable, включая способность поместить быструю информацию о правой стороне экрана и иметь его автоскрываются при вводе долгой команды

Google скажет Вам намного больше преимуществ.

14
ответ дан 28 November 2019 в 19:20
  • 1
    необходимо дать больше затем ссылку. звучит интересным, но продайте его мне человек! –   2 March 2009 в 22:47
  • 2
    Им удавалось включать поддержку unicode? –   2 March 2009 в 22:50
  • 3
    @Cory Хорошо, я просто didn' t хотят заняться плагиатом, и это чувствовало себя избыточным для записи моего собственного когда there' s так много хорошего материала, записанного другими уже :) –   2 March 2009 в 22:54
  • 4
    @kyku да, there' s надлежащая поддержка unicode с тех пор, возможно, год назад. –   2 March 2009 в 22:55
  • 5
    прохладные взгляды. i' ll дают ему выстрел! –   2 March 2009 в 23:24

Я постоянно использую эти

ALT-. (ESC +. в некоторых терминалах), копирует в последний раз используемый (суперполезный) аргумент

CTRL-W удаляет слово

CTRL-L ясный терминал (как четкая команда, но быстрее)

ALT-B (ESC+B в некоторых терминалах) перемещает назад слово

ALT-F (ESC+F в некоторых терминалах) продвигается слово

Переход CTRL-E к EOL

Переход CTRL-A к BOL

Поиск CTRL-R в истории

17
ответ дан 28 November 2019 в 19:20
  • 1
    Спасибо за совместное использование ярлыков! Я не заставил ALT-B/F работать в Mac. –  Léo Léopold Hertz 준영 23 March 2009 в 20:07
  • 2
    Удивительный человек.... –  Daud Ahmad Khokhar 4 February 2010 в 16:02

Пакет завершения удара установки. Это содержит много предопределенных правил завершения для оболочки. Включите его путем ввода "источника/etc/bash_completion", если Вы дистрибутив не делаете этого для Вас. Затем например каждый раз, когда Вы завершаетесь, после kpdf Вы будете только видеть список файлов PDF и каталогов. Это столь же умно для завершения удаленных файлов после scp ssh://server/XXX (при включении логинов без пароля).

17
ответ дан 28 November 2019 в 19:20

Используйте "tar xf" для извлечения сжатых архивов. J для bzip2 и z для gzip не необходимы, поскольку tar обнаружит тип файла Вашего архива. Ни один не '-' знак перед аргументами. Вы сэкономите много времени (за тысячелетие ;-)).

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

19
ответ дан 28 November 2019 в 19:20
  • 1
    Да, я имею alias ut="tar xf", †“делает архивы извлечения еще легче. –  David Wolever 13 September 2009 в 19:17
  • 2
    Это перестало работать на некоторых дистрибутивах RHEL при использовании их. –  pvsnp 21 October 2009 в 00:27

Я изучил прием от друга долго назад для легкого изменения расширения файла:

mv my_filename.{old,new}

Расширение Shell развернет это до:

mv my_filename.old my_filename.new

Это может также использоваться для переименования файла другими способами, такими как включение чего-то:

mv my_{,cool_}filename
20
ответ дан 28 November 2019 в 19:20
  • 1
    Просто обязательно не поместите любые подстановочные знаки или другие выражения шаблона в той же команде, или шарик мог расшириться до больше, чем всего 2 аргумента! mv *. {Старый, новый}, вероятно, приведет к действительно неожиданным результатам. –   13 September 2009 в 19:24
  • 2
    Да, согласованный - это - важный протест:) –   13 September 2009 в 20:44
  • 3
    Можно также ввести, например, ls -l /bin/c затем нажимают Alt-Shift Alt-Shift-{и он завершит это к чему-то как ls -l /bin/c{at,h{grp,mod,own,vt},p{,io},sh} для Вас. –  Paused until further notice. 26 September 2009 в 19:05

Некоторые небольшие указатели относительно просмотра журнала:

  1. Можно использовать хвост-F, чтобы продолжать наблюдать журнал после того, как это будет усеченным (примером log4j).
  2. Можно использовать меньше: Откройтесь меньше, нажмите SHIFT+F для эмуляции поведения хвоста. Также полезная комбинация является-S для отключения обертывания строки. меньше позволит Вам искать в журналах.
20
ответ дан 28 November 2019 в 19:20

Наблюдение цветных структур каталогов легче.

alias ls="ls --color=tty"

Править

alias ls="ls --color=auto"
23
ответ дан 28 November 2019 в 19:20
  • 1
    Я предпочитаю - color=auto потому что это doesn' t отправленный мусорные символы управления, если перенаправление для регистрации Вас может также сделать псевдоним grep =" grep - color=auto" иметь соответствие выделенным шаблонам. –   2 March 2009 в 21:51
  • 2
    +1 для - color=auto; кто-то мог увеличить ответ с этим? –  Jonik 2 March 2009 в 22:40
  • 3
    Я думаю, что tty делает то же самое как автоматическое здесь. –  joshudson 2 March 2009 в 23:54
  • 4
    Обновленный для отражения color=auto –  Suroot 3 March 2009 в 02:11
  • 5
    Странно, окраска делает вещи намного менее читаемыми для меня. Желтый-на-белом, например, isn' t хороший выбор окраски. –   3 March 2009 в 04:52

Требование

Необходимо протестировать максимальную пропускную способность между 2 серверами.


Решение

На SERVER1 сделайте:

nc -u -l 54321 > /dev/null

На SERVER2 сделайте:

dd if=/dev/zero bs=1MB | nc -u SERVER1 54321 &
pid=$(pidof dd)
while (( 1 )); do kill -USR1 $pid; sleep 2; done

Вы будете видеть, производит, такие как:

182682000000 bytes (183 GB) copied, 1555.74 seconds, 117 MB/s
182920+0 records in
182919+0 records out

117 МБ/с являются интересным фактором здесь, который показывает пропускную способность передачи фактической сети.

Объяснение:

Поскольку пакет начнет течь по сети, Вы сможете видеть статистику пропускной способности по SERVER2, который является довольно хорошей оценкой фактической максимальной возможной пропускной способности между этими 2 серверами.

Копирование UDP (для предотвращения TCP наверху).

Копирование к из памяти (/dev/zero) на SERVER1 к памяти (/dev/null) на SERVER2, таким образом предотвращение диска ввод-вывод от становления узким местом.

31
ответ дан 28 November 2019 в 19:20
  • 1
    Убедитесь, что ssh не настроен для использования сжатия в .ssh/config, 'все же. иначе you' ll получают действительно хорошие числа, которые очень далеки от истины ;-) –  Joachim Sauer 2 March 2009 в 22:46
  • 2
    Lol, да. И SSH будет обстрелом Вашего шифрования ЦП и дешифрованием, которое также отбросит числа. –   3 March 2009 в 02:22
  • 3
    используйте netcat вместо этого –  bendin 3 March 2009 в 07:49
  • 4
    +1 для netcat. издержки SSH скосят Ваши числа –  Mikeage 3 March 2009 в 10:02
  • 5
    Пересмотренный для исправления предложений @saua, @Daniel Von Fange и @bendin. Спасибо за Ваших парней предложений. –  Maxim Veksler 3 March 2009 в 10:49

При записи циклов на командной строке в ударе я часто префикс опасные команды с командой 'эха'.

for item in items; do echo something-risky; done

Таким образом, я добираюсь для наблюдения 'чего-то - опасный' полностью прежде, чем передать для выполнения его. Помогает, когда Ваша опасная команда включает переменные расширения и шарики. И 'набор-x' очень полезен при записи сценариев удара.

'набор-x' позволяет отладить. См. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html для получения информации об отладке удара.

32
ответ дан 28 November 2019 в 19:20
  • 1
    Я делаю это также, очень удобный прием! –  user18911 5 March 2009 в 04:48
  • 2
    +1 Это может быть жизненным средством сохранения! или средство сохранения данных... –  David Oneill 30 November 2010 в 04:29

Использовать && вместо ; при выполнении нескольких команд сразу. Это останавливается, когда ошибка происходит и не выполняет другие команды.

Классический пример:

./configure && make && make install
36
ответ дан 28 November 2019 в 19:20
  • 1
    Эта практика так недооценена! Это должна быть общепринятая практика для окончания каждой строки сценария оболочки с & & и используйте " true" как заключительная команда. –  user18911 5 March 2009 в 04:57
  • 2
    what' s забавный то, что я didn' t знают о '; ' команда прежде - я ВСЕГДА использовал ' & & '. –  Nick Klauer 15 March 2009 в 04:45
  • 3
    Можно запустить сценарии оболочки с " #!/bin/sh-e". это останавливается, если какая-либо строка перестала работать. –  stribika 8 August 2009 в 14:32
  • 4
    Можно использовать двойной канал для " else" пункт: dosomething && echo "success" || echo "teh fail" –  Paused until further notice. 26 September 2009 в 18:04
  • 5
    Было недавнее примечание по Планете Debian это it' s плохая практика для использования-e на строке хижины. Вместо этого используйте набор-e в теле сценария. Таким образом, сценарий doesn' t работают по-другому, если кто-то, оказывается, выполняет в использовании sh $filename. –  ptman 24 November 2009 в 13:00

Эта подсказка сделает Ваш CLI более удобным (по крайней мере, это делает для меня):

создайте ~/.inputrc файл со следующим содержанием:

"\e[A": history-search-backward
"\e[B": history-search-forward

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

38
ответ дан 28 November 2019 в 19:20
  • 1
    Обычно я связываю тех, которые к \e [5 ~ и \e [6 ~ (иначе pageup и pagedown) вместо того, чтобы снова переплести стрелки, но это более удобно, чем Ctrl-R/Ctrl-S :) –  ephemient 2 March 2009 в 23:06
  • 2
    +1. I' ve заставил их связанные с F8 и Shift-F8 подражать cmd.exe, но тот же принцип применяется. –  user18911 5 March 2009 в 04:45
  • 3
    +1 для exec bash –  Paused until further notice. 26 September 2009 в 18:01
  • 4
    Это является также образовательным для чтения man readline и запомните, это - ярлыки –  SaveTheRbtz 6 July 2010 в 21:35

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

\rm -rf ~/tmp
38
ответ дан 28 November 2019 в 19:20
  • 1
    это то же как " комната команды-rf ~/tmp"? –  Maxim Veksler 2 March 2009 в 21:58
  • 2
    Я didn' t знают " command" но это выглядит одинаково. –  mouviciel 2 March 2009 в 22:38
  • 3
    Ну, да, если " command" не псевдоним, в этом случае, необходимо было бы использовать \command комнату-rf ~/tmp в этом случае \rm-rf ~/tmp, лучше –  Jamol 3 March 2009 в 10:55
  • 4
    @presario и Вы думаете, что это было бы возможно сделать псевдоним для "/"? как жаль я can' t upvote комментарии :) –   3 March 2009 в 11:13
  • 5
    См. также подобную команду " builtin ". –  Paused until further notice. 26 September 2009 в 17:50

Иногда полезно оставить программу, работающую даже после того, как Вы вышли из системы. Я видел некоторые решения, которые используют nohup или даже экранируют с этой целью. Самое простое, о котором я знаю:

$ your_command_here & disown

Можно также отсоединить под управлением программу:

$ your_command_here
# Press <Control-Z> to stop the program and bring it to background:
$ bg
$ disown
38
ответ дан 28 November 2019 в 19:20
  • 1
    Используя экран является большим, потому что Вы можете " reconnect" к тому приложению отовсюду позже. –  prestomation 2 March 2009 в 23:54
  • 2
    +1, я hadn' t слышал о, отрицают. –  user18911 5 March 2009 в 04:47
  • 3
    так же ре отрицает, хотя я действительно уже делаю то же с экраном –  Andy 7 March 2009 в 00:40

Изучите Vim.

Это - (возможно) лучший редактор, но несомненно лучший редактор, доступный на пустом сервере Linux.

41
ответ дан 28 November 2019 в 19:20
  • 1
    gvim является также лучшим файловым браузером на окнах ;) –   16 June 2009 в 22:12

Нажмите Ctrl-R и начните вводить команду (или любая часть его) - это ищет историю команд. Удар Ctrl-R снова перейдет к следующему соответствию, войти, выполняет в настоящее время отображаемую команду, и стрелка вправо (по крайней мере), позволит Вам отредактировать его сначала.

$ (reverse-i-search)`svn': svn status

Я использовал Linux для чего-то как 7 лет как моя основная ОС прежде, чем узнать об этом, но теперь, когда я знаю это, это довольно удобно.

46
ответ дан 28 November 2019 в 19:20
  • 1
    Спасибо. I' ve, с помощью обратного поиска, но haven' t смогший, чтобы выяснить, как перейти к следующему соответствию. –  Adam 7 March 2009 в 18:56
  • 2
    Ctrl-S переходит к следующему соответствию. Вам, вероятно, придется сделать stty -ixon сначала для выключения управления потоком XON/XOFF, означающего (это также делает Ctrl-Q доступным, по умолчанию it' s отображенный для совпадения с заключенным в кавычки Ctrl-V - вставляют, но можно изменить его на что-то еще). См. man stty и man readline для большей информации. Эти stty команда может быть добавлена к Вашему ~/.bashrc –  Paused until further notice. 26 September 2009 в 17:58

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

Я использовал оболочку в течение многих лет, кропотливо вводящих в именах каталогов вручную. Однажды я наблюдал, что друг бездельничал в системе, и он продолжал поражать клавишу Tab. Я спросил, "почему Вы поражаете вкладку?". Ответ: это пытается завершить каталог или имя файла. Кто предположил бы - заполнение клавишей Tab! Введите немного файл или каталог, поразите вкладку, и это попытается закончить то, что Вы ввели (поведение зависит от который оболочка хотя).

Однажды, сказал, что друг наблюдал за мной на командной строке и наблюдал, что я ввел что-то как:

coryking@cory ~/trunk/mozi $ pushd /etc
/etc ~/trunk/mozi
coryking@cory /etc $ popd
~/trunk/mozi
coryking@cory ~/trunk/mozi $

Кто предположил бы!? Он никогда не знал о popd / pushd. Угадайте, что мы ровны...

45
ответ дан 28 November 2019 в 19:20
  • 1
    Мне заполнение клавишей Tab походит на что-то " obvious" очень простой, но я никогда не знал о popd/pushd также. Забавный действительно.:) –  Jonik 2 March 2009 в 22:46
  • 2
    Также см. этот ответ для сможения к полному вкладкой намного больше, чем команды, файлы и каталоги: stackoverflow.com/questions/603696//603919#603919 –  Jonik 2 March 2009 в 23:20
  • 3
    That' s таким образом верный. Я узнал о bash' s обратный поиск истории (ctrl-r) путем наблюдения кого-то. Я позже понял, что это была readline функция и работавший то же в других программах, которые включают readline (mysql, gdb, Python-i, clisp и т.д.). –  sigjuice 23 March 2009 в 07:41
  • 4
    Как мог Вы использовать " shell" в течение многих лет и не знают о заполнении клавишей Tab? –  prestomation 18 December 2009 в 23:36
sudo !!

Повторно выполните предыдущую команду как корень.

[Текущая главная команда на сайте http://www.commandlinefu.com, сайт, тематический вроде этого вопроса.]

53
ответ дан 28 November 2019 в 19:20

Я недавно обнаружил pv команда (передают средство просмотра по каналу), который похож на кошку, но с деталями передачи.

Таким образом вместо

$ gzip -c access.log > access.log.gz

Можно использовать

$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59

Таким образом вместо того, чтобы понятия не иметь, когда Ваша операция закончится, теперь Вы будете знать!

Любезность Peteris Krumins

69
ответ дан 28 November 2019 в 19:20
  • 1
    $ gzip-c access.log > access.log.gz, Почему не просто: $gzip access.log –   5 March 2009 в 18:30
  • 2
    О, это работает :) Я просто взял пример от Peteris' веб-сайт. –  Nick Devereaux 6 March 2009 в 01:55
  • 3
    Это похоже старый добрый tee(1). –  Daniel C. Sobral 30 March 2010 в 22:44

В ударе я использую! $ много. Это повторяет последний аргумент последней команды:

ls /really/long/command/argument/that/you/dont/want/to/repeat.txt
vi !$

Это выполнит ls, затем если Вы захотите отредактировать его, Вы не должны перепечатывать его, просто использовать! $. Это действительно полезно для длинного тракта. Кроме того! * повторяет аргументы всей предыдущей команды. Я не использую это как очень, но это выглядит полезным.

Я известный они были упомянуты, но я использую энергию, экран и CD - много.

Я забыл noclobber:

set -o noclobber

От удара человека:

Если установлено, удар не перезаписывает существующий файл с>,> и, и <> операторы перенаправления. Это может быть переопределено при создании выходных файлов при помощи оператора перенаправления> | вместо>.

16
ответ дан 28 November 2019 в 19:20
  • 1
    Я don' t используют $!, как it' s действительно легкий к толстому пальцу, но мне нравится поражать ^ [-. (период Escape) для получения того же эффекта. –  David Wolever 13 September 2009 в 19:19
  • 2
    В зависимости от Вашей клавиатуры, и т.д., можно сделать Alt-. также. –  Paused until further notice. 26 September 2009 в 18:26
  • 3
    Omg, крошечный оргазм, ty Dennis! –  artifex 11 March 2010 в 14:38

Старая школа, перемещая дерево каталогов от одного места до другого, сохраняя символьные ссылки, полномочия и весь этот хороший материал:

tar cBf - . | (cd /destination; tar xvBpf -)

или по сети

tar cBf - . | rsh foo.com "cd /destination; tar xvBpf -)

Новая школа:

rsync -urltv . /destination

или по сети

rsync -urltv -e ssh . foo.com:/destination
13
ответ дан 28 November 2019 в 19:20
  • 1
    tar xvBpf - -C /destination == (cd /destination; tar xvBpf -) Немного меньше ввода, и легче использовать по ssh. –  ephemient 2 March 2009 в 23:08
  • 2
    - того же как '-rlptgoD' - который является, рекурсивно вызывают, копируют символьные ссылки как символьные ссылки, сохраняют перманент, сохраняют метки времени, сохраняют группы, сохраняют владельцев, копируют файлы устройств и специальные файлы как устройство и специальные файлы. Кроме того, между машинами,-z (файлы сжатия перед отправкой, распаковкой после получения) полезно. rsync-avz [-e ssh] является Вашим другом :-) –  dr-jan 21 April 2009 в 00:10
  • 3
    -z приносит пользу по ssh? Я wouldn' t думают так. –  Paul Tomblin 21 April 2009 в 01:44

Требование: у Вас есть каталог, содержащий большой список файлов, которые требуется удалить. комната-r перестанет работать!

пример

find /var/spool/mqueue/ | wc -l
191545
rm -f /var/spool/mqueue/*
-bash: /bin/rm: Argument list too long

Решение:

find /var/spool/mqueue/ -xdev -exec command rm -f '{}' +

Объяснение:

Править: Фиксация объяснения после комментария @ephemient.

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

find /var/spool/mqueue -xdev -print0 | xargs -0 rm -f

который можно найти полезным если Ваш find не поддерживает -exec ... +.

13
ответ дан 28 November 2019 в 19:20
  • 1
    Замена \; с +: затем find сделает то, что xargs делает по умолчанию, который является пакетом аргументы как можно больше (не работая на основе предела списка аргументов). Или просто используйте -delete вместо этого -exec rm (GNU Findutils, необходимый для обоих) –  ephemient 2 March 2009 в 23:09
  • 2
    Хороший совет - я didn' t знают ' + ' один. –  codeinthehole 2 March 2009 в 23:55
  • 3
    @ephemient: Хороший комментарий, I' ve отредактировал сообщение. –  Maxim Veksler 3 March 2009 в 09:47
  • 4
    Интересный, я hadn' t слышал о ' + '. –  user18911 5 March 2009 в 05:01
  • 5
    или всего find ... -delete, если Ваша находка так обеспечена. –  David Wolever 13 September 2009 в 19:20

Мне нравится использовать

cd -

переключаться на предыдущий каталог. Очень полезный!

73
ответ дан 28 November 2019 в 19:20
  • 1
    Я никогда не знал это!Спасибо! На связанной ноте pushd и popd делают что-то подобное путем создания стопки директоров, которым помогают подобные приемы, когда Вы перешли вокруг глубокой структуры dir. –   3 March 2009 в 21:40
  • 2
    Это - чистое просвещение. –  Manuel Ferreria 7 March 2009 в 23:07

Замена Shell выполняется с ^:

/home/eugene $ ls foo.txt
foo.txt
/home/eugene $ ^ls^rm
rm foo.txt
/home/eugene $ ls foo.txt
ls: cannot access foo.txt: No such file or directory
8
ответ дан 28 November 2019 в 19:20
  • 1
    На самом деле я предпочитаю "!!: gs/foo/bar" так как я часто нахожу, что нечто упоминается несколько раз в предыдущей команде, и я хочу глобальную замену (например, " mv нечто bak" foo.txt;). –  user18911 5 March 2009 в 05:07

grep является моим другом. Серьезно.

Список .rb файлы, которые содержат текст class foo:

grep -l "class foo" .rb

Список .rb файлы, которые не содержат текст class foo:

grep -L "class foo" *.rb

Список .rb файлы, которые не содержат нечто или панель (можно использовать любой regexp с-e, но необходимо выйти из операторов):

grep -L -e "foo\|bar" *.rb
8
ответ дан 28 November 2019 в 19:20
  • 1
    Вы могли бы интересоваться инструментом, названным " ack" который делает то же самое как grep, но просканирует рекурсивно только исходные файлы. Дайте ему попытку (it' s свободный): betterthangrep.com –   5 May 2009 в 21:40

Для оболочек как bash и ksh, можно заставить командную строку ответить на команды навигации как текстовый редактор:

set -o emacs

или

set -o vi

позволит Вам искать свою историю и перемещаться командная строка в способе, которым Вы привыкли делать в текстовых файлах (например, в vi режиме, нажимая ESC затем ввод /string будет искать Ваши предыдущие команды "строку" - можно использовать n и N перемещаться между соответствиями)

8
ответ дан 28 November 2019 в 19:20
  • 1
    Незначительная опечатка: " тест editor" должен быть " текст editor" –   3 March 2009 в 00:16

Большая часть пропущенной олдскульной команды: find

Вчера я восстановил грубую ошибку полномочий:

for u in nr dias simonpj; do
   sudo -u $u find . -type d -exec chmod g+s '{}' ';'
done
10
ответ дан 28 November 2019 в 19:20
  • 1
    Да! Изучите команду находки. Найдите смешанными с xargs, sed, и awk делает для безжалостной силы обработки файла! –  Jonathon Watney 3 March 2009 в 03:08
  • 2
    Договорились! Хотя я никогда ничего не помню о sed и awk - я всегда должен повторно изучать это! Я должен действительно распечатать cheatsheet. –   3 March 2009 в 03:22
  • 3
    Да, но don' t забывают использовать-print0 и-0 опций к xargs для предотвращения хитрых проблем, включающих имена файлов, содержащие необычные символы (например, обратная косая черта). –  user18911 5 March 2009 в 04:55
  • 4
    Да, вероятно, половина времени, которое я использую, находит it' s для фиксации глупых вещей разрешения: chmod 644 $(find . -type f), chmod 755 $(find . -type d) –  David Wolever 13 September 2009 в 19:33
  • 5
    Don' t забывают -perm опция к find для определения местоположения файлов, которые имеют полномочия, устанавливает определенный путь. –  Paused until further notice. 26 September 2009 в 19:07

Как использовать подверсию в Linux без справки необычных графических интерфейсов, которые не могут быть доступными.

svn co <repo-url> . # Checks out project into current folder

svn update # Get latest changes from server

svn status # Shows what files have changed locally

svn add <path/filename> # Add some file to the repo

svn commit # Commit your changes to the repo

Это сдерживает много разработчиков от использования Linux, странно достаточно.

10
ответ дан 28 November 2019 в 19:20
  • 1
    rapidsvn является миленьким gui для svn в соответствии с Linux. –   2 March 2009 в 22:15
  • 2
    Много необычных, мощных графический интерфейсов пользователя, конечно, доступны (как этот в ИДЕЕ IntelliJ), но мне нравится возможность использования или они или командная строка (также мощный, но по-другому) - какой бы ни удовлетворяет текущей ситуации лучше –  Jonik 2 March 2009 в 23:18
  • 3
    Моим фаворитом безусловно является NautilusSVN (во многом как TortoiseSVN): code.google.com/p/nautilussvn –  user7655 3 March 2009 в 16:00

Я использую это две подсказки так часто, что я думал, что это будет хорошая идея совместно использовать:

!foo

Запустит последнюю команду в файле истории, начинающемся с "нечто" (я часто использую его при компиляции, !gcc например.)

Другой является сочетанием клавиш (Ctrl+O вместо Возврата), это выполнит команду И отобразит следующую команду в файле истории. Например, когда я компилирую и тестирую файл, я всегда делаю 3 или 4 команды, делаю, CD к dir теста, запускаю тест, CD к dir make-файла. Используя Ctrl+O это делает эту задачу намного легче :)

Надеюсь эта справка!

11
ответ дан 28 November 2019 в 19:20

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

Чем больше Вы используете его, тем больше Вы узнаете об этом. Можно использовать его, чтобы сделать некоторые УДИВИТЕЛЬНЫЕ вещи.

Примечание: ВСЕ эти вещи являются выполнимыми удаленно без установки на Вашем сервере кроме иметь ssh выполнение сервера.

Смонтируйте файловую систему по Интернету

ищите сеть SSHFS

Направьте команды.

Протоколом SVN+SSH является Подверсия от удаленного клиента к серверу без работы DEAMON его! Команда SVN запускает сервер через оболочку ssh и передает информацию назад и вперед через существующий канал. rsync программа делает то же самое, выполнения против сервера без rsync deamon путем запуска один самого через SSH. Легко записать Ваши собственные файлы удара, чтобы сделать подобные приемы.

Цепочка для прохода через брандмауэры

Я использую это все время для перехода через мой сервер Linux дома к моему Mac.

Порты передачи:
Кажется только умеренно полезным, пока Вы не понимаете, что можно возвратиться через домашний брандмауэр и настроить маршрутизатор дома от работы, как будто Вы делали так из Вашей домашней сети).

Передайте X запросов:

Это - другой удивительный. С или без X-сервера, работающего на Вашей удаленной системе, можно запустить программу X-окон, и окно появится на локальном экране. Просто используйте переключатель-X, это - все!

Так как у Вас не должно быть X-сервера, работающего на Вашем удаленном сервере, влияние на ЦП на Вашем сервере минимально, у Вас может быть КРОШЕЧНЫЙ сервер Linux, который подает огромные приложения к Вашей мощной игре ПК, запускающий Windows и cygwin/X.

Конечно, VI и EMACS работают по SSH, но когда я работаю дома, иногда я хочу больше. Я использую ssh-X для запуска копии Eclipse! Если Ваш сервер более мощен, чем Ваш ноутбук, у Вас есть GUI, находящийся тут же на Вашем ноутбуке, но компиляции сделаны на Вашем сервере, не волнуйтесь о системной нагрузке.

Выполненный в пакетных файлах

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

Две вещи объединение, чтобы заставить этого охладиться. Каждый - Вы, может устранить подсказки пароля при помощи (более безопасных) ключей шифрования. Второе является Вами, может указать команду на CLI SSH. Я использовал это некоторыми интересными способами - Как то, когда компиляция перестала работать на удаленном сервере, я имел бы это SSH в мой компьютер и играл бы звуковой файл).

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

Встроенный к Mac

И сервер и клиент встроены и в Mac и в Linux. В случае Mac и Ubuntu, включая сервер так же просто как нахождение правильного флажка.

На cygwin установки ПК или cygwin/X (cygwin/X позволит Вам направлять свои выходные данные X-окна от Вашей машины Linux до Вашего Windows PC - это устанавливает X-сервер),

Важные Подсказки/файл конфигурации

Никогда не используйте порт 22 на Вашем брандмауэре. Вы получите много попыток взлома, это просто не стоит того. Просто имейте свой брандмауэр вперед другой порт к Вашему серверу.

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

Host home
    hostname billshome.hopto.org
    Port=12345
    user=bill
    LocalForward=localhost:1025 mac:22

Когда я ввожу "ssh домой" (ничто иное), это действует, как будто я ввел:

ssh -p 12345 bill@billshome.hopto.org

и затем вперед мой локальный порт 1025 к моей системе "Mac" дома. Причина этого состоит в том, что у меня есть другая запись в моем файле:

Host mac
    hostname localhost
    port=1025

так, чтобы, после того как я сделал "ssh домой" и все еще имею открытое окно, я мог ввести "ssh Mac", и компьютер на работе здесь на самом деле попытается соединиться со своим собственным портом 1025, который был передан "mac:22" другой командой, таким образом, это соединится с моим Mac дома через брандмауэр.

Редактирование - охлаждает сценарий!

Я вскопал старый сценарий, который я просто люблю - должен был возвратиться и отправить его для любого здесь, кому могло бы быть интересно. Сценарий называют "authMe"

#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
    echo 'id_dsa.pub does not exist, creating'
    ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub

Если у Вас есть этот сценарий в Вашем корневом каталоге и существует хост, с которым можно соединиться (через ssh), то можно ввести "./authMe имя хоста".

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

После этого команда SSH не должна больше просить Ваш пароль при присоединении к той удаленной системе, это будет использовать общедоступную/частную пару ключей.

Если Ваш удаленный компьютер не всегда безопасен, необходимо рассмотреть установку "пароля" при запросе.

Можно также хотеть настроить ssh сервер на дальнем конце для не разрешения текстовых паролей (только ключи) для дополнительной безопасности.

101
ответ дан 28 November 2019 в 19:20
  • 1
    +1 очень хорошее и компактное сообщение –  Karsten 3 March 2009 в 14:20
  • 2
    Маленькое примечание по SSH по порту 22: если you' ve получил хороший пароль root и Ваших пользователей don' t имеют ужасные пароли, просто работания fail2ban (или что-то подобное) достаточно для не допускания взломанных попыток. Я нашел это действительно раздражающим для хранения SSH на другом порте. –  David Wolever 13 September 2009 в 19:04
  • 3
    Это может время от времени быть раздражающим, но объем подключений был просто страшен. Я знаю, что они - not' t предполагаемый пройти, но it' s отчасти как то, если у Вас был кто-то приближающийся к Вашему дому и играющий с Вашей ручкой двери каждую минуту - просто расстраивание. –   14 September 2009 в 18:49
  • 4
    There' s встроенная версия Вашей последней команды в большинстве версий ssh в наше время, it' s названный ssh-copy-id, и it' s столь же простой как ssh-copy-id user@someserver –  JamesHannah 20 October 2009 в 18:20
  • 5
    Другой способ сделать Ваш ' ssh mac' прием должен использовать директиву ProxyCommand в Вашем .ssh/config файле. mac ProxyCommand ssh-q хоста размещает " nc %h %p" Это выполнит netcat (nc) на доме и перенаправит Ваше соединение SSH прямо через к Mac. Я нахожу легче к цепочке (например, если необходимо соединиться с ' home' добираться до ' работа bastion' добираться до ' работайте сеть server'. –  toppledwagon 20 October 2009 в 23:36

Теги

Похожие вопросы