Linux之命令初識

Linux與windows目錄結構對比

命令mkdir、ls、ls -l、cd 、pwd

[root@oldboyedu-01 ~]# #建立目錄 make directory mkdir
[root@oldboyedu-01 ~]# mkdir /data

[root@oldboyedu-01 ~]# #查看目錄裏面的內容
[root@oldboyedu-01 ~]# ls /data
[root@oldboyedu-01 ~]# 

[root@oldboyedu-01 ~]# #查看目錄裏面的詳細信息 
[root@oldboyedu-01 ~]# ls -l /data
total 0
[root@oldboyedu-01 ~]# ls -l /tmp
total 0
-rw-------. 1 root root 0 Sep 18 15:40 yum.log
[root@oldboyedu-01 ~]# #進入到某一個目錄 
[root@oldboyedu-01 ~]# cd /data
[root@oldboyedu-01 data]# 

[root@oldboyedu-01 data]# #我在哪裏?定位
[root@oldboyedu-01 data]# pwd
/data

 

絕對路徑,相對路徑

絕對路徑  從根開始的路徑 -精肯定位
        /data
        /etc/hosts
相對路徑  不從根開始的路徑
          容易 迷路html

導航wd 和 建立文件touch

導航命令pwd-查看本身在哪
pwd

命令-建立一個文件touch

[root@oldboyedu-01 data]# touch  /data/oldboy.txt
[root@oldboyedu-01 data]# ls -l /data/
total 0
-rw-r--r--. 1 root root 0 Sep 19 11:50 oldboy.txt
[root@oldboyedu-01 data]# ls /data/
oldboy.txt

 

vi---記事本

##第一個里程碑-打開文件


vi /data/oldboy.txtlinux

 

##第二個里程碑-進入編輯模式並增長內容


按i,進入到編輯模式(插入)
書寫內容vim

 

##第三個里程碑-退出編輯模式


esc 退出編輯模式windows

 

##第四個里程碑-保持並退出


:wq #保持並退出bash

##第五個里程碑-查看文件的內容cat


[root@oldboyedu-01 data]# cat /data/oldboy.txt
I am studying linux.測試

VI經常使用命令


:wq   保持並退出
:q    退出
:q!   強制退出不保存
:wq!  強制退出並保存spa

輸出命令echo、cat

[root@oldboyedu-01 ~]# echo hello oldboylinux
hello oldboylinux
[root@oldboyedu-01 ~]# echo hello oldboylinux >>/data/oldboy.txt 
[root@oldboyedu-01 ~]# cat /data/oldboy.txt 
I am studying linux.
hello oldboylinux

漏斗家族

[root@oldboyedu-01 ~]# #漏斗-----重定向符號
[root@oldboyedu-01 ~]# #>>-------追加劇定向 把內容放在文件的最後一行
[root@oldboyedu-01 ~]# echo hello oldboylinux >>/data/oldboy.txt 
[root@oldboyedu-01 ~]# cat /data/oldboy.txt 
I am studying linux.
hello oldboylinux
hello oldboylinux

向文件加入多行

cat >>/data/oldboy.txt<<EOF
I
am 
studying 
linux 
EOF
EOF---->end of file

注意:不多在命令行寫,都是寫好後,複製在命令行命令行

EOF 能夠是任意字符,表示結束的意思3d

可是這個字符前面不能有任何東東code

漏斗家族-其餘成員

1 標準輸出 執行正確的內容纔會經過漏斗

#>   1>    標準輸出重定向  先把文件的內容清空   把內容放在文件的最後一行
#>>  1>>   追加劇定向      把內容放在文件的最後一行

2 錯誤輸出

#2>        標準錯誤重定向
#2>>       錯誤追加劇定向

[root@oldboyedu-01 ~]# eho hello 2>>/data/oldboy.txt 
[root@oldboyedu-01 ~]# cat /data/oldboy.txt 
hello oldboy
錯誤
-bash: eho: command not found
[root@oldboyedu-01 ~]# eho hello 2>>/data/oldboy.txt 
[root@oldboyedu-01 ~]# cat /data/oldboy.txt 
hello oldboy
錯誤
-bash: eho: command not found
-bash: eho: command not found

 

