Pull to refresh

Comments 149

Спасибо, было интересно!

Узнал про script, буду пробовать. Раньше бы сделал скриншот или фотку :)

Заметка про замену табов\пробелов — для этого есть специальные тулзы. Но можно и через универсальный tr, как у вас.

expand - convert tabs to spaces

unexpand - convert spaces to tabs
Возможно, вам будет интересно: showterm.io, как ещё более «живая» альтернатива к script

Ещё asciinema.org, примерно аналог.

Заметка про замену табов\пробелов — для этого есть специальные тулзы. Но можно и через универсальный tr,

в отличие от expand и unexpand, tr заменит 8 идущих подряд пробелов на 8 табов.
Я обычно копирую ~/.bash_history. При необходимости удалить за собой следы работы — history -cw.
>nohup wget site.com/file.zip
>Пожалуй, эта команда – одна из тех, о которой забывают чаще всего,

… потому что пользуются screen.

… потому что есть wget -b :)
А вообще же
$ ping -c 5 google.com > out.txt 2>&1 &

Не-а. Это не спасёт от получения SIGHUP при отключении. Попробуйте сделать ssh localhost, запустить эту команду, а потом нажать ~. для разрыва ssh-сессии.

Ага, nohup как раз и предназначена для игнорирования SIGHUP, просто я обычно закрываю сессию через EOF (Ctrl-d).

А disown в такой ситуации не поможет? Что-то вроде "запустил с амперсандом, сказал disown, закрыл окно". Правда, stdout/stderr процесса всё равно будут идти в консоль, пока не закроешь.

Поэтому аналогом nohup на чистом шеле является такая конструкция: script.sh >&- 2> stderr.log <&- & disown. Такая команда закроет stdin и stdout, перенаправит stderr в файл лога, отправит задачу в фон и отсоединит от шела.

Мне для фонового выполнения терминальной программы больше нравится screen
UFO just landed and posted this here
UFO just landed and posted this here

Неплохой пример антипаттерна "useless cat" (кстати, к большинству команд в статье тоже относится). Короче и, в некоторых случаях, оптимальнее (например cat не позволяет командам использовать random access) писать так:


awk '{ print $1 }' /var/log/nginx/access.log

или так:


< /var/log/nginx/access.log awk '{ print $1 }' 

Я не знаю, с какой радости это «антипаттерн». По производительности вы выиграете крохи, seek большинству программ, которые применяются в таких однострочниках нафиг не нужен, зато есть плюсы: можно быстро поменять cat на что‐то ещё, можно быстро поменять команду на что‐то ещё (обычно, конечно, меняется команда, а не cat), можно использовать с tr и файл явно визуально отделён от команды с помощью |. И ещё, команда нифига не знает, что это за файл, поэтому, к примеру, less не будет умничать и отображать не то, что я прошу (поведение less можно где‐то настроить, но, во‐первых, я не знаю, где, а, во‐вторых, зачем настраивать на всех машинах less, если можно просто писать cat file | less?).

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


#немножко тестовых строк (возможно, можно сделать это лучше, но мне ничего другое в голову не пришло) файл занял 200Мб
pwgen -1 20 10000000 > test.txt
time bash -c 'cat test.txt | sort > /dev/null' 
# bash -c 'cat test.txt | sort > /dev/null'  51.26s user 1.05s system 99% cpu 52.354 total
time bash -c 'sort test.txt > /dev/null' 
# bash -c 'sort test.txt > /dev/null'  68.08s user 1.25s system 289% cpu 23.958 total
time bash -c 'cat test.txt | sort | uniq > /dev/null'
# bash -c 'cat test.txt | sort | uniq > /dev/null'  60.09s user 1.44s system 110% cpu 55.621 total
time bash -c 'sort -u test.txt > /dev/null'
# bash -c 'sort -u test.txt > /dev/null'  71.58s user 1.18s system 269% cpu 26.964 total

Разница в 2 раза и неполное использование ядер процессора. Если мой бенчмарк неверен, то скажите пожалуйста где.

