To change the shaded color of the \rule{...}{...} command, one solution is
\textcolor{blue}{\rule{2cm}{2cm}}
but I want to know how can I directly change the color of this command globally?
To change the shaded color of the \rule{...}{...} command, one solution is
\textcolor{blue}{\rule{2cm}{2cm}}
but I want to know how can I directly change the color of this command globally?
You could do
\makeatletter
\let\old@rule\@rule
\def\@rule[#1]#2#3{\textcolor{blue}{\old@rule[#1]{#2}{#3}}}
\makeatother
But it may be better to instead define a new \colorrule command and use that instead, as you may find \rule is used in unexpected places so if you redefine it you may be changing more than you want to change.
If you need to override this sometimes it's probably better to use a colour such as rulecolor rather than blue that you can (re)define when needed:

\documentclass{article}
\usepackage[dvipsnames]{color}
\makeatletter
\let\old@rule\@rule
\def\@rule[#1]#2#3{\textcolor{rulecolor}{\old@rule[#1]{#2}{#3}}}
\makeatother
\definecolor{rulecolor}{named}{Blue}
\usepackage{color}
\begin{document}
\rule{1cm}{1cm}
\bigskip
\rule{.1cm}{1cm}
\bigskip
{\definecolor{rulecolor}{named}{Red}\rule{1cm}{1cm}}
\bigskip
\rule{1cm}{1cm}
\end{document}
The easiest alternative is:
\textcolor{blue}{\rule{2cm}{2cm}}
If you want to define your own command, you can put this in the preamble or latter to change the color as you go.
\newcommand{\myRule}[3][black]{\textcolor{#1}{\rule{#2}{#3}}}
and use e.g.:
\myRule{1cm}{1cm}
\myRule[red]{1cm}{1cm}
\myRule[blue]{1cm}{1cm}
And if you want to fix the color throughout your document, try:
\newcommand{\myRule}[3]{%
\textcolor{red}{\rule{#2}{#3}} %change red to blue, green black whatever.
}
\textcolor as in the MWE than \color using \color can badly affect the position of the rule.
– David Carlisle
Dec 29 '12 at 22:16
rulecommand? I'm just curious about it. – Sisabe Dec 29 '12 at 16:45