Ваша команда не работает, потому что перенаправление выполняется Вашей оболочкой, которая не имеет разрешения записать в /root/test.out
. Перенаправление вывода не выполнено sudo.
существует несколько решений:
Выполнение оболочка с sudo и дают команду ему при помощи -c
опция:
sudo sh -c 'ls -hal /root/ > /root/test.out'
Создают сценарий с Вашими командами и выполняют тот сценарий с sudo:
#!/bin/sh
ls -hal /root/ > /root/test.out
Выполнение sudo ls.sh
. Посмотрите Steve Bennett ответ , если Вы не хотите создавать временный файл.
Запуск оболочка с sudo -s
тогда выполняет Ваши команды:
[nobody@so]$ sudo -s
[root@so]# ls -hal /root/ > /root/test.out
[root@so]# ^D
[nobody@so]$
Использование sudo tee
(если необходимо выйти из много при использовании -c
опция):
sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null
перенаправление к [1 110] необходимо для остановки мишень от выведения до экрана. К [1 120] добавляют вместо того, чтобы перезаписать выходной файл (>>
), используют tee -a
, или tee --append
(последний характерен для [1 116] GNU coreutils).
Спасибо переходит в [1 117] Jd, Adam J. Forster и Johnathan для вторых, третьих и четвертых решений.
В C # пример глобальная переменная будет общедоступной статической переменной в общедоступном классе. Вся программа могла читать / писать в нее, и она также могла быть разделена между потоками.
Частное поле в вашем классе обычно называется «переменной уровня класса». Он не является глобальным для вашего приложения, потому что только ваш класс имеет к нему доступ.
Глобальная переменная - это переменная, к которой все в вашей программе может получить доступ независимо от того, в какой области она находится.
Пример глобальной переменной будет быть чем-то вроде объекта Application
в ASP.Net (общедоступный статический экземпляр класса HttpApplication). Любой объект в любое время в любом файле кода программной части может иметь доступ к объекту Application
для поиска этого значения. Как правило, сохранение значений в объекте Application
- плохая идея, если вы действительно не знаете, что делаете, по всем причинам, упомянутым в статье, на которую вы ссылаетесь.
Нет. Глобальные переменные - это переменные, которые доступны для всей вашей программы. Частные переменные-члены фактически противоположны глобальным переменным. В C / C ++ глобальной переменной будет та, которая объявлена вне объявления функции или класса. В C ++ и Java общедоступная статическая переменная, которая не является константой, также будет считаться глобальной переменной, поскольку вся программа может получить к ней доступ.
В основном существуют другие механизмы, которые могут приводит к введению глобальных переменных:
Как указано в арктике, их лучше избегать.
В C # на самом деле нет ничего, что можно было бы назвать «глобальной» переменной. Самой близкой будет общедоступная статическая переменная; то, что доступно для всех частей программы в любое время.