можно быстро поменять cat на что‐то ещё
Just FYI, в варианте с файлом-аргументом тоже можно легко поменять:
awk '{ print $1 }' <(mutley do something)
Не в коем случае не для спора, а в качестве дополнения:
Очень часто использовал именно построение с «cat» при работе с большим числом логов, часть из которых уже заархивированна, а часть — ещё нет. Приходится лишь дописывать z, чтобы получить zcat:
cat log.log | awk '{ print $1 }' 

zcat log.log.gz| awk '{ print $1 }' 

zcat -f log.log | awk '{ print $1 }'
Для сортировки процессов по разным параметрам удобней использовать htop.

Сам ps поддерживает сортировки: ps auxk +%mem,+%cpu

Одновременный просмотр нескольких лог-файлов

Вполне можно сделать
tail -f file1 file2

Строчки будут появляться на экране по мере записи в файл. Не очень удобно, тем что они «перемешиваются», но в один лог падает много, а в другой мало (например access и error логи, в error очень редко что-то попадает), то вполне приемлемо.
Или lnav (требует установки), но полноценная программа для парсинга логов.
а еще tail -f можно заменить на tailf — это отдельный бинарь, который умеет тоже самое.
проще прописать в .bashrc алиасы вместо отдельного бинарника
alias tailf='tail -f'

по мимо этого я еще использую такие:
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# git
alias gl='git log'
если вы внимательно посмотрите на debian-подобные дистрибутивы последних как минимум 3-х лет, то вы увидите что этот бинарь УЖЕ есть в вашей системе.

У меня Gentoo, там и в man tailf, и в tailf --help явно написано, что оно “deprecated” и “may have unfixed bugs and will be removed from util-linux in March 2017”. Так что не уже есть, а ещё есть, если только в debian не будут зачем‐то поддерживать эту программу своими силами. Напомнить, какой месяц сейчас? Конечно, когда это изменение окажется в последней стабильной версии будет уже не март, но всё равно лучше написать alias.

ifconfig тоже deprecated, однако даже в манах от известных IT компаний до сих пор он упоминается. Бинарь до сих пор присутствует в системе и ничего. Работает. И если уж настройку сети люди выполняют с помощью deprecated-средств, то уж извините, простую задачу по выводу на лету информации из файла я могу доверить и tailf. тем более за все годы я не замечал за ним какой либо нестабильной работы.
По по-воду «еще» и «уже», окей, не знал. тем не менее не вижу причин не использовать эту утилиту.

ifconfig пока не удаляют. И в man ifconfig слов «deprecated» или «obsolete» у меня нет. В интернете можно найти man ifconfig, где говорят про «obsolete», но заявлений вида «ifconfig будет удалён {дата}» нет и там.

tail, кстати, умеет вещи вроде «завершись, когда процесс с PID умрёт», «пробуй читать файл, даже если он удалён», «переоткрой файл, если его размер не изменился за N итераций», «читай файл каждые N секунд». Ничего из этого tailf не умеет, а единственный ключ (кроме версии и помощи) -n/--lines/-{number} совместим с tail (версия и помощь, правда, не совместимы: tail не поддерживает короткие варианты -V и -h). Ну и в чём смысл использовать tailf вместо aliasа?

отвечу как владелец айфона, загнанный в угол: «а мне этот функционал и не нужен» =)
Установить эту утилиту, если вы её у себя не найдёте, можно командой apt-get install multitail.

linux != debian
find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz

Чтобы xargs'у не снесло крышу, необходимо поменять -print на -print0 и добавить -0 после xargs. Тогда файлы с пробелами в названии будут интерпритироваться как один файл, а не несколько.

И ещё хорошо бы закавычить *.png, иначе команда find будет вести себя неожиданно, если в текущей папке есть хотя бы один .png-файл.

А чтобы поменьше забывать о таких нюансах хорошо бы использовать setopt NOMATCH (zsh) / shopt -s failglob (bash) в интерактивной оболочке. Тогда вы получите либо ошибку, либо имена файлов, но вряд ли получите *.png (если только у вас нет файла с таким именем, что крайне маловероятно).

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

