У Вас, вероятно, есть проблемы с SELinux. Принятие Вас имеет акцент на безопасность (Вы работаете над обратной петлей ssh, в конце концов), и не хотят отключать его, делать следующее как корень:
restorecon -R -v /home/git/.ssh
Если Вы действительно хотите отключить его, в конце концов, то отредактируйте/etc/selinux/config и установите SELINUX=permissive в нем.
Нет необходимости в LS
здесь. Это оболочка, которая перечисляет содержимое каталога, расширяя *. SQL
GLAC.
На системе GNU или FreeBSD:
printf '%s\0' *.sql | sort -nz | xargs -r0 cat --
(использование \ 0
вместо \ N
вместе с -Z / -0
гарантирует это также Работает с именами файлов, содержащих новинку символов).
Обратите внимание, что числовая сортировка с -N
предполагает, что номер находится в начале имени файла.
Или если у вас есть ZSH
:
cat ./*.sql(.n)
(:
cat ./*.sql(.n)
( N
Challifier - включить числовую сортировку (также работает, когда номер не находится в начале при условии, что все имена файлов имеют Тот же префикс (вроде file12.sql
, file2.sql
). Добавил .
Также включает только обычные файлы. Добавить D
Если вы также хотите скрытые файлы, такие как .foo.sql
).
можно сделать $ кошки (ls-1)
при переопределении IFS. IFS Является переменной оболочки, которая говорит Bash который символы использовать в качестве deliminator. Значение по умолчанию для IFS является пространством, вкладкой, новой строкой. При изменении IFS на просто новую строку затем, можно сделать $ кошки (ls-1)
.
нет, ничто неправильно с другими ответами кроме этого не могло бы быть более прямым ответом на то, как иметь дело с пробелами в целом, и этот ответ представляет переменную IFS, с которой большинство не знакомо.
#!/bin/bash
dir=$(mktemp -d)
for x in $(seq 10); do
echo $x > "$dir/$(date) $x.txt"
done
pushd $dir
ls -1 $dir
# Set IFS to newline only inorder to deal with the spaces in the file names
#
oldIFS=$IFS
IFS=$'\n'
cat $(ls -1 $dir)
IFS=$oldIFS
Вывод
[sri@localhost test]$ ./test
/tmp/tmp.IuXCBzbTLj ~/test
Mon Nov 17 06:38:52 EST 2014 10.txt
Mon Nov 17 06:38:52 EST 2014 1.txt
Mon Nov 17 06:38:52 EST 2014 2.txt
Mon Nov 17 06:38:52 EST 2014 3.txt
Mon Nov 17 06:38:52 EST 2014 4.txt
Mon Nov 17 06:38:52 EST 2014 5.txt
Mon Nov 17 06:38:52 EST 2014 6.txt
Mon Nov 17 06:38:52 EST 2014 7.txt
Mon Nov 17 06:38:52 EST 2014 8.txt
Mon Nov 17 06:38:52 EST 2014 9.txt
10
1
2
3
4
5
6
7
8
9
Вот ссылка с некоторой документацией относительно IFS. http://bash.cyberciti.biz/guide/ $IFS. Я думаю, что узнал об этом давным-давно путем чтения книги Bash O'Rielly.
Используйте xargs
(предполагая реализацию GNU) со специальным разделителем (предполагая, что имена файлов не содержат новых строк):
ls -1d -- *.sql | sort -n | xargs -d "\n" cat --