Linux Command Line(I): Beginner

时间:2023-03-08 19:38:08

考試月終於暫告一段落,終於有時間回歸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

但是無論如何,都會跟大家在新的一篇裡面見面咯:)

~~全文完~~