UFO just landed and posted this here
Видимо yes и no более универсальна и позволяет отвечать на вопросы в командах, где нет параметров для «автоответов». На мой взгляд может быть удобно.
если когда-то набирал команду, но не очень помнишь детали или синтаксис (например как установить vpn соединение), то
history | grep openconn
В bash можно Ctrl+R и начать набирать openconn — последняя подходящая команда из истории отобразится.

А если еще раз Ctrl+R, предпоследняя и т.д.

А если установить hh — то по Ctrl+R еще круче штука запустится :)
add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hh
лучше history | grep [o]penconn — и в результатах не будет этого последнего грепа.

Вместо


while true
do
ping -c 1 google.com >/dev/nill 2>&1 && break
done ;

В современных версиях bash-а можно написать просто:


while ! ping -c1 google.com &>/dev/null; do done

И даже можно использовать "until" вместо "while !".

В dash (и, наверное, в несовременных версиях bash) это запишется как until command ; do :; done. В zsh, кстати, можно сократить до until {command} {}, если фигурные скобки вам нравятся больше, чем do/done.

А если команда может выполняться моментально, то внутри do/done не помешает sleep 1.

Файлы быстрее создавать через fallocate (особенно актуально для больших, типа свопа):


fallocate -l 10M out.txt
fallocate работает только на файловых системах, поддерживающих разреженные (sparse) файлы. Лучше использовать truncate. Судя по его поведению, он создаёт разреженный файл там, где это возможно, и заполняет нулями там, где нет.

truncate -s 10M out.txt


cat /etc/passwd | column -t –s:

После -s нужно пробел поставить.

Может быть. У меня в последнем Debian'e без пробела не получилось, пишет:


column: –s:: No such file or directory

И при чём тут пробел? Замените короткое тирэ на дефисоминус. Или возьмите работающую команду и удалите пробел там: раз она работает, то вы её перепечатали, а не скопировали.

Проблема не в пробеле, а в том, что хабр заменил символ чёрточки. Введите -s вручную и всё будет ок.
У меня на
mount | column –t

матерится:
column: –t: Нет такого файла или каталога
хабр или браузер заменяют «обычный минус» на длинный. Наберите "-t" на клавиатуре, а не скопируйте — и все будет работать.
Спасибо.
Вот что с людьми лень делает.

«Обычный минус» называется «дефисоминус» (U+002D HYPHEN-MINUS). А замена в комментарии не «длинный минус», а «короткое тирэ» (U+2013 EN DASH). Минус в юникоде тоже есть, и даже не один. По «чёрточкам» на хабре есть статья: https://habrahabr.ru/post/20588/.


Кстати, именно «длинного минуса» я в юникоде как‐то не вижу. Есть тяжёлый.

Ещё одна проблема с column — он не умеет учитывать ANSI escape sequence, поэтому есть вывод mount расцвечивается чем-нить вроде grc то фактически
mount | column -t
превращается в
grc /bin/mount | column -t
и колонки ломаются. Починить можно изменив порядок, но это набирать уже не очень удобно:
/bin/mount | column -t | grcat conf.mount

top интерактивный. Нажмите "?" для справки, там много полезного.

Командой «git checkout -» можно переключаться туда-сюда между двумя последними ветками, как и в cd.
script ещё полезен для запуска screen внутри себя. Бывает так, что злобный тюремщик не оставляет тебе доступа даже к /dev/tty. screen без свободных tty запускаться не согласен — script может создать для него в юзерспейсе.
UFO just landed and posted this here
а у вас при создании новой вкладки в guake переименовываются все оставшиеся на дефолтные значения? ибо у меня именно так и происходит и это жутко бесит. хотя кроме guake я ничего не признаю больше)
UFO just landed and posted this here
самая удобная фича, которая мне нужна у guake — возможность выпадения консоли в верхней части экрана по хот кею, с настройкой прозрачности. что позволяет удобно пролистывать маны (сквозь терминал, если нужно), разворачивая полностью, частично или вовсе скрывая консоль.
UFO just landed and posted this here
я пользовался terminator, мне он не очень понравился. Про второй эмулятор не слышал, обязательно посмотрю, спасибо. Правда его к сожалению нет в jessie.
Вместо nohup ещё можно воспользоваться командой disown.
cat myfile | tr a-z A-Z > output.txt

