A )Создайте список разделов с помощьюlsblk -o NAME,FSTYPE,LABEL,SIZE,MOUNTPOINT
B )Размонтируйте раздел с помощью umount /xyz -l
, где /xyz — раздел, который нужно изменить. Если вы хотите переименовать загрузочный раздел, загрузитесь с LiveUSB. Процесс создания LiveUSB зависит от вашего дистрибутива, но вот процесс для Windows и Ubuntu .
C )Запустите gparted и выполните Choose: Partition
, затем выберите /xyz и выберите Name Partition
, который отобразит «Установить имя раздела» в диалоговом окне раздела /path -— -.
D )Введите имя, которое хотите использовать, затем примените изменение.
E )Перемонтируйте раздел с помощью /mount /newname -l
.
Сделайте так, чтобы первая строка вызывала интерпретатор оболочки, а не awk, как в
#!/usr/bin/env bash
Здесь есть две проблемы. Во-первых, если вы хотите написать скрипт awk
, вам нужно использовать -f
в шебанге, поскольку для awk
требуется файл, и использование этого является обходным путем, позволяющим использовать awk
для содержимого скрипта.. См.man awk
:
-f progfile
Specify the pathname of the file progfile containing an awk
program. A pathname of '-' shall denote the standard input.
If multiple instances of this option are specified, the con‐
catenation of the files specified as progfile in the order
specified shall be the awk program. The awk program can al‐
ternatively be specified in the command line as a single ar‐
gument.
Итак, чтобы использовать awk
в качестве переводчика в шебанге, вам нужно это:
#!/bin/awk -f
BEGIN{print "hello world!"}
У вас есть сценарий оболочки, который вызывает awk
, поэтому вам нужен шебанг оболочки:
#!/bin/sh
awk 'BEGIN{ print "Hello world!"}'
Следующая проблема заключается в том, что в вашей переменной есть пробел, но вы используете переменную без кавычек. Всегда указывайте переменные в сценариях оболочки! Вы хотели вот этого:
userinput='Hello World!'
userinput="$userinput" awk '...
Вот рабочая версия вашего первого (скрипта оболочки ):
#!/bin/sh
userinput='Hello World!'
userinput="$userinput" awk '
BEGIN {
s = ENVIRON["userinput"] "\n"
n = length(s)
while (1)
printf "%s", substr(s,int(1+rand()*n),1)
}'
Обратите внимание, что ваш while (1)
означает, что скрипт никогда не завершится, то есть бесконечный цикл.
А вот ваш второй скрипт как настоящий awk
скрипт:
#!/usr/bin/awk -f
{
s = $0 "\n"
n = length(s)
while (1)
printf "%s", substr(s,int(1+rand()*n),1)
}
По умолчанию awk ожидает строку, содержащую программный код, в качестве первого аргумента в командной строке. Например.
awk 'BEGIN{ print "hello" }'
просто напечатает hello
. Итак, если вы запустите
awk pass.awk
он пытается интерпретировать pass.awk
как код awk. Точка не является допустимым синтаксисом awk, поэтому вы получаете ошибку.
Чтобы awk прочитал код из файла, используйте awk -f foo.awk
, как показано в ответе @terdon. (Вам нужно исправить строку hashbang и удалить заглушку оболочки, как показано здесь.)