UNIX/Linuxの「エイリアス置換」のところで教えてください。
書籍に次のような記述がありました。
(なお、¥は「バックスラシュ」の意味です。)
エイリアス置換をエスケープするには、コマンドの前に「¥」をつけます。たとえば、このようにrmが「rm -i」にエイリアスされている場合に、エイリアスされたrmではなく、本来のrmを実行したいならば、次のようにrmの前に「¥」をつけます。
% \rm test.txt
エイリアス置換はそれ以上エイリアス置換ができなくなるまで繰り替えします。そのため、エイリアスの定義によってはエイリアス置換が止まらなくなることもあります。これを防ぐには、エイリアス置換の必要のないコマンドはエイリアス置換をエスケープしておくといいでしょう。
% alias rm \\rm -i
% alias
rm (\rm -i)
【質問1】この2つめの段落の「エイリアス置換が止まらなくなることもあります」とはどのような事を指しているのでしょうか。
【質問2】このrmは「エイリアス置換をエスケープ」しているはずなのですが、試してみると、-iコマンドが生きていました。つまり、
alias rm \\rm -i
と、
alias rm rm -i
は同じ動きでした。何がいけないのでしょうか。
No.2
- 回答日時:
最初の語だけは特別扱いのようです。
alias echo echo A
echo
は A を表示しますが、
alias echo pwd ';' echo A
echo
はループになります。
alias echo pwd ';' \\echo A
echo
だと、ループにならず、pwd と echo A が実行されます。
csh も昔からあるコマンドなので昔はその書籍通り、alias rm rm -i でもループしていたのでしょう。ループを防ぐための他のやり方として、alias rm /bin/rm -i というのを見た事もあります。
No.1ベストアンサー
- 回答日時:
書式からして csh 系だと思うのでそれに従って:
1 の方:
例えば
alias rm rm -i
としたとします. これは, 「コマンドラインが rm という単語で始まっていたら, それを rm -i で置き換える」という意味です. そこで
rm foo
と入力すると, これは rm という単語で始まっているので
rm -i foo
と置き換えられます. ところが, これもやはり rm という単語で始まっているのでさらに
rm -i -i foo
に置き換わります. さらに (以下略)
2 の方:
普通は
alias rm \\rm -i
だと
rm foo
という入力に対して
\rm -i foo
に置き換えるんですが, これは rm という単語で始まっているとはみなさないのでここで置き換えが終了します. 一方, 最初から
\rm foo
と入力すると全く置き換えはされません. この場合には -i を付けずに実行されます.
なお, csh はかなりアドホックな (あるいは「いきあたりばったりな」) 実装になっているので,
alias rm rm -i
でも 1 で述べたような問題は発生しない*かも*しれません.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校 レピュニット数の性質についてです。 レピュニット数とは、各桁が1のみの数で、以下1がk桁の数をRkと 3 2023/07/21 19:58
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Gmail Gmailアドレスのエイリアスは会社で使っているGmailアドレスでないと作成できない? 1 2022/08/16 06:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- Android(アンドロイド) 通電はするが画面がたちらないスマホのデータをどうやって再現するか? 4 2022/05/29 06:08
- Mac OS rmしたドットファイルのある場所 1 2023/07/18 22:45
- ブルーレイ・プレーヤー・レコーダー 学習リモコンSONY RM-PLZ430Dについて 4 2023/05/07 11:26
- K-POP これは何年前の写真なのか知りたいです! BTSに最近ハマって、色んな画像集めたりグッズを集めたりして 1 2023/03/14 07:31
- X(旧Twitter) Twitterログインが出来ない 1 2023/06/17 02:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スラッシュ"/"を削除したい
-
renameコマンドでファイル名か...
-
シェルスクリプトでエラーが出ます
-
コマンドプロンプトでUSBメモリ...
-
dosバッチを使用して昇順に
-
euctosj を使用してファイル名...
-
標準出力とリダイレクトを同時...
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
DOSでテキストファイルの中のあ...
-
Windowsコマンドラインで文字列...
-
del
-
windowsXPコマンドでテキストフ...
-
フォルダ内のファイル名を取得する
-
killコマンド実行時のメッセー...
-
iqoo neo 9と言うスマホがある...
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
UNIX コマンドにおける # や円...
-
SONYの音楽ソフト「x-アプリ」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
バッチで特定文字が含まれる先...
-
スラッシュ"/"を削除したい
-
Linuxで*をつかってファイル移...
-
CentOS/リダイレクションに改行...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
○行目から□行目だけを表示する...
-
ファイルの先頭に文字を追加す...
-
unixのdiffコマンドの動作について
-
コマンドプロンプトでUSBメモリ...
-
ファイルリストを印刷したい。
-
コマンドプロンプト net user...
-
ショートカットのリンク先(フ...
-
標準出力とリダイレクトを同時...
-
scriptコマンドの文字化けについて
-
windows7でmingwのgrepで漢字の...
-
cshでfindした一覧をタイムスタ...
おすすめ情報