cat myfile | tr "[:lower:]" "[:upper:]" > output.txt
В каком случае apt update может понадобиться yes? Он же вроде вопросов не задает, другое дело apt install/remove.

image

Если мне хочется, чтобы что-нибудь выполнялось после закрытия консоли, я обычно запускаю в фоне (& на конце). Что позволяет nohup/script, чего не даёт просто фоновый режим?

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

этого не достаточно.
По идее перед закрытием консоли еще нужно выполнить: disown -h

Как ни странно, с учетом, что все примеры хорошо знакомы, самым неожиданным и приятным открытием стало узнавание про таблицификацию вывода… Очень круто, спасибо!

Где приемлемо подождать, лучше вместо


while true

использовать


while sleep 1

Когда-нибудь вспомните хорошим словом.

подобный пример без разъяснения ничего не стоит.
Успеете нажать Ctrl+C прежде чем вас выкинет из ssh сессии

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


См. man 1 xargs
--max-chars=max-chars
-s max-chars


romanegunkov@re-host0:~/1-tmp/2/22$ seq -f filename%g.png 1 20000 | xargs echo tar -cvzf ALL.tar.gz | grep -o -e 'tar.\{60\}'
tar -cvzf ALL.tar.gz filename1.png filename2.png filename3.png 
tar -cvzf ALL.tar.gz filename7774.png filename7775.png filename
tar -cvzf ALL.tar.gz filename15178.png filename15179.png filena
romanegunkov@re-host0:~/1-tmp/2/22$ 
nohup wget site.com/file.zip

Можно ведь просто поставить "&" после команды?
wget site.com/file.zip &

отправить задачу в бэкграунд и отцепить ее от tty (что и делает nohup) — 2 разные вещи

Для создания файла определённого размера иногда всё же лучше не копировать нули, а сделать seek. Это и быстрее, и экономит ресурс ssd (если файл создаётся там). Правда, при этом для создания файла точно заданного размера придётся заняться арифметикой (чтобы скипнуть на нужный размер без единицы, а потом дописать 1 байт). Но и это можно упростить, если писать не байт, а удобное количество нулей, чтоб мозг не напрягать (например, для 100М файла не bs=1 count=1 seek=104857599, что трудно считать или помнить, а bs=1k count=1 seek=102399, что уже тривиально)


Другое дело, если нужно не просто создать файл, а именно выделить (зарезервировать) место. Там да, придётся честно писать все нули.

#Последний аргумент предыдущей команды 
$_
#Удобно создавать директорую и переходить в неё
mkdir /var/www/project && $_
UFO just landed and posted this here
Точно так же работает +<.> при вводе с клавиатуры.
UFO just landed and posted this here

Статья для совсем новичков. Помню, раньше во всяких TLDP, LinuxJournal, LWN.net и т.д. печататлись статьи о совершенно зубодробительных командах и их комбинациях, типа, как передать бэкап каталога по ssh при помощи tar и т.п.


В примере с пингом google лучше вставить sleep 30s или еще больше: к чему мучить несчастные сервера непрерывным пингом… Один хост погоды не сделает, но если все начнут писать подобные скрипты, то начнется DDOS. Особенно когда какой-нибудь китайский или филиппинский недоучка прочитает подобную статью и впендюрит подобный скрипт в прошивку недорогого, но распространенного роутера.

Статья для совсем новичков. Помню, раньше во всяких TLDP, LinuxJournal, LWN.net и т.д. печататлись статьи о совершенно зубодробительных командах и их комбинациях, типа, как передать бэкап каталога по ssh при помощи tar и т.п.

