មេរៀនទី៦: Command បញ្ជា cd

 

មេរៀនទី៦: Command បញ្ជា cd របស់ Linux

a

 

ចំនុចទី១ . ប្រើ CDPATH ដើម្បីកំណត់មូលដ្ឋាននៃកន្សោមឯកសារ (base directory សំរាប់ពាក្យ cd
បើសិនជាអ្នកប្រើ cd សំរាប់ subdirectories អ្នកអាចប្រើប្រាស់ដោយតាងអថេរ CDPATH សំរាប់ធ្វើជា parent directory ហើយប្រើ cd សំរាប់ចូលទៅកាន់ subdirectories ដូចខាងក្រោម ៖

[root@chaitik sokun]# pwd
/home/sokun
[root@chaitik sokun]# cd asterisk
-bash: cd: asterisk: No such file or directory
[Note: This is looking for mail directory under current directory]
[root@chaitik sokun]# export CDPATH=/etc
[root@chaitik sokun]# cd asterisk
/etc/asterisk
[Note: This is looking for mail under /etc and not under current directory]
[root@chaitik asterisk]# pwd
/etc/asterisk

ដើម្បីប្ដូរមួយរយៈ យើងអាចបន្ថែមexport CDPATH=/etc ទៅកាន់~/.bash_profile របស់អ្នក ។
ចំនុចទី២ . ប្រើ cd alias
សំរាប់ ទំរង់ long directory បើសិនជាអ្នកចង់ត្រឡប់មកកាន់ directory​ មុនបន្ទាប់ អ្នកអាចប្រើ cd ..\..\ ជាមួយ ពហុ ..\’s វាអាស្រយ័ទៅលើចំនួន directories ដែលអ្នកចង់រក ។

[root@chaitik ~]# mkdir -p /tmp/very/long/directory/structure/that/is/too/deep
[root@chaitik ~]# cd /tmp/very/long/directory/structure/that/is/too/deep
[root@chaitik deep]# pwd
/tmp/very/long/directory/structure/that/is/too/deep
[root@chaitik deep]# cd ../../../../
[root@chaitik structure]# pwd
/tmp/very/long/directory/structure
[root@chaitik structure]#

ដើម្បីធ្វើការជំនួសនៃការប្រើ cd ../../../.. យើងអាចតាងអថេរដូចខាងក្រោម ៖
ទីមួយយើងអាចតាងអថេរដោយប្រើសញ្ញា ‘.’ ៖

[root@chaitik structure]# alias ..=”cd ..”
[root@chaitik structure]# alias …=”cd ../..”
[root@chaitik structure]# alias ….=”cd ../../..”
[root@chaitik structure]# alias …..=”cd ../../../..”
[root@chaitik structure]# alias ……=”cd ../../../../..”
[root@chaitik structure]# cd /tmp/very/long/directory/structure/that/is/too/deep
[root@chaitik deep]# …..
[Note: use ….. (five dots) to go up 4 directory level]
[root@chaitik structure]# pwd
/tmp/very/long/directory/structure
[root@chaitik structure]#

ទីពីរយើងអាចតាងអថេរដោយប្រើ ‘cd ..’ ៖

[root@chaitik structure]# alias cd..=”cd ..”
[root@chaitik structure]# alias cd…=”cd ../..”
[root@chaitik structure]# alias cd….=”cd ../../..”
[root@chaitik structure]# alias cd…..=”cd ../../../..”
[root@chaitik structure]# alias cd……=”cd ../../../../..”
[root@chaitik structure]# cd /tmp/very/long/directory/structure/that/is/too/deep
[root@chaitik deep]# cd …..
-bash: cd: …..: No such file or directory
[root@chaitik deep]# cd…..
[Note: use cd….. to go up 4 directory level]
[root@chaitik structure]# pwd
/tmp/very/long/directory/structure
[root@chaitik structure]#

ចំនុចទី៣ . ប្រើប្រាស់ mkdir និង cd
ពេលខ្លះអ្នកអាចបង្កើត directory ថ្មី ហើយអ្នកប្រើ cd ដើម្បីចូលទៅកាន់ directory នោះ ដូចខាងក្រោម ៖

[root@chaitik ~]# mkdir -p /tmp/subdir1/subdir2/subdir3
[root@chaitik ~]# cd /tmp/subdir1/subdir2/subdir3
[root@chaitik subdir3]# pwd
/tmp/subdir1/subdir2/subdir3
[root@chaitik subdir3]#

អ្នកអាចបន្ថែម scripts ទៅកាន់ .bash_profile ហើយនិង re-login ៖

[root@chaitik ~]# mkdircd /tmp/subdir1/subdir2/subdir3
-bash: mkdircd: command not found
[root@chaitik ~]# vi .bash_profile
បន្ថែម script
function mkdircd () { mkdir -p “$@” && eval cd “\”\$$#\””; }
[root@chaitik ~]# mkdircd /tmp/subdir1/subdir2/subdir3
-bash: mkdircd: command not found
[root@chaitik ~]# exit

re-login ម្ដងទៀត

[root@chaitik ~]# mkdircd /tmp/subdir1/subdir2/subdir3
[root@chaitik subdir3]# pwd
/tmp/subdir1/subdir2/subdir3
[root@chaitik subdir3]#

 ចំនុចទី . ប្រើ “cd -” សំរាប់ចូលទៅកាន់ directories ពីរចុងក្រោយ ដូចខាងក្រោម ៖

# cd /tmp/very/long/directory/structure/that/is/too/deep
# cd /tmp/subdir1/subdir2/subdir3

# cd –
# pwd
/tmp/very/long/directory/structure/that/is/too/deep

# cd –
# pwd
/tmp/subdir1/subdir2/subdir3

# cd –
# pwd
/tmp/very/long/directory/structure/that/is/too/deep

ចំនុចទី . ប្រើ dirs, pushd និង popd
ពាក្យបញ្ជាបីនេះ ប្រើនៅក្នុងឧទាហរណ៍ដូចខាងក្រោម ៖
– dirs: សំរាប់បង្ហាញ directory stack
– pushd: សំរាប់ Push directory ចូលទៅកាន់ stack
– popd: សំរាប់ Pop directory ចេញពី stack ហើយប្រើ cd ​ចូលទៅកាន់វា
Dirs តែងតែបង្ហាញពី directory បច្ចុប្បន្ន ដោយភ្ជាប់ជាមួយខ្លឹមសារនៃ stack ទោះជា directory stack នៅទំនេរក៍ដោយ ។ ពាក្យ dirs នៅតែបង្ហាញ directory បច្ចុប្បន្ន ដូចខាងក្រោម ៖

# popd
-bash: popd: directory stack empty

# dirs
~
# pwd
/home/ramesh

តើការប្រើ pushd និង popd យ៉ាងដូចម្ដេច ? ជាដំបូងយើងនិងបង្កើត directories បណ្ដោះអាសន្នមួយចំនួន រួចហើយ push ពូកវាទៅកាន់ directory stack ដូចខាងក្រោម ៖

# mkdir /tmp/dir1
# mkdir /tmp/dir2
# mkdir /tmp/dir3
# mkdir /tmp/dir4

# cd /tmp/dir1
# pushd .

# cd /tmp/dir2
# pushd .
# cd /tmp/dir3
# pushd .

# cd /tmp/dir4
# pushd .

# dirs
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
[Note: The first directory (/tmp/dir4) of the dir command output is always
the current directory and not the content from the stack.]

directory ចុងក្រោយដែលយើងបាន push ទៅកាន់ stack វានិងស្ថិតនូវខាងលើបំផុត (top) ។ ពេលដែលអ្នកប្រើ popd វានិងប្រើ cd ទៅកាន់ top directory entry នៅក្នុង stack រួចហើយ លុបវាចេញពី stack នេះ ។ ដូចបាន បង្ហាញខាងលើ​ នេះ directory ចុងក្រោយ និងត្រូវាបាន push ចេញ ទៅកាន់ stack គឺ /tmp/dir4 ។ ដូចនេះនិង ប្រើ popd នោះវា cd ទៅកាន់ /tmp/dir4 និងលុបវាចេញពី directory stack ដូចបង្ហាញខាងក្រោម ៖

# popd
# pwd
/tmp/dir4

[Note: After the above popd, directory Stack Contains:
/tmp/dir3
/tmp/dir2
/tmp/dir1]

# popd
# pwd
/tmp/dir3

[Note: After the above popd, directory Stack Contains:

/tmp/dir2
/tmp/dir1]

# popd
# pwd
/tmp/dir2
[Note: After the above popd, directory Stack Contains: /tmp/dir1]

# popd
# pwd
/tmp/dir1

[Note: After the above popd, directory Stack is empty!]

# popd
-bash: popd: directory stack empty

ចំនុចទី . ប្រើ “shopt -s cdspell”
យើងប្រើ shopt -s cdspell ដើម្បីកែប្រែ typos នៅក្នុងពាក្យបញ្ជា cd ដូចបង្ហាញខាងក្រោមនេះ ៖

# cd /etc/mall
-bash: cd: /etc/mall: No such file or directory

# shopt -s cdspell
# cd /etc/mall
# pwd
/etc/mail
[Note: By mistake, when I typed mall instead of mail, cd corrected it automatically]