Большинство мощных примеров команд Unix или сценариев каждый программист должно знать

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

i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

и

overridePendingTransition(0, 0);

, оно может скрыть программную клавиатуру, и нет способа показать это.

27
задан 14 revs 16 July 2009 в 05:20
поделиться

22 ответа

Лучшие ответы сообщества


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

find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 

Вызов редактора по умолчанию (Nano / ViM)

(работает в большинстве систем Unix, включая Mac OS X) Редактор по умолчанию - это ваш Переменная среды " EDITOR " установлен в. например: экспорт РЕДАКТОР = / usr / bin / pico , что является находится по адресу ~ / .profile в Mac OS X.

Ctrl+x Ctrl+e

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

lsof -i -nP

Очистить историю поиска Терминала (Еще один из моих любимых)

history -c
1
ответ дан 28 November 2019 в 04:47
поделиться

Я считаю commandlinefu.com отличным ресурсом для различных рецептов сценариев оболочки.

Примеры

Общие

# Run the last command as root
sudo !!

# Rapidly invoke an editor to write a long, complex, or tricky command
ctrl-x ctrl-e

# Execute a command at a given time
echo "ls -l" | at midnight

Esoteric

# output your microphone to a remote computer's speaker
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
19
ответ дан 28 November 2019 в 04:47
поделиться

Вы можете делать что угодно с этим ...

gcc

-2
ответ дан 28 November 2019 в 04:47
поделиться

Что-то вроде отступления, но вы может получить PowerShell в Windows. Он действительно мощный и может делать много вещей типа * nix. Одно интересное отличие состоит в том, что вы работаете с объектами .net вместо текста, что может быть полезно, если вы используете конвейер для фильтрации и т. Д.

В качестве альтернативы, если вам не нужна интеграция .NET, установите Cygwin в окне Windows. (И добавьте его каталог в ПУТЬ Windows.)

0
ответ дан 28 November 2019 в 04:47
поделиться

Grep (попробуйте Windows Grep )

sed (попробуйте Sed для Windows)

На самом деле, есть отличный набор действительно полезных портов Команды * nix доступны на http://gnuwin32.sourceforge.net/ . Если у вас есть фон * nix и теперь вы используете окна, вам, вероятно, стоит их проверить.

0
ответ дан 28 November 2019 в 04:47
поделиться

При решении проблем на неисправных Linux-компьютерах наиболее распространенной последовательностью клавиш, которую я набираю в конце, является alt + sysrq REISUB

1
ответ дан 28 November 2019 в 04:47
поделиться

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

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

0
ответ дан 28 November 2019 в 04:47
поделиться

Способ поиска (в нескольких) плохо отформатированных файлах журнала, в которых строка поиска может быть найдена на "осиротевшей" следующей строке. Например, чтобы при поиске id = 110375 отображать как 1-ю, так и объединенные 3-ю и 4-ю строки:

[2008-11-08 07:07:01] [INFO] ...; id = 110375; ...
[2008-11-08 07:07:02] [INFO] ...; id = 238998; ...
[2008-11-08 07:07:03] [ERROR] ... caught exception
...; id = 110375; ...
[2008-11-08 07:07:05] [INFO] ...; id = 800612; ...

Думаю, должны быть лучшие решения ( да, добавьте их ...! ), чем следующая конкатенация двух строк с использованием sed перед фактическим запуском grep :

#!/bin/bash

