[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
導航命令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 /data/oldboy.txtlinux
按i,進入到編輯模式(插入)
書寫內容vim
esc 退出編輯模式windows
:wq #保持並退出bash
[root@oldboyedu-01 data]# cat /data/oldboy.txt
I am studying linux.測試
:wq 保持並退出
:q 退出
:q! 強制退出不保存
:wq! 強制退出並保存spa
[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>> 追加劇定向 把內容放在文件的最後一行
#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
###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
# 操做前備份 操做後檢查
# 備份就是 複製須要被分的文件,而後給文件加上後綴
[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
-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
題目: 把 /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
防止錯誤的操做破壞系統,進行時光穿梭
好比移動。修改。或者刪除命令以後
###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命令 [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 找什麼類型的
f ----file 文件
d---- directory 目錄
用來傳遞數據
[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
題目:退出到上一級目錄刪除data目錄。(原來在/root/data)
[root@oldboyedu-01 ~]# cd /root/data/
[root@oldboyedu-01 data]# pwd
/root/data
[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
[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
[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
[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
[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中 !表示取反 非
[root@oldboyedu-01 data]# sed '/oldboy/d' test.txt test liyao
1.grep 過濾 ******
2.head tail ******
3.sed awk 瞭解
##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.查看每一層目錄/文件是否存在
[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文檔中的- ,複製到命令行中會出錯
即給命令設置一個暱稱
##小名 暱稱 愛稱 外號
爲何會有別名
###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
[root@oldboyedu-01 data]# \cp /mnt/test.txt /tmp/
[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/
###第一個里程碑-查看系統中的別名 [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 100 >/oldboy/ett.txt
題目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-瞭解
題目:把/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名進行替換 修改文件內容