場合によっては、実行権限のないディレクトリにあるファイルを一覧表示する必要があります。だから私はsudoをしました:
>sudo ll /opt/mydir
[sudo] password for civfan:
sudo: ll: command not found
そして私は「あ!」と言って…に切り替えたls
後、私が本当にやりたかったことが思い出されましたls -l
。そして私が本当にそれをしたいことを忘れないでくださいls -al
。
誰かが私から私を救うことができますか?
ll
私のユーザーのエイリアスは次のとおりです。
>alias ll
alias ll='ls -alF'
sudo ll
私はどのように仕事をしますか?おそらくルートのエイリアスが必要なようです。それでは、ルートのエイリアスをどのように設定しますか?
編集:私の考えでは、実行しようとするのはあまりにもsudo ll
一般的なので、この質問は提案された冗長性とは別にする必要があるようです。
アップデート:ルートにはすでにll
エイリアスがあります!
civfan@civfan:~>sudo -s
root@civfan:~>alias ll
alias ll='ls -alF'
しかし、まだsudo ll
動作していません...
アップデート2 - 答え:
正解は提案された重複質問私のワークフローに最も適しており、何の欠点もありません。ここで一つ言及したいと思います。
alias sudo="sudo "
メンズバッシュから:
エイリアス値の最後の文字が空の場合、エイリアスの後の次のコマンドワードでもエイリアス拡張が確認されます。
答え1
-大人ユーザー向けの編集- 友達に深い印象を与えたいのですが、そうでない場合、このエイリアスの説明は少し魔法のように感じられて素敵に見えます!シェルが素晴らしく見え、結合できる素晴らしいコマンドがたくさんあるので、インタラクティブにシェルを使用していることに注意してください。しかし、成長したりソフトウェアが成長するにつれて、いくつかのことを自動化したいと思うかもしれません。
sudoを使用してタスクを自動化するときは、対話型セッションでユーザーをbashするのに役立つトリックに頼らないことをお勧めします。
もちろん、sudoコマンドに次の機能を直接追加することもできます。
mv /usr/bin/sudo /usr/bin/sudo_orig
ed /usr/bin/sudo
a
#!/bin/sh
cmd="$*"
if [ $1.cmd = "ll.cmd" ]
then
shift
cmd="ls -alF $*"
elif [ $1.cmd = ...more definitions... ]
then ...
fi
sudo_orig $cmd
.
w
q
chmod 755 /usr/bin/sudo
本当にこの方法が必要だと思うなら、必要に応じてツールセットを作成する方法は次のとおりです。 ;) -編集終了-
シェルエイリアスは、シェルの対話型部分として使用されます。 sudo を呼び出すと、シェルを終了してコマンドを実行します。
を使用して対話型シェルに入り、エイリアスを定義sudo -s
して使用できます。または、エイリアスをコマンドまたは関数として書き換える必要があります。たとえば、/root/alias-cmds フォルダーを使用し、次のコマンドを作成する必要があります/root/alias-cmds/ll
。
echo "ls -alF" > /root/alias-cmds/ll; chmod 700 /root/alias-cmds/ll;
これで、次のものを使用できます。
sudo 'PATH=$PATH:/root/alias-cmds ll'
別のオプションは、以下を定義することです。
alias sudoll='sudo ls -alF'
sudoll
代わりに使用してくださいsudo ll
。