if [ $# -ne 1 ]
then
  echo "Usage: `basename $0` id"
  echo "Searches all myproject's logs for the given id"
  exit -1
fi  

# When finding "caught exception" then append the next line into the pattern
# space bij using "N", and next replace the newline with a colon and a space
# to ensure a single line starting with a timestamp, to allow for sorting
# the output of multiple files:
ls -rt /var/www/rails/myproject/shared/log/production.* \
  | xargs cat | sed '/caught exception$/N;s/\n/: /g' \
  | grep "id = $1" | sort

... для yield:

[2008-11-08 07:07:01] [INFO] ...; id = 110375; ...
[2008-11-08 07:07:03] [ERROR] ... caught exception: ...; id = 110375; ...

На самом деле, более общее решение добавит все (возможно, несколько) строк, которые не начинаются с некоторой [отметки времени] предыдущей строки. Кто угодно? Конечно, необязательно использовать sed .

1
ответ дан 28 November 2019 в 04:47
поделиться

Сила этих инструментов (grep find, awk, sed) заключается в их универсальности, поэтому приводить конкретный случай кажется совершенно бесполезным.

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

Примеры приветствуются, но для этого уже есть темы. Я чаще всего использую:

grep something_to_find * -R

, который можно заменить на ack и

find | xargs 

find с результатами, передаваемыми в xargs, может быть очень мощным

1
ответ дан 28 November 2019 в 04:47
поделиться

Ваша оболочка - это самый мощный инструмент, который у вас есть

  1. , способный писать простые циклы и т. Д.
  2. понимание подстановки файлов (например, * .java и т. Д.)
  3. собирать команды через каналы, подоболочки. перенаправление и т. д.

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

Unix Power Tools многое из этого покажет. Каждый раз, открывая свой экземпляр, я нахожу что-то новое.

4
ответ дан 28 November 2019 в 04:47
поделиться

Некоторые из вас могут не согласиться со мной, но, тем не менее, есть о чем поговорить. Если вы изучите gawk (а также другие варианты) полностью, вы можете пропустить обучение и использование grep / sed / wc / cut / paste и некоторых других инструментов * nix. все, что вам нужно, - это один хороший инструмент, чтобы справиться с работой многих вместе взятых.

1
ответ дан 28 November 2019 в 04:47
поделиться
  • grep
  • awk
  • sed
  • perl
  • find

Много возможностей Unix проистекает из его способности манипулировать текстовыми файлами и фильтровать данные. Конечно, вы можете получить все эти команды для Windows. Они просто не встроены в ОС, как в Unix.

и возможность связывать команды вместе с конвейерами и т. Д. Это может создавать чрезвычайно мощные отдельные строки команд из простых функций.

8
ответ дан 28 November 2019 в 04:47
поделиться

Для параллельного запуска нескольких процессов без чрезмерной перегрузки машины (в многопроцессорной архитектуре):

NP=`cat /proc/cpuinfo | grep processor | wc -l`
#your loop here
    if [ `jobs | wc -l` -gt $NP ];
    then
         wait
    fi
    launch_your_task_in_background&
#finish your loop here
0
ответ дан 28 November 2019 в 04:47
поделиться

Тот факт, что вы можете использовать -name и -iname несколько раз в команде find, был глазом открывалка для меня.

[findplaysong.sh]

#!/bin/bash
cd ~
echo Matched...
find /home/musicuser/Music/ -type f  -iname "*$1*" -iname "*$2*" -exec echo {} \;
echo Sleeping 5 seconds
sleep 5
find /home/musicuser/Music/ -type f  -iname "*$1*" -iname "*$2*" -exec mplayer {} \;
exit
0
ответ дан 28 November 2019 в 04:47
поделиться

] Если что-то работает на одном сервере, но не работает на другом, следующее позволяет вам сравнить все связанные библиотеки:

export MYLIST=`ldd amule | awk ' { print $3; }'`; for a in $MYLIST; do cksum $a; done

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

0
ответ дан 28 November 2019 в 04:47
поделиться

Поиск PID без отображения самого grep

export CUPSPID=`ps -ef | grep cups | grep -v grep | awk '{print $2;}'`
1
ответ дан 28 November 2019 в 04:47
поделиться

Команда tr является наиболее недооцененной командой в Unix:

#Convert all input to upper case
ls | tr a-z A-Z

#take the output and put into a single line 
ls | tr  "\n" " "

#get rid of all numbers
ls -lt | tr -d 0-9
2
ответ дан 28 November 2019 в 04:47
поделиться

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

mkdir ~/aewseomeDirectory

вы можете увидеть, что слово "awesome" написано неправильно, вы можете ввести следующее, чтобы повторно запустить команду с исправленной опечаткой

^aew^awe

, она затем выведет то, что она заменила (mkdir ~ / aweseomeDirectory ) и запускает команду. (не забудьте отменить урон, нанесенный неправильной командой!)

вы можете ввести следующее, чтобы повторно запустить команду с исправленной опечаткой

^aew^awe

, она затем выведет то, что она заменила (mkdir ~ / aweseomeDirectory ), и запустит команду. (не забудьте отменить урон, нанесенный неправильной командой!)

вы можете ввести следующее, чтобы повторно запустить команду с исправленной опечаткой

^aew^awe

, она затем выведет то, что она заменила (mkdir ~ / aweseomeDirectory ), и запустит команду. (не забудьте отменить урон, нанесенный неправильной командой!)

3
ответ дан 28 November 2019 в 04:47
поделиться

Мне больше всего нравится команда lsof.

«lsof» может использоваться для вывода списка открытых файловых дескрипторов, сокетов и каналов. Я считаю это чрезвычайно полезным при попытке выяснить, какие процессы и какие порты / файлы использовали на моей машине.

Пример: список всех интернет-соединений без разрешения имени хоста и без преобразования имени порта в порт.

lsof -i -nP

http: // www .manpagez.com / man / 8 / lsof /

3
ответ дан 28 November 2019 в 04:47
поделиться

Я так часто этим пользуюсь, что мне на самом деле стыдно. Удалите пробелы из всех имен файлов и замените их подчеркиванием:

[removepaces.sh]

#!/bin/bash
find .  -type f -name "* *" | while read file
do
   mv "$file" "${file// /_}"
done
4
ответ дан 28 November 2019 в 04:47
поделиться
for card in `seq 1 8` ;do  
  for ts in `seq  1 31` ; do 
     echo $card $ts >>/etc/tuni.cfg;
   done
 done 

was better than writing the silly 248 lines of config by hand.

Neded to drop some leftover tables that all were prefixed with 'tmp'

for table in `echo show tables | mysql quotiadb |grep ^tmp` ; do
  echo drop table $table
done

Review the output, rerun the loop and pipe it to mysql

1
ответ дан 28 November 2019 в 04:47
поделиться

Как выйти из VI

: wq

Сохраняет файл и завершает несчастье.

Альтернатива ": wq " - " : x ", чтобы сохранить и закрыть редактор vi.

13
ответ дан 28 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

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