Что зубодробительного в tar c files | ssh user@host 'tar x -C /dest/dir/'? И местами ощутимо лучше и приятнее scp (в смысле preserve атрибутов, если на второй стороне root.


В примере с пингом google лучше вставить sleep 30s или еще больше: к чему мучить несчастные сервера непрерывным пингом… Один хост погоды не сделает, но если все начнут писать подобные скрипты, то начнется DDOS.

До DDOS'а там ещё далеко, icmp довольно дешевый. Куда удобнее tcp syn flood, он хоть разумную амплификацию даёт. Для непрерывного ping'а есть ключ -f, который означает flood ping и без задержки минимум в 0.2с не доступен непривилегированному пользователю.

DDOS начнется, когда десятки тысяч людей начнут использовать это в своих скриптах. Да и просто с дидактической точки зрения стоит объяснить, почему плохо, когда в примере в скрипте нет никакой задержки. Получается нерациональное решение, которое раз 5 в секунду запускает ping зря поедая ресурсы компьютера и сети.


По поводу сложности, в статье изложены самые азы работы с командной строкой, впрочем, даже из азов изложены не все. Таких статей в сети 100500 миллионов, каждый блоггер отмечается на этой ниве. «А вы знаете, что в командой строке Ctrl-A переходит в начало строки?»


Хотелось бы более изощренных примеров, в статье с таким заголовком, вот и все.

то начнется DDOS

DDOS начнется


Не начнётся.
но ведь автор просто привел пример «полезной нагрузки» для используемой комбинации. в том то и соль что если вы не новичок, то вы просто оцениваете конструкцию и уж её применяете под свои задачи, используя другие команды вместо пинга и регулируя время между их запусками с помощью sleep.
И местами ощутимо лучше и приятнее scp (в смысле preserve атрибутов, если на второй стороне root.

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

Недавно для себя открыл фигурные строки в linux. Удобно создавать сразу много каталогов. Или применять параметры для многих каталогов.
Например нам нужна такая структура:
/var/lib/project1/test
/var/lib/project2/test

Создать эти каталоги можно одной командой:
mkdir -p /var/lib/{project1,project2}/test
Немного короче:
mkdir -p /var/lib/project{1..10}/test

Ещё удобно переименовывать или копировать файлы в пределах одной директории.
mv /long/path/to/file.txt{,.orig}
Пропинговать и получить ответ от всех хостов в сети.
echo 192.168.1.{1..254}|xargs -n1 -P0 ping -c1|grep «bytes from»

nmap -sn 192.168.1.0/24, зачем эти извращения?

К сожалению, не всегда имеется доступ к мировой паутине. Иногда он и вовсе запрещен.
# nmap
bash: nmap: команда не найдена
Съемный носитель с тулзами тоже не панацея. Его можно банально потерять/сломать/забыть.
echo, xargs, ping, grep — стандартные программы с большой вероятностью присутствующие в ОС.

Если вы говорите про prod с отсутствием доступа к интернету и внутреннему зеркалу, то никто не мешает поставить нужное барахло в базовом образе/kickstart'е при установке и т. п.


find/xargs (findutils) тоже могут отсутствовать, например. Всё зависит от того, что за базовый образ. То может быть мы вообще в контейнере с одним статическим бинарником, собранным против musl.

Иногда помогает заглянуть в busybox, если он есть. busybox --help покажет что встроено. Например, нужен uuencoode, в на системе нет.


romanegunkov@re-host0:~$ echo Hello | uuencode -m -
-bash: uuencode: command not found
romanegunkov@re-host0:~$ echo Hello | busybox uuencode -m -
begin-base64 644 -
SGVsbG8K
====
romanegunkov@re-host0:~$ 
Жесть, глазами Виндузятника бОльшая часть написанного здесь читается сложнее корейский иероглифов, тем не менее иногда сталкивался с различными проявлениями юникс систем на декстопных тачках, как то даже вторую систему дома ставил (не пошла, знаний не хватило освоить даже на уровне юниора).
Но… прочел с удовольствием, проснулось желание повторить попытку знакомства. Пользуясь случаем поинтересуюсь у гуру данной платформы, с чего лучше начать почти новичку в данной области. Много читал про Debian, но тем не менее по обзорам и функционалу привлекает Arch Linux — не будет ли он слишком сложен в освоении? Какие еще варианты можете предложить?

Я начинал с Ubuntu, потом прямо из неё ставил Gentoo. По‐моему, с неё всегда проще всего начинать.

Вот Ubuntu то и пробовал когда-то, v10 или v12 дистриб. Поставить и немного настроить проблем не вызвало (гугл помог), даже какой то типовой софт поставил через apt-get install, не помню уже на чем запнулся и забил…

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


Для обучения лучше берите kubuntu/ubuntu, ставиться за 10-20 минут, почти никакого геморроя. Желательно перед установкой убедиться, что всё железо на машинке адекватное, то, опять же, намучаетесь.


Лучше поставить в виртуалку, сделать базовый образ и после этого ломать систему разными способами и пытаться восстановиться. Всякие стандартные вещи типа опечатка в /etc/fstab, полностью забитый диск, смонтированный на /, неудачно снесенное ядро и т. п.


А потом можно уже спокойно брать Arch или Gentoo. Кстати, при работе и настройке вне зависимости от дистрибутива в вики арча и генты можно найти ответы на многие вопросы.

Есть тестовая машинка, физическая: Камень Intel 2030 на 2.4 Hz, мать Асусовая из бюджетных, хард 200gb с копейками. Не люблю виртуалками баловаться на основной домашней машинке, «хвостов» куча остается или руки из зад кривые, был период когда на виртуалке Андроид десктопный тестировал (банально ради интереса, поковырять внутрянку без залоченности телефона), пару раз «окошки» переустанавливал, постоянно где то кучи файлов забивались на диске, в реестре много всего понаписалось. Поэтому собрал средненький комп для тестов всего нового, непроверенного и заведомо опасного. Так сказать физическая виртуалка ))
UFO just landed and posted this here

