Si está tratando de iterar sobre archivos en un directorio, necesita glob el directorio así:
#!/bin/bash
List () {
for item in "${1}/"*
do
echo "$item"
done
}
Entonces llámalo como:
$ list ~
Alternativamente, si desea pasar varios archivos como argumentos, puede escribir su bucle for
así:
List () {
for item
do
echo "$item"
done
}
Que luego se puede llamar como:
$ list ~/*
¿Cuál es el problema con su función actual?:
Cuando lo llama con un glob, pasa cada archivo en el directorio como un argumento separado. Digamos que su directorio de inicio contiene file1
, file2
y file3
. Cuando llamas al list ~/*
, esencialmente estás llamando al:
list ~/file1 ~/file2 ~/file3
Luego, su ciclo for
solo se pasa al parámetro posicional 1, por lo que for item in ~/file1
y los otros parámetros posicionales no se usan.
También gracias Ilkkachu por señalar que también olvidaste un /
en tu hashbang, que me perdí por completo.
Нет "автоматического" распространения патчей. Ни для ядра Linux, ни для каких-либо других компонентов ОС, таких как библиотеки, программы и т. д.
Это происходит по ряду причин, которые в основном сводятся к этим:
Почти все дистрибутивы применяют свои собственные патчи к «официальным источникам» перед созданием бинарных пакетов. Это приводит к -нетривиальному объему работы по применению возможных официальных, неофициальных и -из -веток -исправлений безопасности и исправлений ошибок -. И некоторые из этих исправлений являются не просто исправлениями :, они могут быть необходимы для того, чтобы пакет соответствовал политикам распространения (, например добавление обязательных --help
или --long-help
и тому подобное ).
Время, когда эти «официальные исправления» попадают в дистрибутив, может сильно варьироваться в зависимости от ряда причин, таких как человеческие ресурсы, политика проверки исправлений и тому подобное.Иногда встречаются дистрибутивы, в которых не применяются некоторые исправления.
В таких дистрибутивах, как Ubuntu, есть политики «поддержки», которые могут замедлить и даже заблокировать любое обновление дистрибутива, когда он «устаревает». С другой стороны, скользящие дистрибутивы, как правило, не отстают от «официальных» патчей и новых выпусков.
Для получения общих обновлений об исправлениях, -исправлениях ошибок и способах обеспечения безопасности я хотел бы предложить вам такие веб-сайты, как Еженедельные новости Linux и Phoronix .
Тем не менее, ошибка, о которой вы сообщаете, ясно говорит о том, что какой-то ваш процесс все еще работает во время выключения системы. Я бы посоветовал вам запустить несколько тестов прямо перед завершением работы, просто чтобы узнать, какой процесс завис.
На мой взгляд, ps
— ваш друг, и вы можете запустить его прямо с виртуальной консоли vty (tty ).
PS_FORMAT='ruser,pid,ppid,s,%cpu,rss,cmd' ps x
(мой личный фаворит ). Он покажет вам весь процесс, запущенный как «you », а также некоторые детали. Замените ps x
на ps ax
, чтобы увидеть все процессы. PID
— идентификатор процесса, PPID
— идентификатор родительского процесса, идентификатор процесса, породившего этот процесс, CMD
— выполняемая команда.