錯誤和正確的放一個文件中,兩種方式

eho hello >>/data/oldboy.txt  2>>/data/oldboy.txt 
eho hello >>/data/oldboy.txt  2>&1

 

<     輸入重定向

# 支持的命令不多
echo 1 2 3 4 5 >/data/num.txt 
[root@oldboyedu-01 ~]# cat /data/num.txt 
1 2 3 4 5

[root@oldboyedu-01 ~]# xargs -n2 </data/num.txt 
1 2
3 4
5
爲何要用xargs
echo ‘--help’ |cat
echo ‘--help’ |xargs cat
參考:https://www.cnblogs.com/wangqiguo/p/6464234.html

<<    追加輸入重定向

cat >>/data/oldboy.txt<<EOF
I
am 
studying 
linux 
EOF

複製cp

###3.4 把oldboy.txt拷貝(複製)到/tmp下。
#copy ----cp  三個參數:-r 遞歸的複製  -p 複製的時候保持原素性不變  -a 複製全部 至關於-pdr
[root@oldboyedu-01 ~]# cp /data/oldboy.txt /tmp/
[root@oldboyedu-01 ~]# ls -l /tmp/
total 4
-rw-r--r--. 1 root root 140 Sep 20 01:29 oldboy.txt
-rw-------. 1 root root   0 Sep 18 15:40 yum.log

備份cp

# 操做前備份 操做後檢查
# 備份就是 複製須要被分的文件,而後給文件加上後綴
[root@oldboyedu-01 ~]# cp /data/oldboy.txt /data/oldboy.txt.bak
[root@oldboyedu-01 ~]# ls -l /data/oldboy.txt
-rw-r--r--. 1 root root 140 Sep 20 01:12 /data/oldboy.txt [root@oldboyedu-01 ~]# ls -l /data/
total 12
-rw-r--r--. 1 root root  10 Sep 20 01:15 num.txt -rw-r--r--. 1 root root 140 Sep 20 01:12 oldboy.txt -rw-r--r--. 1 root root 140 Sep 20 01:31 oldboy.txt.bak

複製整個目錄cp -r

-r 遞歸的複製整個目錄

[root@oldboyedu-01 ~]# cp /data/   /tmp/
cp: omitting directory `/data/'----忽略這個命令,Linux不少命令沒辦法直接處理目錄

-r  複製整個目錄及目錄下的內容

[root@oldboyedu-01 ~]# cp -r /data/ /tmp/
[root@oldboyedu-01 ~]# ls -l /tmp/
total 8
drwxr-xr-x. 2 root root 4096 Sep 20 01:35 data
-rw-r--r--. 1 root root  140 Sep 20 01:29 oldboy.txt
-rw-------. 1 root root    0 Sep 18 15:40 yum.log

 

移動mv

題目: 把 /data 移動到 /root目錄下面
#移動----搬家---move-mv
[root@oldboyedu-01 ~]# mv /data/ /root/
[root@oldboyedu-01 ~]# ls -l /root/
total 40
-rw-------. 1 root root  1052 Sep 18 15:44 anaconda-ks.cfg
drwxr-xr-x. 2 root root  4096 Sep 20 01:31 data
-rw-r--r--. 1 root root 21736 Sep 18 15:44 install.log
-rw-r--r--. 1 root root  5890 Sep 18 15:43 install.log.syslog
[root@oldboyedu-01 ~]# ls -l /data 
ls: cannot access /data: No such file or directory

 

vmware 給你虛擬機拍攝快照

防止錯誤的操做破壞系統,進行時光穿梭

好比移動。修改。或者刪除命令以後

 

刪除rm –r  -rf

###3.6 進入/root目錄下的data目錄,刪除oldboy.txt文件
[root@oldboyedu-01 tmp]# rm data/
rm: cannot remove `data/': Is a directory默認沒法直接刪除目錄