Рекомендую arch. Если бы начинал с него, знакомство с Linux было бы на порядок продуктивнее. Ещё ставь zsh, oh-my-zsh.

А хочется десктоп то antergos. Это тоже arch, но красивый с установщиком. После кучи маков пересел.

Сначала возьмите Debian или что-то популярное на на его основе Mint/Ubuntu, чем больше сообщество и документации, тем вам проще будет искать ответы на поисковиках. Когда освоитесь, этот момент можно определить как — вспомнил что ещё осталась винда на компе, надо бы снести, поработайте с CentOS, основан на Red Hat и опыт пригодится в работе. А потом можете пробовать что угодно, хоть Arch хоть Gentoo.

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

7 марта 2017 в 11:12


Слишком жирно.

гуру данной платформы, с чего лучше начать почти новичку
Уважаемый, где жирноту узрели?
Вместо nohup можно использовать at now (или at на конкретное время)
Просто оставлю это здесь :-)

Джоршуа Леви «Искусство коммандной строки»

https://github.com/jlevy/the-art-of-command-line/blob/master/README-ru.md

cat /etc/passwd | column -t –s:

column -t –s: < /etc/passwd


cat myfile | tr a-z A-Z > output.txt

tr a-z A-Z > output.txt < myfile


sudo !!

меж тем "!!" это повтор последней команды в любом контексте, sudo тут ни при чём.

!! — это ни разу ни повтор какой‐либо команды. Это history expansion: подстановка из истории. Ничто не мешает вам написать for arg in !! ; do echo $arg ; done: найдите здесь «повтор последней команды». !! при этом не единственный вариант: можно и взять предыдущую строку, соответствующую регулярному выражению, оставить от неё второе слово (оно же обычно первый аргумент) и заменить в этом слове x на y: !?regex?:1:s/x/y/.


В любом случае, подстановка из истории оперирует не с командами, а со строками: «первым аргументом» в примере вполне может оказаться и |, a ́sudo может заполучить while и, разумеется, не знать, что с ним делать (это часть синтаксиса оболочки и ни разу не команда, даже не shell builtin).

