文件管理
Bash執行命令
passwd
passwd
?普通用戶修改密碼
passwd robinkool
?root用戶管理賬戶密碼
passwd -d robinkool
?root用戶刪除普通用戶密碼
file
file /bin/file
cat
cat option 文件
cat -A /etc/hosts
#-A選項等于-VET
cat /etc/hosts /etc/fstab
?一次性查看多個文件
head
head option 文件
head /etc/profile#只查看前四行
head -n 4 /etc/profile
head -n-3 /etc/profile
查看所有內容除了最后三行
head -n3 /etc/hosts /etc/fstab
?查看多個文件前三行
tail
tail /etc/profile #默認查看尾十行
tail -n +4 /etc/profile
?查看從第四行到最后所有內容
head -n 15 /etc/profile | tail -n 5tail -n +11 /etc/profile | head -n 5
截取文件11-15行 /etc/profile的兩種方法?
less
less /etc/profile
q=quit
上下方向鍵逐行查看
左右鍵左右翻頁
pageup和pagedown上下翻頁
wc
wc -l 輸出行數
wc -c 輸出字節數
wc -m 輸出字符串數
wc -L 顯示最長行的長度
wc -w 顯示單詞計數
echo
echo -n 不要追加換行
echo -e 啟用反斜杠轉義解釋
echo -E 抑制對反斜杠轉義的解釋
bashrc配置文件--持久化保存
seq -s + 10 #-s用法分隔符
grep username /etc/passwd
#如果顯示nologin則為不能登錄
手動創建用戶
#添加賬戶
vim /etc/passwd
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash#添加組
vim /etc/group
zhangsan:x:1002:#添加密碼
vim /etc/shadow
#最后一行添加 明文為redhat
$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::#準備家目錄
cp -r /etc/skel/ /home/zhangsan
#修改張三家目錄所屬有zhangsan用戶和組
chown zhangsan:zhangsan /home/zhangsan
ll -d /home/zhangsan#測試
ssh zhangsan@localhost
/usr 系統安裝的軟件、共享的庫
/usr/bin 用戶命令
/usr/sbin 系統管理命令
/usr/local 本地自定義軟件
/etc 系統配置文件
/var 系統可變數據如數據庫、緩存目錄、日志
/home 主目錄(家目錄)普通用戶存儲個人數據和配置文件的位置,每個用戶都有自己的位置,/home/robinkool
/root 管理員root的主目錄
/tmp 供臨時文件使用的全局可寫空間
/dev 設備文件,供系統訪問硬件
mkdir
mkdir dir00
mkdir dir01 dir02
mkdir -p dir00/dir01/dir02/dir03/dor04
隔兩層創建不存在的目錄使用-p
cp
cp /etc/hosts .
復制到當前位置cp /etc/hosts ./hosts-1
復制到當前位置并且重命名為hosts-1cp /etc/passwd /etc/host.conf .
復制多個文件到當前位置cp -r /etc/yum .
復制目錄用-r 復制etc下的yum目錄到當前位置cp -r復制目錄當目標位置有相同名稱目錄時,將源目錄放到相同目錄下,而不是覆蓋。
mv
mv hosts-1 /lab
移動單個文件mv passwd hosts /home/robinkool/lab
移動多個文件,目標位置只能是目錄mv host.conf host.conf-new
重命名mv lab /home/root
移動目錄
rm
rm hosts
刪除文件cp /etc/pki/ca-trust/extracted/java/cacerts .
rm cacerts
強制刪除具有寫入保護的文件rm -f cacerts
強制刪除文件 不會詢問rm -r /home/root/lab
遞歸刪除rm -rf
強制遞歸刪除
軟連接和硬鏈接
soft link 類似于Windows中的快捷方式,可以通過將占用空間較大源文件創建軟連接到原位置,然后將源文件移動到其余位置來節省磁盤空間。
在軟件包的源碼編譯安裝中,將軟件的服務創建軟連接到/usr/bin目錄下可以在全局啟動服務。
ln -s 原位置 連接名稱
rm mytmp
刪除軟連接時,連接名稱后面不能跟/分隔符
硬鏈接為普通文件,與源文件的inode號相同,可以通過多個文件名訪問同一個數據塊,任何一個文件發生改變,其余的也跟著改變。
ln hosts-1 hosts-2
ln默認創建硬連接
Linux的輸入和輸出重定向
輸出重定向到文件
獨立輸出
find /etc -name 'passwd'
?查找etc目錄下文件名是passwd的所有文件
find /etc -name 'passwd' 1>passwd.list
cat passwd.list
1>passwd.list可以省略1寫為 >passwd.list
1和>之間不能有空格
?將找到的名覆蓋寫入passwd.list中
find /etc -name 'passwd' >> passwd.list
?將找到的文件名追加到passwd.list中
find /etc -name 'passwd' 2>passwd.err
這里是因為用的root用戶沒有權限不足的問題,當使用cat passwd.err時顯示為空,如果切換為普通用戶就會看到錯誤信息
find /etc -name 'passwd' 2>/dev/null
設備文件/dev/null永遠為空
?將錯誤信息扔掉
這里看不到錯誤是因為錯誤信息被定向到空,但是是因為root用戶輸入的命令,所以沒有權限不足的錯誤信息。
正確信息(標準輸出)
-
位置:直接顯示在終端(標準輸出,文件描述符
1
) -
內容:
find
命令找到的匹配文件路徑(如/etc/passwd
)
錯誤信息(標準錯誤)
-
位置:被重定向丟棄(
2>/dev/null
表示丟棄所有錯誤) -
內容:權限不足、目錄不存在等錯誤(如
find: /etc/ssh: Permission denied
)
find /etc -name 'passwd' > passwd.all 2>&1
?將錯誤信息和正確信息覆蓋寫入到相同文件
find /etc -name 'passwd' >> passwd.all 2>&1
?將錯誤信息和正確信息追加寫入到相同文件
輸出重定向到程序
管道符
管道符(|)實現,將上一個命令的輸出作為標準輸入傳遞給下一個命令
ip a | grep 'ens160$' | awk '{print $2}'
hostname -I 也可以取ip
?獲取ens33網卡ip地址
管道符后的命令必須能夠接受標準輸入,才可以配合管道符使用。但是ls不接受管道傳遞的標準輸入。
echo /etc/passwd | ls -l
ls不接受所以只執行了ls -l
echo /etc/passwd | xargs ls -l
tee
> passwd.list
cat passwd.list
將空覆蓋寫入passwd.list 清空文件內容
find /etc -name 'passwd' 2>/dev/null | tee passwd.list
cat passwd.list
tee命令覆蓋保存到文件?
find /etc -name 'passwd' 2>/dev/null | tee -a passwd.list
cat passwd.list
tee命令追加保存到文件?
標準輸入重定向給程序
cat /etc/hosts
cat < /etc/hosts
cat << EOF
> hello
> world
>EOF
shell讀取到EOF時,代表標準輸入完成?