blackraven 16.12.2010 11:32

Переводы30 полезных команд в Linux

Оригинал
Эта коллекция содержит те команды, которые я выучил за годы работы в Linux. Разумеется, автор не я. Просто я находил их на различных ресурсах, изменял их, часть составлял сам, читая книги и страницы man.

Отмазка: пробуйте все эти команды на не-production серверах, некоторые из них могут что-то сломать.


1. Удаление конфигурационных файлов от деинсталлированных программ в Debian


Есть несколько вариантов сделать это. Например:
1
sudo aptitude purge '~c'


1
sudo dpkg -l | awk '/^rc/ {print $2}' | xargs dpkg -P



2. Сборка фильма из файлов jpg


1
mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800



3. Очистка содержимого файла


И снова - есть много вариантов это сделать:
1
:> file


1
truncate -s0 file



4. Поиск дубликатов файлов на основании размера и MD5-хеша


1
find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate



5. Заменить пробелы в имени файлов на подчеркивания


1
2
3
4
5
#!/bin/bash
ls | while read -r FILE
do
mv -v "$FILE" `echo $FILE | tr ' ' '_' `
done



6. Конвертирование man-страницы в текстовый файл


1
man cp | col -b > /tmp/man-cp.txt


Замените cp на любую желаемую команду, man-страницу которой вы хотите посмотреть.

7. Список наиболее используемых команд из истории


1
history | awk '{print $2}' | sort | uniq -c | sort -rn | head



8. Выполнение команды без сохранения ее в истории


1
<пробел>command


Историю сохрания команд надо настроить, иначе не работает. Больше информации по ссылке.

9. Добавить часы к приглашению командной строки


1
export PS1="${PS1%\\\$*}"' \t \$ '



Результат будет выглядеть как-то так:
1
<ggarron> 16:13:14 $</ggarron>



10. Принудительная проверка файловой системы


1
sudo touch /forcefsck


или
1
sudo shutdown -rF now



11. Создание и монтирование RAM-диска


1
mount -t tmpfs tmpfs /mnt -o size=1024m


Эта команда создаст 1Gb диск в памяти, который можно использовать для быстрого доступа к файлам в нем. Главное - не забывайте, что это RAM-диск, и его содержимое будет удалено при перезагрузке.

12. Вызов команд из истории


Вы можете вызывать команды из истории по их номеру:
1
2
3
4
5
6
7
8
$ history
963 du -h
964 ls
965 df
966 htop
967 df -h
968 df -h
969 history



Затем используйте номер для вызова команды:
1
!963


или по первым буквам:
1
!df



Этот последний метод несколько опасен, так как вы не знаете, какие аргументы и опции команда будет использовать, поэтому вы можете приостановить команду. Это будет безопаснее:
1
!df:p


Это покажет команду, но не выполнит ее. Если она вас устраивает - удалите :p, и она запустится, но на этот раз вы будете знать, что вы делаете.

13. Подсчет строк и слов в документе


1
wc -l -w mytextfile.txt



14. Монтирование удаленной файловой системы через ssh


1
sshfs remote-user@remote.server:/remote/directory /mnt/remote-fs/


Дополнительная информация по ссылке.

15. Копирование своего публичного ssh ключа на сервер для доступа к нему без пароля


1
cat ~/.ssh/id_rsa.pub | ssh user@remote.machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"


Дополнительная информация по ссылке.

16. Генерация случайных паролей


1
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64


с 16 символами. Если вам нужно 8:
1
dd if=/dev/urandom bs=8 count=1 2>/dev/null | base64



17. Пост в твиттер из командной строки


1
curl --basic --user "user:pass" --data-ascii "status=Arriving the office" "http://twitter.com/statuses/update.json"



18. Замена слов с использованием sed


1
sed -i 's/OLD/NEW/g' FILE


Дополнительная информация по ссылке.

19. Список типов активных сетевых соединений и количество соответствующих соединений


1
netstat -ant | awk '{print $NF}' | grep -vE '<:upper:>'| sort | uniq -c | sort -rn



Вывод:
1
2
3
4
35 TIME_WAIT
27 ESTABLISHED
2 LISTEN
2 CLOSE_WAIT



20. Монтирование образа ISO


1
mount -t iso9660 -o loop file.iso /media/disk



21. Сброс настроек терминала, если ему "поплохело"


1
reset