[root@oldboyedu-01 tmp]# rm -r data 使用-r刪除目錄
rm: descend into directory `data'? y   
rm: remove regular file `data/oldboy.txt'? n
rm: remove regular file `data/.oldboy.txt.swp'? n
rm: remove regular file `data/num.txt'? n
rm: remove regular file `data/oldboy.txt.bak'? n
rm: remove directory `data'? n

[root@oldboyedu-01 tmp]# rm -rf data/     -rf 強制刪除
[root@oldboyedu-01 tmp]# ls -l
total 4
-rw-r--r--. 1 root root 140 Sep 20 01:29 oldboy.txt
-rw-------. 1 root root   0 Sep 18 15:40 yum.log

查找命令find

找出你想要的東西再刪除

##find命令
[root@oldboyedu-01 tmp]# find /root/ -type f -name "oldboy.txt"
/root/data/oldboy.txt
[root@oldboyedu-01 tmp]# #find /root/ -type f -name "oldboy.txt"
[root@oldboyedu-01 tmp]# #find 在哪裏找 找什麼類型的  找什麼名字

type

-type  找什麼類型的
       f ----file 文件
       d---- directory 目錄

管道 |

用來傳遞數據

| 和 xargs 是黃金搭檔

[root@oldboyedu-01 tmp]# find /root/ -type f -name "oldboy.txt"|xargs ls -l
-rw-r--r--. 1 root root 0 Sep 20 02:27 /root/data/oldboy.txt

*

找出以.txt結尾的文件-用*

[root@oldboyedu-01 tmp]# find /root/  -type f  -name "*.txt"
/root/data/oldboy.txt
/root/data/num.txt

目錄跳轉cd

返回上一級

題目:退出到上一級目錄刪除data目錄。(原來在/root/data)
[root@oldboyedu-01 ~]# cd /root/data/
[root@oldboyedu-01 data]# pwd
/root/data

cd .. 和cd../../../

[root@oldboyedu-01 data]# cd ..
[root@oldboyedu-01 ~]# pwd
/root

[root@oldboyedu-01 ~]# #進入當前目錄的上一級目錄 
[root@oldboyedu-01 ~]# cd ..
[root@oldboyedu-01 /]# cd ../../../
[root@oldboyedu-01 ~]# rm data/  -fr   把危險的參數放在後面
[root@oldboyedu-01 ~]# ls data 
ls: cannot access data: No such file or directory

注意:一個點指當前目錄,不用與cd,配合其餘命令,指當前目錄

 

過濾命令

題目: 已知文件test.txt內容
oldboy
test
lidao
請給出輸出test.txt文件內容時,不包含oldboy字符串的命令。
建立測試文件:
mkdir /data
cat >/data/test.txt<<EOF
test
liyao
oldboy
EOF

#方法1-grep -v

[root@oldboyedu-01 ~]# cd /data/
[root@oldboyedu-01 data]# cat test.txt 
test
liyao
oldboy
[root@oldboyedu-01 data]# #過濾 在文件中找到你想要的內容
[root@oldboyedu-01 data]# grep   "oldboy"      test.txt 
oldboy
[root@oldboyedu-01 data]# grep   "ol"      test.txt 
oldboy
[root@oldboyedu-01 data]# #排除
[root@oldboyedu-01 data]# grep -v   "oldboy"      test.txt 
test
liyao

 

#方法2-head取前幾行

[root@oldboyedu-01 data]# head test.txt 
test
liyao
oldboy
[root@oldboyedu-01 data]# head -n2 test.txt 
test
liyao
[root@oldboyedu-01 data]# head -2 test.txt 
test
liyao

 

tail取最後幾行

[root@oldboyedu-01 data]# tail test.txt 
test
liyao
oldboy
[root@oldboyedu-01 data]# tail -2 test.txt 
liyao
oldboy
[root@oldboyedu-01 data]# tail -1 test.txt 
oldboy
 

#方法3-awk 配合’!/oldboy/’

[root@oldboyedu-01 data]# awk '/oldboy/' test.txt 
oldboy
[root@oldboyedu-01 data]# grep "oldboy" test.txt 
oldboy
[root@oldboyedu-01 data]# grep -v "oldboy" test.txt   
test
liyao
[root@oldboyedu-01 data]# awk '!/oldboy/' test.txt 
test
liyao

