考試月終於暫告一段落,終於有時間回歸Linux 的懷抱。不知怎的,在VMware Workstation 12 上登入Ubuntu後總是blue screen,明明昨天用terminal 也沒有事啊真令人摸不著頭腦@@ 算吧,反正有kali linux 用著吧。早晚VMware 會被換掉的。
哈哈,但是荒廢太久的關係,連賬號密碼也給忘了。*爬文:http://www.technig.com/reset-lost-password-of-kali-linux/
昨天剛開始,試了一下command:
pwd: print working directory
cd: change directory,cd ~ 就是回家的意思。
ls: list current directory
rm -rf <--哈哈這個當然沒有,也千萬不要試(remove, forced recursive: remove every OS files!!!)
在mkdir上除了一點狀況。實際上要用 mkdir -p /apple/orange/banana, 但是這個指令會overwrite existing directories. 就是,無論舊的、同名的directory裡面有什麼,都會被移除。還有,用rmdir 的話,如果targetted directory 不是空的,那就不能用這個。you must have to delete the sub-directories beneath it first.
哎,雖然學了普通話拼音都有這些年了,但是用拼音輸入還是很慢。還不如用英語輸入。
But noted you cannot delete the particular directory where you are in.
Also, for beginners, it's very easy to forget the '/' preceeding the name of directory. It is particular problematic when we are trying to use rmdir, cd, etc.
Another common error when using 'cd' is forgetting to place '/ <current_directory>' in front of the targetted directory. It causes an error "such directory does not exist"...
===========================
mkdir vs mkdir -p
mkdir -p /apple: establish 'apple' directory in parent directory. Therefore, changes invisible in root.
mkdir /root/apple: changes visible in root
Similarly, 'rmdir /apple' would only remove that in parent directory, not that in the root.
Common mistake in using mkdir, rmdir, cd
$ mkdir root/pineapple # missing '/' before 'root'
$ mkdir /root/pineapple/banana #greedy declaration: pineapple missing directory
$ rmdir /pineapple/banana # missing '/root': directory DNE
$ rmdir /root/pineapple/banana
$ cd /banana #missing '/root' in changing directory; directory DNE
$ cd /root/banana
$ rm /root/pineapple #rm: for removing non-empty directory; rmdir: remove empty dir
===========================
pushd vs popd
remark: pushd, pushes current directory into stack and go to the destinated directory.
!! No confusion: pushd does not push the destinated directory into stack!
popd, pop the lastest visited directory
===========================
File I/O
touch new.txt #establish a new text file
cat >> new.txt << EOF #open txt file for editing
START RANDOM WRITING IN FILE
Hello World this is my first linux txt document!!
EOF #indicate end of file-input; return to parent directory
cat new.txt #view the txt file in terminal
cat << new.txt << EOF #open txt file and move cursor to the end of file
Overwriting in process...
EOF
cat /root/new.txt
START RANDOM WRITING IN FILE
Hello World this is my first linux txt document!!
Overwriting in process... #overwrite existing txt failed :(
echo > a.txt #empty the txt file
echo >> Hello! >> /root/hello_world.txt #append at EOF
rm hello_world.txt #directly remove a file in terminal
===========================
How to check the type of shell your Unix/Linux is using
ps -p $$ #well, usually it's bash shell
===========================
To-slash, or not to slash
~# ls
> Documents Music Pictures
~# cd Documents #access under current directory, need not '/'
c.f.
~# pwd
/root/Documents
~# cd /root/Pictures #access directories not at current level, use '/'
** same principle for 'rmdir', e.g. rmdir apple, rmdir hello_world.txt, iff in current directory
===================
cp: copy file or directory
#this command bit-wise copy from one document to another
~# ls
a.txt
~# cp a.txt b.txt
~# ls
> a.txt b.txt
~# mkdir something
~# ls
> a.txt b.txt something
~# cp -r something another
~#ls
> a.txt b.txt something another
===========================
Forcefully remove non-empty directory
sudo rm -r somthing # '-r' usually for directory-level command
c.f.
cd -r somthing anotherThing #copy entire directory
===========================
Move a file from one place to another
~# pwd
> /root/temp
~# ls
> a.txt b.txt another
~# mv a.txt /root #move file from one directory to next
~# mv another /root #move directory from one to another
~# pushd /root
~# ls
a.txt Documents Music Pictures temp
~# cd temp
> b.txt another
===================
題外話:昨晚寫了一個小工具程序給哥哥,他好像很喜歡呢<3 太好了!原來路徑用程序下載時default的路徑就可以了,根本不用在batch當裡面動態產生。哎,真爬文爬死了。看來要認真的學batch的基礎。還有,原來哥哥都會用虛擬機,顆顆真棒!都說我的哥哥是宇宙最強的哈哈哈哈<3 瞎扯瞎遠了,言歸正傳。
每次開虛擬機linux terminal 都耗時很久,等到它開了已經沒有熱情了,還是用一下網上的好了:https://www.tutorialspoint.com/execute_bash_online.php
===================
Opening txt file in bash
less a.txt
q #quit viewing txt
less vs cat
less a.txt b.txt #error: less for openning one document only one in a time!
cat a.txt b.txt #allowed
===================
結語
這篇可算是第一篇結案的文章,算是有頭有尾吧,哈哈。這裡都是非常基本的bash shell command lines。接下來可能的發展方向是學windows' command prompt,或是繼續發掘:https://www.gnu.org/software/bash/manual/bashref.html
但是無論如何,都會跟大家在新的一篇裡面見面咯:)
~~全文完~~