22. Список процессов с установленными сетевыми соединениями


1
lsof -i -n | grep ESTABLISHED


Дополнительная информация по ссылке.

23. Резервное копирование диска или раздела


1
dd if=/dev/sda of=~/backup-disk-YY-MM-DD.img


Дополнительная информация по ссылке.

24. Запуск простого HTTP-сервера для расшаривания файлов


1
python -m SimpleHTTPServer



25. Смена раскладки клавиатуры на лету


1
setxkbmap -layout us



26. Чтение сжатого файла на лету, без разархивирования


1
zcat file.gz


(или
1
lesspipe file.gz

- прим. пер.)

27. Сохранение web-страницы как текста с помощью lynx


1
lynx -dump http://www.go2linux.org > $HOME/go2linux.txt



28. Определение типа файла


1
file *



29. Запуск команд, которые продолжают работу после закрытия сессии или терминала


1
nohup nice -n 4 <command> > output.txt &</command>


Дополнительная информация по ссылке.

30. Пересоздание меню fluxbox


1
fluxbox-generate_menu



Тэги: bash Linux скрипты
+ 17 -
Похожие Поделиться

exelens 16.12.2010 11:52 #
статья устарела =) или примеры не работают

exelens@exelens-P5K:~$ sudo aptitude purge '~c'
password for exelens:
sudo: aptitude: command not found

exelens@exelens-P5K:~$ sudo dpkg -l | awk '/^rc/ {print $2}' | xargs dpkg -P
dpkg: запрошенная операция требует привилегий суперпользователя

magist3r 16.12.2010 11:59 #
полагаю что aptitude не установлена. можно попробовать использовать apt.
exelens 16.12.2010 12:03 #
заметь и это в самом распространённом дистре 10,10 =)
kmarks 16.12.2010 19:11 #
Ну так они писали в чейнджлоге, что заменили его их навороченным Software Сентром.
pavel-g 16.12.2010 21:50 #
Вы не путаете aptitude с synaptic'ом?
Shtsh 16.12.2010 22:40 #
Синаптик же остался. Если и заменили на SC, то именно аптитуду
pavel-g 17.12.2010 05:45 #
Во-первых, SC уже была в 10.04 вместе с aptitude.
Во-вторых, SC графический, Synaptic графический, aptitude консольный.

имхо удаление aptitude не связано ни с synaptic'ом ни с software-center.
goblinyara 17.12.2010 21:02 #
они его выпилили из-за недостатка места на live-cd
Midler 18.12.2010 08:29 #
Экономим на спичках
kmarks 19.12.2010 17:09 #
Другое дело чем они освобождающееся место забивают.
Нужными ли вещами?
и Синаптик и Аптитуду, всё убрали. Оставили только Software Center.
Они его и разрабатывали как альтернативу ВСЕМ остальным автоматизированным средствам установки и чтобы оставить его одного в итоге. Что и сделали.
kmarks 19.12.2010 17:11 #
Synaptic однако ещё не убрали, но думаю уже в 11.04 очень возможно что уберут.
kmarks 19.12.2010 17:12 #
http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=synaptic+11.04
kmarks 19.12.2010 17:07 #
http://www.google.ru/search?aq=1&oq=ubuntu+10.10+aptitude&sourceid=chrome&ie=UTF-8&q=ubuntu+10.10+aptitude+command+not+found
blackraven 16.12.2010 12:09 #
Сколько мне память не изменяет, в 10.10 почему-то (по непонятным мне причинам) выпилили aptitude по умолчанию. Поэтому написано Debian, а не убубу.
Думаю, не проблема поставить aptitude обратно ;)
exelens 16.12.2010 12:11 #
да =) Проблемы нет.
thoughtful_fox 16.12.2010 13:12 #
Ррррр, меня это страшно раздражает. Ну вот что они наэкономили на выкидывании аптитюды? Наставишь виртуалок, а потом вечно одно и то же

mc, как нет MC???? ааа, ладно, sudo aptitude install mc, как нет аптитюда?? Рррр!!!! sudo apt-get install aptitude, sudo aptitude install mc, mc
orkaan 20.12.2010 10:32 #
Друзья, используйте Debian! ;-)
thoughtful_fox 20.12.2010 10:49 #
Хехе
Ну ежели честно, то я предпочитаю emerge -av app-misc/mc
^___^
kstep 16.12.2010 15:04 #
...xargs sudo dpkg -P
stasikos 16.12.2010 12:12 #
>> 15. Копирование своего публичного ssh ключа на сервер для доступа к нему без пароля

