Я просто назвал эту команду ls -l | tail +3
. Во-первых, ls-s, продолжает 3 линии, добавляя передающие по каналу полосы первая строка и затем печатает каждого имена файлов на отдельной строке. Как это делает это?Это не имеет смысла.
Кроме того, я думал, что дисплеи имени файла хвоста служат 10 строк. Как делает +
(и минус), играет в это уравнение?
То же самое о голове?Как это работает?
От tail
страница справочника:
Утилита хвоста отображает содержание файла или, по умолчанию, его стандартный вход, к стандартному выводу.
Дисплей начинается на уровне байта, строки или 512-байтового местоположения блока во входе. Числа, имеющие продвижение плюс (" + "), знак относительно начала входа, например, "-c +2" запускает дисплей на уровне второго байта входа. Числа, имеющие продвижение минус (" - "), знак или никакой явный знак относительно конца входа, например, "-n 2" отображает последние две строки входа. Значение по умолчанию стартовое местоположение является "-n 10" или последними 10 строками входа.
Таким образом в Вашем случае, tail +3
( -n
подразумевается), средства запускаются в 3-й строке входа (ls -l
) и распечатайте остальных. Например:
ls -l
вывод:
total 0
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file1
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file2
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file3
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file4
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file5
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file6
ls -l | tail +3
вывод:
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file2
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file3
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file4
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file5
-rw-r--r-- 1 carl staff 0 Oct 28 13:18 file6
Тот же вывод, только с этими первыми двумя неизолированными строками.
Из страницы справочника:
Если первый символ N (число байтов или строк) '+', печать, начинающаяся с Энного объекта от запуска каждого файла, другого - мудр, распечатайте последние объекты N в файле. N может иметь множитель suf-, зафиксируйте: b 512, k 1024, m 1024*1024.
Ответ:
Во-первых, ls-s, продолжает 3 линии, добавляя передающие по каналу полосы первая строка и затем печатает каждого имена файлов на отдельной строке. Как это делает это?Это не имеет смысла.
Ответ то, что ls
команды смотрят на его стандартный вывод и проверяют, подключен ли он к tty. Если это, то это форматирует в целях дисплея. Если это не (например, вывод является файлом или каналом), то это печатает одну запись на строку.
-C
'вызывает многостолбцовый вывод (как будто идя в терминал).-1
'вывод отдельного столбца сил (как будто идя в канал).