Доброго времени суток! Сегодня поговорим о работе с текстовыми файлами и потоками в Linux Bash. Разберем команды для сортировки и объединения файлов, а также повторим команды поиска заданной строки и вывода в файл.
- Получите список всех процессов и перенаправьте вывод в файл ps.txt.
ps > ps.txt
- Выполните команду поиска всех обычных файлов в каталоге /etc так, чтобы найденные имена файлов были записаны в файл SysComm в домашнем каталоге, а поток ошибок – в нуль-устройство /dev/null.
find /etc > SysCom 2> /dev/null
- Выполните ту же команду, но так, чтобы потоки вывода и ошибок были записаны в файл SysComm.
find /etc &> SysComn
- Допишите в конец файла SysComm информацию о текущей дате и времени, выводимую командой date.
date >> SysComn
- Установите опцию noclobber и сотрите содержимое файла ps.txt с помощью перенаправления вывода.
set -o noclobber
(невозможно перезаписать файл)
> ps.txt - Проведите нерекурсивный поиск файлов символических ссылок в каталоге /usr/share/doc так, чтобы их список был выведен в отсортированном виде с помощью фильтра sort.
find /usr/share/doc - type l | sort -r
- Выведите список всех процессов в файл ps.txt и отсортированный список на экран одновременно.
ps | tee ps.txt |sort -r
- Определите из man ascii восьмеричный код системного звукового сигнала и выведите его с помощью echo.
echo -e '007'
- Команда less позволяет открыть несколько файлов, указав их в качестве аргументов. Просмотрите несколько файлов? Как перейти от просмотра одного файла к другому?
less ps.txt SysComn
(n — переход к следующему файлу) - Выведите содержимое файла /etc/passwd в обратном порядке следования строк с нумерацией.
cat -b /etc/passwd | sort -r -n
- Получите имена трех самых больших файлов в каталоге /usr/bin.
ls -sl | sort -n -r | cut -c62-100
- Получите столбец относительных приоритетов всех процессов в системе.
ps -l | cut -c25-30
- Получите столбец из имен пользователей, находящийся в данный момент в сеансе.
who | cut -c1-8
- Получите список всех пользователей системы. В каком файле он находится?
cut -d: -f1 /etc/passwd
- Получите пронумерованный столбец, составленный из символов строк – имен файлов в текущем каталоге так, чтобы были выведены символы с третьего до последнего.
ls -l | cut -c58-80 | cat -b
- С помощью sed получите список только тех процессов, которые связаны с каким-либо терминалом (фильтр по строке tty).
ps -e | sed '/tty/!d;'
- В полученном списке процессов с помощью sed замените все строки tty на terminal.
ps -e | sed '/tty/!d; s/tty/terminal/g'
- Создайте файл из четверостишия st4.txt.
cat > st4.txt
Мой дядя самых честных правил,
Когда не в шутку занемог,
Он уважать себя заставил
И лучше выдумать не мог.
Ctrl+D - Вставьте две пустые строки после каждой строки в st4.txt.
sed 'G;G' st4.txt
- Удалите все пробелы/табы в конце каждой строки в st4.txt.
sed 's/[ \t]*$//' st4.txt
- Создайте файл st.txt, скопировав st4.txt 5 раз, пронумеруйте строки.
paste -d"\n" -s st4.txt st4.txt st4.txt st4.txt st4.txt > st.txt
- Выведите каждую пятую строку, начиная со второй.
sed -n '2-5p' st.txt
- Выведите первые 10 строк файла, используя команду sed.
sed 10q st.txt
- При помощи awk удалите из списка процессов п.16 второй столбец.
ps -e | awk '{$2=""; print $0}'
- При помощи awk пронумеруйте полученный список.
ps | awk '{print NR " || " $0} '
- Выведите отсортированный список имен пользователей.
cat /etc/passwd | sort -t:
- Выведите четные строки файла.
сat ps.txt | awk 'NR%2==0'
- Создайте в текущем каталоге копию D1 каталога d1 из lab3 с подкаталогами.
cp ~/linux_lab3/d1 D1 -R
- Копируйте файл st4.txt в каталог D1.
cp ps.txt D1
- Сравните рекурсивно каталоги d1 и D1.
diff D1 ~/linux_lab3/d1
- Сравните содержимое домашних каталогов двух пользователей.
diff /root ~/
(Под рутом) - Создайте два файла ps1.txt и ps2.txt, содержащие полный список текущих процессов. Получите файл patch.txt с отличиями ps1.txt от ps2.txt.
ps -l > ps1.txt
ps -l > ps2.txt
diff ps1.txt ps2.txt > patch.txt - Получите список групп пользователей в системе, отсортированный по GID в обратном числовом порядке.
cut -d: -f1,3 /etc/group | sort -r -t: -k2 -m
- С помощью find, head и sort получите список из десяти файлов в домашнем каталоге, занимающих наибольшее дисковое пространство.
find -size +1 | head -10 | sort -n
- Выведите общее количество файлов в текущем каталоге.
ls | wc -l
- Выведите пронумерованный список файлов в текущем каталоге.
ls | cat -b
- Задайте шаг нумерации, равный двум.
ls | nl | sed 2~2d
- Сколько имеется пользователей, UID которых больше 100?
awk '$3>100{print $1,$3}' /etc/passwd
- Выведите последние три строки файла /etc/passwd, заменив разделители – двоеточия на разделители – вертикальные черты (|).
tail -3 /etc/passwd | sed 's/:/|/g'
- Разделите файл /etc/passwd на части по 10 строк, находящиеся в текущем каталоге. Имена файлов должны начинаться с passwd.
split -l10 /etc/passwd passwd | cat /etc/passwd
И, конечно же, не забывайте оставлять свои комментарии.
Будьте первым, кто оставит комментарий