Где я могу учиться, в основном, как настроить их?
Для установки сценарий, который выполняет команды, просто создайте файл (например. MyCmds.sh
) с Вашим редактором и пишут некоторые команды, которые Вы хотите выполнить. Например:
#!/bin/bash
# This is a quote, the next line will output "Hello World"
echo "Hello World"
Теперь необходимо сделать этот исполняемый файл файла путем установки x
флаг (используют Ваш терминал для этого):
$ chmod +x MyCmds.sh
Теперь можно работать, это как это в терминале (не забывайте продвижение ./
):
$ ./MyCmds.sh
Необходимо видеть Hello World
.
Кроме того, как я могу сделать тот выполненным при запуске?
Для запущения этого скрипта при запуске необходимо поместить команды или сценарий с абсолютным путем (например. /path/to/my/script/MyCmds.sh
), в текстовый файл /etc/rc.local
(Иногда существует exit 0
в конце Ваши команды имеют быть выше той строки).
PS Является оболочкой и терминалом/командной строкой то же?
Да (и возможно No). Я предполагаю, что Вы имеете в виду нормальную командную строку, где Вы вводите в своих командах и с оболочкой sripts, действительно ли я прав? Это всегда зависит от Вашей установки. Если Вы запускаете скрипт с #!/bin/bash
(первые два Синье называют shebang
) в первой строке каждый после строки будет передан программной оболочке, расположенной в /bin/bash
. Что Вы видите, как Ваша командная строка, возможно, /bin/bash
или /bin/shell
или ...
(Они отличаются своими функциями). Можно проверить это путем рассмотрения файла /etc/passwd
. После того, как Ваше имя пользователя Linux там должно обозначать программа Вашу командную строку.
Посмотрите на MAN USERMOD
, он показывает опцию -c, которая используется для изменения поля комментария для учетной записи в / etc / passwd
.
Пример:
usermod -c "raspberry pi user account" pi
Чтобы обновить поле Comments для учетной записи пользователя «PI».
Большинство команд могут работать с вводом, который является либо файлом, который им требуется открыть для ввода, либо потоком данных, который передается команде через STDIN.
Когда содержимое cat file.txt
передается другой команде через канал ( |
), выходные данные через STDOUT, которые передаются в канал на левой стороне, настраиваются и подаются в команду, которая находится на правой стороне STDIN трубопровода.
Если содержимое не передается через STDOUT - > STDIN через канал, команды могут получать данные, открывая файлы, передаваемые по имени через аргументы командной строки.
Отправка выходных данных в STDOUT.
$ cat file
1
2
3
4
5
Выход из файла cat
передается через STDOUT в STDIN grep
через канал.
$ cat file | grep 5
5
Обработка файла в качестве аргумента командной строки.
$ grep 5 file
5
Обработка содержимого файла непосредственно через STDIN.
$ grep 5 < <(cat file)
5
Здесь я демонстрирую, что содержимое файла
может быть направлено в grep
через STDIN выше.
Этот вопрос вызвал у меня интерес, и я хотел следовать подходу, который я не смог точно выяснить и получил замечательную помощь после того, как я разместил в качестве другого вопроса . Вы можете понять подход, который я пытаюсь следовать из вопроса, который я опубликовал.
Я получил еще 2 решения для этой проблемы (одно из ответа Гнуца , которое является решением perl , и другое из решения Джона в сочетании с моим решением).
#The variable appended_input will remove spaces/tabs and just append the rows.
#Modify the file name in this line. Here I use inputfile as the filename.
appended_input=$(column -s '\t' inputfile | tr -d '[:space:]') ;
#The array variable will store each column-wise value as an array element.
#I use sort to find the number of unique elements.
array=($(
for ((i=0; i<6; i++))
do
new=${appended_input:$i:1}
for ((j=i+6; j<${#appended_input}; j=j+6))
do
new="$new${appended_input:$j:1}"
done
echo "$new"
done
)) | echo "${array[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '
Тестирование
Мой входной файл выглядит следующим образом.
1 0 0 1 0 0
0 1 1 0 0 0
1 1 1 1 1 0
1 0 0 1 0 1
1 0 0 1 0 1
После выполнения вышеупомянутого сценария, я получаю выходные данные как,
00011 00100 01100 10111
Вы можете иметь wc -w
в качестве окончательного канала, и вы получите выходные данные как только 4 вместо уникальных значений столбцов, как выше.
Можно изменить поле, отредактировав файл, или можно использовать usermod -c
, хотя в настоящее время оно называется полем comment
в man 5 passwd
, это было не всегда, это было поле GECOS в UNIX
название не отражает его использования: предоставление общей информации.
Правильное заполнение представляет собой разделенный запятыми список из четырех (возможных пустых) последовательностей. Вы по-прежнему видите это в том, как некоторые программы создают эту часть записи passwd, предварительно заполняя ее с помощью UserName,,,
.
Первое из этих полей должно содержать полное имя пользователя (или имя программы, если оно используется для демона и т.д.); второе физическое местоположение; третий (офисный) телефон; и четвертый домашний телефон (иногда телекс/факс).
Программы, такие как finger
, могут использоваться для отображения информации о лицах, включая структурированное содержимое этого поля. Я фактически использовал эту функцию (с желтыми страницами для получения информации на всех рабочих станциях) до появления LDAP и личных адресных книг.