Как я могу сохранить каждую отдельную всю строку в текстовом файле в массив?

Если вы можете sftp, вы не можете запустить ssh? Если да, то такая команда, как:

 ssh user@hostname rm file1 file2 

, должна работать нормально. При использовании общих/частных ключей SSH запрос пароля не выводится.

-121--35504-

Ограничение 1 GiB для памяти ядра Linux в 32-разрядной системе является следствием 32-разрядной адресации, и это довольно жесткое ограничение. Это не невозможно изменить, но это там по очень уважительной причине; изменение имеет последствия.

Давайте вернемся к началу 1990-х годов, когда создавалась Linux. В этих днях у нас были бы аргументы о том, может ли Linux быть создан для запуска в 2 MiB оперативной памяти или если бы он действительно нуждался в 4 целой MiB . Конечно, высококлассные снобы все шарахались над нами, с их 16 серверами-монстрами MiB.

Какое отношение эта забавная маленькая виньетка имеет к чему-либо? В этом мире легко принимать решения о том, как разделить 4 GiB адресное пространство вы получаете от простой 32-битной адресации. Некоторые OSes просто разделили его пополам, рассматривая верхний бит адреса как «флаг ядра»: адреса 0 к 2 31 -1 имели очищенный верхний бит, и были для кода пространства пользователя, а адреса 2 31 от 2 32 -1 имели верхний бит набора, и были для ядра. Вы можете просто посмотреть на адрес и сказать: 0x80000000 и выше, это kernel-space, иначе это user-space.

По мере того, как размеры памяти ПК приближались к пределу памяти 4 GiB, это простое разделение 2/2 начинало становиться проблемой. Пространство пользователя и пространство ядра имели хорошие претензии к большому количеству оперативной памяти, но поскольку наша цель в наличии компьютера, как правило, состоит в том, чтобы запускать пользовательские программы, а не ядра, OSES начали играть с разделением пользователя/ядра. Разделение 3/1 является общим компромиссом.

Что касается вашего вопроса о физическом или виртуальном, на самом деле это не имеет значения. Технически, это ограничение виртуальной памяти, но это только потому, что Linux является OS. на базе виртуальной машины Установка 32 GiB физической оперативной памяти ничего не изменит, и это не поможет swapon раздел 32 GiB swap. Независимо от того, что вы делаете, 32-разрядное ядро Linux никогда не сможет одновременно обращаться к более чем 4 GiB.

(Да, я знаю о PAE . Теперь, когда 64-битные OSES наконец-то захватили власть, я надеюсь, мы сможем начать забывать о том неприятном взломе. Я не верю, что это может помочь вам в этом случае в любом случае.)

Суть в том, что если вы сталкиваетесь с пределом виртуальной машины ядра 1 GiB, вы можете перестроить ядро с разделением 2/2, но это напрямую влияет на пользовательские космические программы.

64-разрядная версия действительно является правильным ответом.

-121--34400-

Вы обеспечили его включение? Если репо не включено, оно не появится в реполисте . Проверьте файлы в /etc/yum.repos.d/* .repo .

Например:

[root@xxx01 ~]# yum repolist 2>&1 | grep epel
epel                                      EPEL Repo                       11,148

Показывает, что EPEL установлен и указан в списке repolist , поэтому я собираюсь отключить его и снова проверить repolist :

[root@xxx01 ~]# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo
[root@xxx01 ~]# yum repolist 2>&1 | grep epel
[root@xxx01 ~]#

EDIT:

Также можно временно включить репо с помощью опции --enablerepo , которая переопределяет настройку enabled в конфигурации репо.

0
13.08.2018, 14:00
2 ответа

Разделение производится с помощью IFS в качестве разделителя (который по умолчанию содержит пробел, новую строку и закладку). Установите IFS только на newline:

$ IFS=$'\n' a=($(printf "1 2\n2 3\n"))
$ echo ${a[0]}
1 2
$ echo ${a[1]}
2 3

Это изменит IFS для оболочки, так что лучше сохраните его перед этим и восстановите:

OLD_IFS="$IFS"
IFS=$'\n' array=($(grep '^#' threewords | cut -c2-))
IFS="$OLD_IFS"

И нет абсолютно никаких причин делать:

cat threewords | grep '^#'

grep прекрасно умеет читать файлы:

grep '^#' threewords

Как отмечает Стефан, при дальнейшем расширении оболочки, при выводе команды следует отключить глобус, используя набор -f:

$ help set 
...
      -f  Disable file name generation (globbing).

Иначе:

$ cd /; a=( $(printf "*\n") )
$ echo ${a[@]}
bin boot cdrom dev etc home ...
2
28.01.2020, 02:20

Если у вас bash 4

mapfile -t array < <(grep ^# threewords | cut -c2-)

будет заполнять массив, по одной строке на элемент

printf "%s\n" "${array[@]}"
gray speedy bee
gray greedy pea
2
28.01.2020, 02:20

Теги

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