[root@oldboyedu-01 data]# #awk中 !表示取反 非
 

#方法4-sed(替換) 配合’/opldoy/d’

[root@oldboyedu-01 data]# sed '/oldboy/d' test.txt 
test
liyao

 

小結:


1.grep 過濾 ******
2.head tail ******
3.sed awk 瞭解

無文件存在的排錯


無文件存在用ls一層一層排錯

##3.9 請用一條命令完成建立目錄/oldboy/test,即建立/oldboy目錄及/oldboy/test

[root@oldboyedu-01 data]# mkdir /oldboy/test
mkdir: cannot create directory `/oldboy/test': No such file or directory


No such file or directory錯誤排查過程
1.ls 命令一層一層查看
2.查看每一層目錄/文件是否存在

建立多層目錄mkdir -p

[root@oldboyedu-01 data]# mkdir -p /oldboy/test 
[root@oldboyedu-01 data]# ls /oldboy/
test
[root@oldboyedu-01 data]# ls -l /oldboy/
total 4
drwxr-xr-x. 2 root root 4096 Sep 25 10:28 test

使用:mkdir -pv 查看命令每一步的操做
注意:在word文檔中的- ,複製到命令行中會出錯

關於Linux別名

即給命令設置一個暱稱
##小名 暱稱 愛稱 外號
爲何會有別名
###1.防止運行危險命令******
###2.省事 簡化命令

咱們總會遇到:提示你是否覆蓋?   是否刪除?


#爲什麼咱們執行cp的時候就至關於cp -i
#爲什麼咱們執行rm的時候就至關於rm -i

題目:已知/tmp下已經存在test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而讓系統不提示是否覆蓋(root權限下)。

[root@oldboyedu-01 data]# cp /mnt/test.txt  /tmp/
cp: overwrite `/tmp/test.txt'? ^C

 

如何直接跳過這個提示

 

#方法1 撬棍

[root@oldboyedu-01 data]# \cp /mnt/test.txt  /tmp/
 

#方法2 使用命令的絕對路徑 全路徑

[root@oldboyedu-01 data]# which cp  先找到命令的路徑
alias cp='cp -i'
    /bin/cp
[root@oldboyedu-01 data]# which mkdir 
/bin/mkdir
[root@oldboyedu-01 data]# ls -l /bin/cp 
-rwxr-xr-x. 1 root root 122896 Mar 23  2017 /bin/cp
[root@oldboyedu-01 data]# /bin/cp /mnt/test.txt /tmp/

怎麼設置Linux別名-alias命令

###第一個里程碑-查看系統中的別名

[root@oldboyedu-01 data]# alias rm cp mv
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'



###第二個里程碑-模仿

#執行rm命令的時候提示 do not use rm 
root@oldboyedu-01 data]# echo do not use rm
do not use rm
[root@oldboyedu-01 data]# alias rm='echo do not use rm'
[root@oldboyedu-01 data]# alias rm
alias rm='echo do not use rm'
[root@oldboyedu-01 data]# rm /tmp/test.txt 
do not use rm /tmp/test.txt
[root@oldboyedu-01 data]# rm -f /tmp/test.txt 
do not use rm -f /tmp/test.txt
[root@oldboyedu-01 data]# rm -fr /tmp/test.txt 
do not use rm -fr /tmp/test.txt


###第三個里程碑-永久生效

#/etc/profile
#vim 快捷鍵
##移動光標到文件的最後一行                             G
##移動光標到文件的  第一行                             gg
##在光標所在位置的下一行插入一個空行 並進入編輯模式    o(小寫字母)
[root@oldboyedu-01 ~]# tail -1 /etc/profile
alias rm='echo do not use rm'
讓命令生效
[root@oldboyedu-01 ~]# source /etc/profile   會用到source命令生效的不多。
[root@oldboyedu-01 ~]# alias rm
alias rm='echo do not use rm'


###第四個里程碑-填坑