есть более простой способ
ssh-copy-id user@server
magist3r 16.12.2010 12:23 #
а еще есть scp. это ж линуксы, здесь одна и та же задача может иметь 100500 различных, но тем не менее правильных, решений.
stasikos 16.12.2010 12:26 #
scp это сделать затруднительно - он затрет файл authorized_keys на удаленной машине. :) Да и вообще, вы так говорите будто я умничаю не в тему. Хороший способ же.
magist3r 16.12.2010 12:39 #
я ж не имею ничего против. я просто копировал с помощью scp authorized_keys с одного сервака на другой, что весьма удобно.
kstep 16.12.2010 15:05 #
Только хотел сказать =)
thoughtful_fox 16.12.2010 13:28 #
history конечно хорошая команда, но Ctrl+r спасет мир быстрее. Правда, и для history тоже есть применение)
jh 16.12.2010 14:02 #
при резервном копировании для dd рекомендуют задавать параметр bs.
с значением по-умолчанию копирование может затянутся надолго.
kirpichtion 16.12.2010 14:41 #
Basic авторизация в твиттере не работает с начала сентября. Статья — полный раритет.
blackraven 16.12.2010 15:42 #
Напишите об этом автору.
lava 16.12.2010 14:45 #
Не критика, но комментарии.

cat ~/.ssh/id_rsa.pub | ssh user@remote.machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
mkdir -p не будет обламываться и ругаться, если каталог уже существует.

-=-=-=-=-=-=-=-=-=-=-=-=-=-

Генерация случайных паролей
кажется, что-то такое здесь уже проскальзывало. имхо, проще запомнить:
mktemp -u XXXXXXXX
хотя получится менее криптостойкий вариант ({8})

-=-=-=-=-=-=-=-=-=-=-=-=-=-

setxkbmap -layout us
У меня, кстати, такой скриптик прописан на r_c-r_s:
$ cat /usr/local/bin/xkbby
#!/bin/sh

exec >/dev/null 2>&1

CURRENT_LAYOUT=`setxkbmap -print | sed -r -n 's/^.*pc\+(<^+>{2})\+.*$/\1/p'`

case "${CURRENT_LAYOUT}" in
by)
setxkbmap -layout "us,ru"
;;
*)
setxkbmap -layout "by"
;;
esac

может, у кого лучше вариант есть?
kstep 16.12.2010 15:12 #
16 с генерацией паролей содержит ошибку. Там генерятся не пароли с 8 и 16 символами, а с 12 и 24. Учите матчасть! base64 представляет каждые 3 байта как 4, то есть информация в base64 вырастает в размерах примерно на треть. Примерно потому, что base64 ещё и выравнивает число выходных символов до числа, кратного 4 (добивает знаки равно в конец).
blackraven 16.12.2010 15:41 #
Можете сказать это автору. Ссылка на оригинал - вверху.
lava 16.12.2010 23:29 #
"мопед не мой, я просто разместил объяву"

Подожди-подожди. С какой целью ты запостил этот перевод? Распространить знание или просто запостить перевод?

Если распространить знание - то должен поддерживать перевод в актуальном состоянии в соответствии с советами присутствующих здесь - это же сообщество.
А если следовать твоей логике, то если я хочу предложить изменить, например, строку
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64
на, хотя бы "лобовую"
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64 | cut -b 1-16
то я должен:
1. Лично выйти на автора статьи, которую перевёл ты
2. Предложить ему замену
3. Отследить его ответ
4. Уведомить тебя, что надо поменять перевод