Алиас для более семантичного выполнения последней команды под рутом:

alias please='sudo $(fc -ln -1)'
Как относитесь к обучению основ в игровом виде?
Вчера нашел игрушку Hacknet
рандомный скрин игрового интерфейса с просторов ынтерета
image

основанную на псевдо-взломах при помощи Терминала и набора команд (по заявлениям разработчиков — все команды рабочие и используются в реальной жизни для решения тех или иных задач)
По крайней мере после нескольких тренеровочных заданий из комментов узнал команду «cat».
Пока интересно.
Может кто то сталкивался с этим проектом, стоит ли продолжать или не заниматься ерундой, так как ничего толкового там нет (хотя основы все таки какие то закладываются)?
PS: пост не преследует целей прорекламировать что либо, крайне надеюсь что не нарушает (косвенно) правил ресурса и не вызовет агрессивной реакции участников сообщества.
PSS: обход защиты реальных сетевых объектов преследуется по закону (странно как игрострой вообще пропустил проект, ну да ладно)
После выхода из сессии протокол будет записан в файл typescript.

Макрософт уже в суд подавал?
а как послать в ребут после отработки команды. конкретно мне надо что бы после yum update -y комп перезагружался
А что мешает так и написать? yum upate -y && reboot
Стандартный способ объединять последовательно несколько команд пока они успешно выполняются — через &&.
Хотите продолжить цепочку даже в случае ошибки — замените && на ;.
Когда-то я не знал, как в фильмах так быстро набирают в консоли всякие хакерские слова.
С помощью Tab-а дополнять набирающее стало намного проще.
В чём отличие cd -. от cd…?
cd- «предидущая директория» — та в которой вы были ранее. cd… — подняться на папку выше.
Пример:
Вы были в /home/user/folder5/, потом попали в директорию к примеру — /usr/lib/. если наберёте команду cd- то сразу вернётесь из /usr/lib/ в /home/user/folder5/. В случае же если вы из /usr/lib/ наюерёте cd… то попадетё всего лишь в /usr/
Ну раз уж утилиту (команды это не что иное как скрипты либо утилиты/программы)
du
никто не упомянул то пожалуй это сделаю я. du -sh к примеру выводит размеры папок либо даже отдельных файлов. К примеру если запустить эту команду:
sudo du -sh /

Мы получим что то типа:
4.9G    /


А вот если добавить * сразу после дроби (sudo du -sh /*) то вывод будет ещё интереснее:
7.4M    /bin
21M     /boot
0          /dev
6.9M    /etc
12M     /home
148M    /lib
16K     /lost+found
20K     /man
4.0K    /media
4.0K     /mnt
797M   /opt
0           /proc
28K      /root
6.5M    /run
7.0M    /sbin
4.0K     /srv
0           /sys
52K      /tmp
3.6G     /usr
362M    /var



При поиске мусора захлямляющего диск для меня это порой единственный весомый иснтрумент.
Ну и заодно du -sh * |sort -h, чтобы сразу отсортировать корректно
Правда -h в sort'е появился относительно недавно.
Я бы использовал #du -sm, Он на большинстве версий *nix работает одинаково. Только HP-UX отличается. Зато даже на AIX показывает в мегабайтах.
UFO just landed and posted this here
Спасибо, man bash до этого места я не дочитал ;)
Статья безусловно полезная.
Но помню своё удивление, когда я впервые начал изучать командную строку *nix систем: нужно помнить много заклинаний. Нельзя просто логически найти или вывести по какой-то закономерности название нужной команды, нужно просто про неё знать. Было бы круто сделать какой-то автоподсказчик, где ты постепенно углубляясь по некоторой логической структуре, в итоге находишь нужную команду и получаешь основную информацию о том, как её использовать.
man — это не то, т.к. это просто набор гипертекстовых документов, которые надо прочесть целиком в больших количествах, чтобы понять, что вообще происходит, а потом, опять же, помнить все заклинания наизусть. Что и я делал, когда изучал систему самостоятельно.
UFO just landed and posted this here
Sign up to leave a comment.