編輯 /root/.bashrc
把 alias rm='rm -i'這一行前面加上一個註釋#

# 非要刪除就使用撬棍或者絕對路徑

小結:

1.配置別名

2.臨時取消別名 cp rm

 

生成序列seq

seq 100 >/oldboy/ett.txt

顯示指定行sed、head+tail、awk、grep

題目3.11 只查看ett.txt文件(共100行)內第20到第30行的內容
###方法1-sed

[root@oldboyedu-01 ~]# #sed 默認輸出 sed命令會把文件的內容 默認都顯示出來
[root@oldboyedu-01 ~]# sed -n '20p' /oldboy/ett.txt 
20
[root@oldboyedu-01 ~]# sed -n '20,30p' /oldboy/ett.txt 
20
21
22
23
24
25
26
27
28
29
30


###方法2-head + tail 

[root@oldboyedu-01 ~]# head -30 /oldboy/ett.txt |tail -11
20
21
22
23
24
25
26
27
28
29
30


###方法3-awk 

[root@oldboyedu-01 ~]# awk 'NR==20' /oldboy/ett.txt 
20
#NR表示行號
#== 表示等於
[root@oldboyedu-01 ~]# awk 'NR==20,NR==30' /oldboy/ett.txt 
[root@oldboyedu-01 ~]# sed -n '20,30p' /oldboy/ett.txt 


###方法4-grep

[root@oldboyedu-01 ~]# grep "20" /oldboy/ett.txt 
20
[root@oldboyedu-01 ~]# #文件的內容 ====等於這一行的行號
[root@oldboyedu-01 ~]# grep -A10 "20" /oldboy/ett.txt   A顯示20以及下面的10行
20
21
22
23
24
25
26
27
28
29
30

 

小結:

1.取出文件中的某一行,或者連續的幾行

2.sed,head+tail

3.awk-瞭解

 

查找文件Find 與 替換sed

題目:把/oldboy目錄及其子目錄下全部以擴展名 .sh結尾的文件中,文件包含oldboy的字符串所有替換爲oldgirl 
建立測試環境:
mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/del.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.txt


#第一個里程碑-找出你要的文件

[root@oldboyedu-01 oldboy]# find /oldboy/ -type f 
/oldboy/t.sh
/oldboy/oldboy.txt
/oldboy/test.sh
/oldboy/test/del.sh
/oldboy/ett.txt
/oldboy/alex.txt
[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/del.sh


#第二個里程碑-oldboy替換爲oldgirl 處理一個文件

[root@oldboyedu-01 oldboy]# cat /oldboy/t.sh 
oldboy
[root@oldboyedu-01 oldboy]# #sed 's#找誰#替換爲何#g'   /oldboy/t.sh 
[root@oldboyedu-01 oldboy]# #替換
[root@oldboyedu-01 oldboy]# sed  's#oldboy#oldgirl#g'   /oldboy/t.sh 
oldgirl
[root@oldboyedu-01 oldboy]# cat /oldboy/t.sh   默認是沒法修改文件的,除了vim
oldboy
[root@oldboyedu-01 oldboy]# #sed修改文件的內容   用 -i
[root@oldboyedu-01 oldboy]# sed -i 's#oldboy#oldgirl#g'   /oldboy/t.sh  
[root@oldboyedu-01 oldboy]# cat /oldboy/t.sh 
oldgirl


#第三個里程碑-把find命令找到的文件交給sed命令處理

[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/del.sh
[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs ls -l
-rw-r--r--. 1 root root 7 Sep 25 11:59 /oldboy/test/del.sh
-rw-r--r--. 1 root root 7 Sep 25 11:59 /oldboy/test.sh
-rw-r--r--. 1 root root 8 Sep 25 12:08 /oldboy/t.sh
[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'
oldgirl
oldgirl
oldgirl
[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed 's#oldboy#oldgirl#g' -i
[root@oldboyedu-01 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs cat 
oldgirl
oldgirl
oldgirl

小結:

1.find 與|xargs 2.ls -l rm sed 3.sed名進行替換 修改文件內容

相關文章
相關標籤/搜索