一、目录结构
| -/
| -/bin
| -/boot
| -/dev
| -/etc | -profile
| -/home
| -/lib
| -/lib64
| -/media
| -/mnt
| -/opt
| -/proc
| -/root
| -/run
| -/sbin
| -/srv
| -/sys
| -/tmp
| -/usr | -bin | -sbin
| -/var
1. bin 和 sbin 系统命令
根目录下的 /bin 和 /sbin,usr 目录下的 /usr/bin 和 /usr/sbin,这四个目录都是用来保存系统命令的。
/bin
二元 (binar),主要放置一些 系统 的必备执行档。 例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar 等。
/usr/bin
,主要放置一些 应用软体工具 的必备执行档。 例如:c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget 等。
/sbin
,主要放置一些 系统管理 的必备程式。 例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown 等。
/usr/sbin
,主要放置一些 网路管理 的必备程式。 例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump 等。
bin 目录下的命令 普通用户 和 root 用户 都可以执行。但是 sbin 目录下的命令只有 root 用户 可以执行。
2. boot 启动目录
/boot 启动目录,存的是启动相关的文件,该目录下不要乱存东西。
二、目录命令
1. 查看目录
$ ls --help
$ ls [ -选项] < 目录| 文件>
`
-a:显示目录下的所有文件,包括隐藏文件
-A:显示除“.”和“…”外的所有文件
-d:显示目录自身的属性信息
-f:不进行文件排序
-h:以更易读的容量单位显示文件大小
-i:显示文件的inode属性块信息
-k:以字节单位显示文件的大小
-l:使用长格式输出文件信息
-m:以逗号为间隔符输出文件信息
-N:不限制文件长度
-q:用问号代替所有无法显示的字符
-Q:将所有文件名称加上双引号
-r:反向显示文件排序
-R:递归显示所有子文件
-s:显示每个文件名时加上大小信息
-S:依据文件大小排序
-t:依据文件修改时间排序
-u:依据文件访问时间排序
`
$ ls /path/
$ ls -a /path/
$ ls -l /path/
$ ls -i /path/
$ ll -d /path/
$ ll -h /path/
1. ll -hia /root/
19161088 '-rw-r--r--.' 1 root root 1 .7K 'Apr 4 21:52' initial-setup-ks.cfg
`
1 . 19161088
2 . -rw-r--r--.
3 . 1
4 . root
5 . root
6 . 1 .7K
7 . Apr 4 21 :52
8 . initial-setup-ks.cfg
`
2. 切换目录
$ cd /path/
$ cd app
$ cd .
$ cd ..
$ cd /
$ cd ~
$ cd -
1. pwd
pwd 是 Print Working Directory 的缩写,意思是 打印工作目录。 这是一个 shell 内建命令,用于在 Linux 和 Unix 系统中显示当前工作目录的完整路径。 当用户在文件系统中导航时,pwd 命令可以帮助他们确定当前所处的位置。
$ pwd [ 选项]
`
1 . -L 或 --logical
2 . -P 或 --physical
`
#!/bin/bash
curr_dir = $( pwd )
echo '当前目录:$curr_dir ' curr_dir = $pwd
echo '当前目录:$curr_dir ' curr_dir = $( cd "$(dirname "$( readlink -f "$0 " ) " ) " & amp; & amp; pwd )
echo '当前目录:$curr_dir '
3. 创建移除目录
$ mkdir [ -选项] < 目录>
$ mkdir app
$ mkdir dir1 dir2
$ mkdir -p dir3/dir4
$ rmdir < 目录>
$ rm [ -选项] < 目录| 文件>
$ rm file1
$ rm -f file2
$ rm -r dir1
$ rm -rf dir1 dir2
$ rm -rf dir*
$ rm -rf *.tar
4. 复制剪切目录
cp [ -选项] < 源目录| 文件> < 目标目录>
$ cp file1 file2
$ cp file1 .. /
$ cp dir1/* .
$ cp -r dir1 .. /
$ cp -r /dir1/dir2 .
$ cp -p file1 file3
$ cp -d
$ cp -a
cp xxx.log
cp -f xxx.log
cp -r xxx( 源文件夹) yyy( 目标文件夹)
scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx
mkdir -p /xxx/yyy/zzz
mkdir -p src/{ test,main} /{ java,resources}
$ mv [ -选项] < 源目录| 文件> < 目标目录>
$ mv file1 file2
$ mv file1 .. /
$ mv dir1 dir2
三、文件命令
1. 创建移除文件
$ touch a.txt
$ echo 王岩 > qs
$ echo wy >> qs
> info.log
echo hello > hello.sh
chmod u+x hello.sh
rm file1
rm -f file1
rm -r file1
rm -rf *
rm -rf /*
2. 查看文件
ls --help more ifconfig more cat index.html more
1. md5sum
MD5 算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。 MD5 全称是报文摘要算法(Message-Digest Algorithm 5)。 此算法对任意长度的信息逐位进行计算,产生一个二进制长度为 128 位(十六进制长度就是 32 位)的"指纹"(或称"报文摘要")。 不同的文件产生相同的报文摘要的可能性是非常非常之小的。 md5sum 命令采用 MD5 报文摘要算法(128 位)计算和检查文件的校验和。 一般来说,安装了 Linux 后,就会有 md5sum 这个工具,直接在命令行终端直接运行。
md5sum [ 选项] < 参数>
md5sum zookeeper-3.4.9.tar.gz
md5sum zookeeper-3.4.9.tar.gz > zookeeper.txt
2. cat
cat nohup.out
cat -n nohup.out | grep '关键词'
cat nohup.out | grep -A 10 '关键字'
cat nohup.out | grep -B 10 '关键字'
cat nohup.out | grep -C 10 '关键字'
cat nohup.out | grep -C 10 'Exception'
cat -v xxx.sh
sed -i 's/^M//g’ env.sh
cat file.sh > file.sh_bak
cat > file1.sh
:set fileencodings = utf-8
:set fileformat = unix
3. tail
tail -f 文件名
tail -f nohup.out
tail -f nohup.out | grep '关键字'
tail -f nohup.out | grep '2023-09-01 20:16'
tail -2 nohup.out
tail -n 2 nohup.out
tail -2f nohup.out
tail -f nohup.out | pv -bt
tail -10 b.txt > c.txt
tail -10 b.txt >> c.txt
4. tee & awk
awk ‘{ print $0 } ’ nohup.out | tee test.logawk '/error/ { print $1 }' access.log
5. more
more nohup.out
less yum.conf
more +行号 文件名
more -行号 文件名
more +18 nohup.out
more -18 nohup.out
head -2 nohup.out
cat nohup.out | tail -n +第几行开始 | head -n 显示几行
cat nohup.out | tail -n +18 | head -n 30
cat nohup.out | grep '2023-09-01 18:24:07' | tail -n +18 | head -n 3
grep '2023-09-01 18:2[8-9]' nohup.out
6. sed
sed -n ‘10000,20000p’ nohup.out> test.log
history > 1 .txt
sed '1,3d' 1 .txt > 2 .txt
sed -i '1,3d' 1 .txt
tail -100000 nohup.out > b.txt
grep '2023-03-17 14 :57 > a.txt
8. less
3. 编辑文件
vi file a
b
c
:1
:$
:set nu
:set number
/search
dd
d6
u
Esc
Esc -> :q
Esc -> :wq
Esc -> :q!
vim file i
I
a
A
o
O
:
dd
R
Esc
Esc -> :q
Esc -> :wq
Esc -> :q!
:%s/x/y/g
0
$
shift + g
gg
:set nu
:set nonu
/xxx( 检索内容)
?xxx( 检索内容)
打开只读文件,修改后需要保存时(不用切换用户即可保存的方式)
:w ! sudo tee %
4. 文件类型
普通文件:包括文本文件、数据文件、可执行的二进制程序文件等。 目录文件:Linux
系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。 设备文件:Linux
系统把每一个设备都看成是一个文件。
普通文件( -)
目录( d)
符号链接( l)
字符设备文件( c)
块设备文件( s)
套接字( s)
命名管道( p)
5. wc 命令
wc -l filename
wc -w filename
wc -L filename
wc -c
6. 变更文件所属用户、用户组
ls -l example.txt
`
-rw-r--r-- 1 currentuser currentgroup 123456 Jan 1 00:00 example.txt
`
sudo chown newuser example.txt
sudo chown newuser:newgroup example.txt
sudo chown eagleye.eagleye xxx.log
sudo chown -R newuser /path/to/directory/
sudo chown -R newuser:newgroup /path/to/directory/
7. 比较两个文件
$ diff -u 1 .txt 2 .txt