Не, ну мне, допустим, это не слишком сложно, но я думал, что если человек постит перевод на образовательном ресурсе, он хотя бы интерес к тому, что запостил, должен иметь, а не отвечать на рациональное замечание подобные глупости.
Dem0n3D 16.12.2010 19:05 #
по поводу 15: есть команда ssh-copy-id, которая специально для этого предназначена.
Dem0n3D 16.12.2010 19:06 #
извините, боян :(
Dark_SS 16.12.2010 20:11 #
9. Добавить часы к приглашению командной строки

export PS1="${PS1%\\\$*}"' \t \$ '


Результат будет выглядеть как-то так:
16:13:14 $

Очень заинтересовало, но у меня так не вышло:
<~> %export PS1="${PS1%\\\$*}"' \t \$ '<19:07>
<~> % \t \$

Может быть проблема в zsh?
Dark_SS 21.12.2010 00:40 #
Кто-нибудь может помочь?
orkaan 21.12.2010 22:29 #
Взгляните сюда, например.
alff31 17.12.2010 01:25 #
25. Смена раскладки клавиатуры на лету
setxkbmap -layout us

А как менять раскладку в голой консоли, если иксы не запущены? К двораку привык, а в обычной консоли раскладка us стоит.
philosoft 17.12.2010 07:05 #
loadkeys. Возможные раскладки смотреть в /usr/share/keymaps
rb 17.12.2010 01:43 #
5. rename 's/ /-/g' $FILE
короче же
cez 17.12.2010 03:22 #
3. Очистка содержимого файла

И снова - есть много вариантов это сделать:
:> file

truncate -s0 file

ещё можно так:
> file < cat
vkapas 17.12.2010 03:43 #
Хорошая заметка. По поводу "16. Генерация случайных паролей": как вариант, есть замечательный pwgen.
$ pwgen
eimeJ8ee ki7Ea5ai no9Aighi Aenaibo9 Cie6eiph ohph0eiN eaGu3uaL etexah3C
Ye3toiqu Cah2Acho OoG5chie Iem7weey ThahGh9U aepa1Eel ooS6We3M ojeih1Zo
ish5Ahch Is3eafah kohshoR3 Aesoo4Nu Ieyi7ki6 eiTai2oo daeKaJ2I Ao4ue9ie
fiet8She eenguZi1 Eebohj0u Ooxaeth3 Enu1taf4 gaifaiZ5 Shae8oGh dooB2lov
AhK1waic lorohGh7 ieCooLo0 pee1Ahyi oozeiy2X ewu6ahGh AiGh2soh ienu2Anu
ii4kie7O Egei6aew EiTh3alo JeiTid7r tow3Pech ui7thohK mahmi7Ae OhB7ool3
OMah4lee eu1eeFee hah6Uh4e Angu3map Noghi6La eiw8BahS AePo8eis Oojo3Ier
fizah5Ao Di3pahph Vo8wee0g du6Ahxoh Agoo7wau Ro8Phe9p nahJoi8i eezeeS1j
ohV3eiV6 dah9Puch et1aeg1H uG0oogh9 eiVei6ie ed3Edaig eiV2Uilu OoW2saed
peiSoo3M oob2Hahy shaequ3O yae4yooZ Iec8aeph OoXu9gib jaiQu6Ka Aijaequ6
quie1Ahv Aegahsh8 eiqu4aiM ocheex8N Kah0aiTi AefaeKe4 iP2Yaedu Axuz3aem
Goaki9ch Ohl6or5i pheuC7th jaituCh8 ieX8rew9 Awai4coh pieChai3 Daath9oh
igh2zeiX Eejaiv2t Hee3faer aete6ToL ohDee4so Xaroh0ah Jooy4bee ifi0yeiD
NeePu0ej OobuB2oh Aes2ZaeT Aeb6rie7 Ooyah2ko ti5yie7L Sah0aegh OoSh8hei
Shoxuew8 mahH7fei chahk4Ee Thaewei4 Thaecha2 ahNgohb4 Eegho8Gu cheeFa1e
eiD8Le7z Shex9gae Bi9Ahsit Roo9dang gi3Mee4X Phiv0cho eeLa5uik ieGai3ee
Naexohy7 ieno7Beu que9Cung chohm1Xo Mohf6aex ij5ohP8k eiPh5aek thohc5Ec
RaiShee0 Ceep7iul uGaeg4ku Eing1pie Eew7ozof nahyi7Hu phiu5Ohj aoghu1IP
shai7oaF Nai4tee4 ieS4ofew Heeh4Ho3 gaa5CueN iah6te6R zohsha7I Aez7peig
eiCa6nei au6Aid3a AinahS1t seuh4aiC phu2Wiey Ialai8Uj Iedutu7i oH8ohree
$ pwgen -y 12 6
Vaich>agh5ah phie8Lah&Hoh Maexool;oh2r Wath~ae4Aiw2 ieKoog{eec8h boov6Der%ah3
emfs 17.12.2010 14:32 #
в закладки