跳到主要内容 Linux 基础指令与权限管理指南 | 极客日志
Shell / Bash
Linux 基础指令与权限管理指南 Linux 基础指令涵盖文件操作(ls, cd, mkdir, rm, cp, mv)、文本查看(cat, head, tail, less)、搜索查找(find, grep)、压缩解压(tar, zip)及时间管理(date, cal)。此外还包括权限管理概念(root 与普通用户、rwx 权限、chmod/chown/chgrp/umask)及系统信息查询(uname, which, whereis)。通过具体命令示例讲解常用功能,帮助掌握 Linux 命令行操作基础。
极客零度 发布于 2026/3/15 更新于 2026/4/18 2 浏览ls 指令
语法: ls [选项] [目录或文件]
**功能:**对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
• -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
• -d 将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录
• -i 输出文件的 i 节点的索引信息。如 ls -ai 指定文件
• -k 以 k 字节的形式表示文件的大小。ls -alk 指定文件
• -l 列出文件的详细信息
• -n 用数字的 UID,GID 代替名称。(介绍 UID,GID)
• -F 在每个文件名后附上一个字符以说明该文件的类型,'*'表示可执行的普通文件;'/'表示目录;'@'表示符号链接;'|'表示 FIFOs;'='表示套接字 (sockets)。(目录类型识别)
• -r 对目录反向排序
• -t 以时间排序
• -s 在 l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
• -R 列出所有子目录下的文件。(递归)
• -1 一行只输出一个文件。
常用选项:
举例:
user@ubuntu:~$ ls file1.txt new_a
user@ubuntu:~$ ls -a
. .bash_logout .bashrc file1.txt new_a .profile
user@ubuntu:~$ ls -al
...
pwd 命令 语法: pwd
**功能:**显示用户当前所在的目录
**常用选项:**无
举例:
user@ubuntu:~/new_a$ pwd
/home/user/new_a
cd 指令 Linux 理论知识:路径的认识
• Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
• 其中普通文件一定是目录树的叶子节点
• 目录可能是叶子 (空目录), 也可能是路上节点
• 理解路径存在的意义: 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性
• 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
• 相对路径:相对于当前用户所处目录,定位文件的路径方式
• 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
• 相对路径因为它的便捷性,一般在命令行中使用较多
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下
举例:
user@ubuntu:~/new_a$ pwd
/home/user/new_a
user@ubuntu:~/new_a$ cd ..
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ cd /home/user/new_a
user@ubuntu:~/new_a$ pwd
/home/user/new_a
user@ubuntu:~/new_a$ pwd
/home/user/new_a
user@ubuntu:~/new_a$ cd ../b/
user@ubuntu:~/b$ pwd
/home/user/b
user@ubuntu:~$ ls /home
user
user@ubuntu:~/new_a$ whoami
user
user@ubuntu:~/new_a$ pwd
/home/user/new_a
user@ubuntu:~/new_a$ cd ~
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ cd /
user@ubuntu:/$ pwd
/
user@ubuntu:/$ cd -
/home/user
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ cd -
/
user@ubuntu:/$ pwd
/
user@ubuntu:/$ cd -
/home/user
user@ubuntu:~$ pwd
/home/user
touch 指令 Linux 理论知识:文件类型的认识
语法: touch [选项]... 文件...
功能: touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
• -a : change only the access time
• -c : change only the modification time
举例:
user@ubuntu:~$ ls
file1.txt new_a
user@ubuntu:~$ touch file2.txt
user@ubuntu:~$ ls
file1.txt file2.txt new_a
user@ubuntu:~$
user@ubuntu:~$ stat file2.txt
File: file2.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 253,3 Inode: 915724 Links: 1 Access: (0664/-rw-rw-r--) Uid: (1000/ user) Gid: (1000/ user) Access: 2024-12-21 18:01:52.442308070 +0800 Modify: 2024-12-21 18:01:52.442308070 +0800 Change: 2024-12-21 18:01:52.442308070 +0800 Birth: 2024-12-21 18:01:52.442308070 +0800
user@ubuntu:~$ touch -a file2.txt
user@ubuntu:~$ stat file2.txt
...
user@ubuntu:~$ touch -m file2.txt
user@ubuntu:~$ stat file2.txt
...
mkdir 指令 语法: mkdir [选项] dirname...
**功能:**在当前目录下创建一个名为 'dirname'的目录
常用选项:
• -p/–parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
举例:
user@ubuntu:~$ ls -l
...
user@ubuntu:~$ mkdir mydir
user@ubuntu:~$ ls -l
...
user@ubuntu:~$ mkdir -p path1/path2/path3/path4
user@ubuntu:~$ ls -l
...
user@ubuntu:~$ tree path1
path1
└── path2
└── path3
└── path4
4 directories, 0 files
rmdir 指令 && rm 指令 rmdir 是一个与 mkdir 相对应的命令,mkdir 是建立目录,而 rmdir 是删除命令
语法: rmdir [-p] [dirName]
**适用对象:**具有当前目录操作权限的所有使用者
**功能:**删除空目录
常用选项:
• -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
举例:
user@ubuntu:~$ ll
...
user@ubuntu:~$ tree path1
path1
└── path2
└── path3
└── path4
4 directories, 0 files
user@ubuntu:~$ rmdir -p path1/path2/path3/path4
user@ubuntu:~$ ll
...
user@ubuntu:~$ rmdir -p path1/path2/path3
rmdir : failed to remove 'path1/path2/path3' : Directory not empty
user@ubuntu:~$ touch path1/path2/myfile.txt
user@ubuntu:~$ touch path1/myfile.txt
user@ubuntu:~$ tree path1
path1
├── myfile.txt
└── path2
├── myfile.txt
└── path3
└── path4
4 directories, 2 files
user@ubuntu:~$ rmdir -p path1/path2/path3/path4
rmdir : failed to remove directory 'path1/path2' : Directory not empty
rm 命令可以同时删除文件或目录 语法: rm [-f-i-r-v] [dirName/dir]
**适用对象:**所有使用者
**功能:**删除文件或目录
常用选项:
• -f 即使文件属性为只读 (即写保护),亦直接删除
• -i 删除前逐一询问确认
• -r 删除目录及其下所有文件
举例:
user@ubuntu:~$ ll
...
user@ubuntu:~$ rm file2.txt
user@ubuntu:~$ ll
...
user@ubuntu:~$ rm b
rm : cannot remove 'b' : Is a directory
user@ubuntu:~$ rm -r b
user@ubuntu:~$ ll
...
user@ubuntu:~$ ll
...
user@ubuntu:~$ rm -i file1.txt
rm : remove regular empty file'file1.txt' ? y
user@ubuntu:~$ ll
...
user@ubuntu:~$ mkdir -p d/d/d/d
user@ubuntu:~$ tree d
d
└── d
└── d
└── d
4 directories, 0 files
user@ubuntu:~$ rm -ri d
rm : descend into directory 'd' ? y
rm : descend into directory 'd/d' ? y
rm : descend into directory 'd/d/d' ? y
rm : remove directory 'd/d/d/d' ? y
rm : remove directory 'd/d/d' ? y
rm : remove directory 'd/d' ? y
rm : remove directory 'd' ? y
user@ubuntu:~$ ll
...
user@ubuntu:~$ tree path1
path1
├── myfile.txt
└── path2
└── myfile.txt
2 directories, 2 files
user@ubuntu:~$ rm -f path1/path2
rm : cannot remove 'path1/path2' : Is a directory
user@ubuntu:~$ tree path1
path1
├── myfile.txt
└── path2
└── myfile.txt
2 directories, 2 files
user@ubuntu:~$ rm -rf path1/path2
user@ubuntu:~$ tree path1
path1
└── myfile.txt
1 directory, 1file
man 指令 Linux 的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
语法: man [选项] 命令
常用选项:
• -k 根据关键字搜索联机帮助
• num 只在第 num 章节查找
• -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用 a 选项,当按下 q 退出,他会继续往后面搜索,直到所有章节都搜索完毕
**解释一下:**man 手册分为 9 章 (不同系统可能会有差别)
• 1 是普通的命令
• 2 是系统调用,如 open,write 之类的 (通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
• 3 是库函数,如 printf,fread4 是特殊文件,也就是/dev 下的各种设备文件
• 4 略
• 5 是指文件的格式,比如 passwd, 就会说明这个文件中各个字段的含义
• 6 是给游戏留的,由各个游戏自己定义
• 7 是附件还有一些变量,比如像 environ 这种全局变量在这里就有说明
• 8 是系统管理用的命令,这些命令只能由 root 使用,如 ifconfig
• 9 略
举例:
user@ubuntu:~$ man printf
user@ubuntu:~$ man fork
user@ubuntu:~$ man 2 fork
user@ubuntu:~$ man 3 printf
user@ubuntu:~$ man 7 signal
user@ubuntu:~$ man 7 environ
user@ubuntu:~$ man man
cp 指令 语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明:
• cp 指令用于复制文件或目录
• 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
常用选项
• -f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
• -i 或 --interactive 覆盖文件之前先询问用户
• -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
user@ubuntu:~$ echo "你好我是小志" >myfile.txt
user@ubuntu:~$ cat myfile.txt
你好我是小志
user@ubuntu:~$ ll
...
user@ubuntu:~$ cp myfile.txt myfile_backup.txt
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ cat myfile_backup.txt
你好我是小志
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ mkdir dir
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ cp *.txt dir
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ echo "小志是我" >myfile.txt
user@ubuntu:~$ cat myfile.txt
小志是我
user@ubuntu:~$ cp myfile.txt myfile_backup.txt
user@ubuntu:~$ cat myfile_backup.txt
小志是我
user@ubuntu:~$ cp -i myfile.txt myfile2.txt
cp : overwrite 'myfile2.txt' ? y
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ cp -rf dir dir_backup
user@ubuntu:~$ tree ..
...
mv 指令 mv 命令是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files,经常用来备份文件或者目录
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。
当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
常用选项:
• -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
• -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
举例:
user@ubuntu:~$ ll
...
user@ubuntu:~$ mv myfile.txt yourfile.txt
user@ubuntu:~$ ll
...
user@ubuntu:~$ ll
...
user@ubuntu:~$ mv myfile2.txt yourfile.txt
user@ubuntu:~$ ll
...
user@ubuntu:~$ mv -i yourfile.txt myfile.txt
mv : overwrite 'myfile.txt' ? y
user@ubuntu:~$ ll
...
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ mv path1 ./new_a/a
user@ubuntu:~$ tree ..
...
cat 指令 语法: cat [选项] [文件]
**功能:**查看目标文件的内容
常用选项:
• -b 对非空输出行编号
• -n 对输出的所有行编号
• -s 不输出多行空行
举例:
user@ubuntu:~$ cnt=0; while [ $cnt -le 20 ]; do echo "你好,我是小志" ; let cnt++; done > temp.txt
user@ubuntu:~$ cat temp.txt
你好,我是小志
...
user@ubuntu:~$ cat -b temp.txt
1 你好,我是小志
...
user@ubuntu:~$ nano temp.txt
user@ubuntu:~$ cat -b temp.txt
...
user@ubuntu:~$ clear
user@ubuntu:~$ cat -n temp.txt
...
user@ubuntu:~$ cat -s temp.txt
...
more 指令 语法: more [选项]
**功能:**more 命令,功能类似 cat
常用选项:
• -n 指定输出行数
• q 退出 more
举例:
user@ubuntu:~$ cnt=0; while [ $cnt -le 20 ]; do echo "你好,我是小志" ; let cnt++; done > temp.txt
user@ubuntu:~$ more -10 temp.txt
你好,我是小志
...
--More--(47%)
less 指令 • less 工具也是对文件或其它输出进行分⻚显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大
• less 的用法比起 more 更加的有弹性,在 more 的时候,我们并没有办法向前面翻,只能往后面看
• 但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容
• 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [参数] 文件
**功能:**less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。选项:
• -i 忽略搜索时的大小写
• -N 显示每行的行号
• /字符串:向下搜索'字符串'的功能
• ?字符串:向上搜索'字符串'的功能
• n:重复前一个搜索(与 / 或 ? 有关)
• N:反向重复前一个搜索(与 / 或 ? 有关)
• q:quit
举例:
user@ubuntu:~$ cnt=0; while [ $cnt -le 2000 ]; do echo "你好,我是小志" ; let cnt++; done > temp.txt
user@ubuntu:~$ less -N temp.txt
1 你好,我是小志
...
head 指令 head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法: head [参数]... [文件]...
**功能:**head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
选项:
• -n<行数> 显示的行数
举例:
user@ubuntu:~$ head temp.txt
你好,我是小志
...
user@ubuntu:~$ head -5 temp.txt
你好,我是小志
...
tail 指令 tail 命令从指定点开始将文件写到标准输出。使用 tail 命令的-f 选项可以方便的查阅正在改变的日志文件,tail -f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容.
语法: tail 必要参数 [文件]
**功能:**用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
• -f 循环读取
• -n<行数> 显示行数
举例: (简单讲解重定向和管道)
user@ubuntu:~$ cnt=0; while [ $cnt -le 2000 ]; do echo "hello $cnt " ; let cnt++; done > temp.txt
user@ubuntu:~$ tail temp.txt
hello 1991
...
user@ubuntu:~$ tail -3 temp.txt
hello 1998
hello 1999
hello 2000
模拟动态⽇志查看功能
user@ubuntu:~$ head -200 temp.txt | tail -20
hello 180
...
hello 199
date 指令 指定格式显示时间: date +%Y:%m:%d
用法: date [OPTION]... [+FORMAT]
1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
• %H : 小时 (00…23)
• %M : 分钟 (00…59)
• %S : 秒 (00…61)
• %X : 相当于 %H:%M:%S
• %d : 日 (01…31)
• %m : 月份 (01…12)
• %Y : 完整年份 (0000…9999)
• %F : 相当于 %Y-%m-%d
2. 在设定时间方面
• date -s //设置当前时间,只有 root 权限才能设置,其他只能查看。
• date -s 20080523 //设置成 20080523,这样会把具体时间设置成空 00:00:00
• date -s 01:01:01 //设置具体时间,不会对日期做更改
• date -s "01:01:01 2008-05-23″ //这样可以设置全部时间
• date -s "01:01:01 20080523″ //这样可以设置全部时间
• date -s "2008-05-23 01:01:01″ //这样可以设置全部时间
• date -s "20080523 01:01:01″ //这样可以设置全部时间
3. 时间戳
• 时间->时间戳:date +%s
• 时间戳->时间:date -d@1508749502
• Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒
4. 举例
user@ubuntu:~$ date
Sun Dec 22 02:34:03 PM CST 2024
user@ubuntu:~$ date +%Y/%m/%d
2024/12/22
user@ubuntu:~$ date +%Y/%m/%d-%H:%M:%S
2024/12/22-14:34:53
user@ubuntu:~$ date +%s
1734849539
user@ubuntu:~$ date +%Y/%m/%d-%H:%M:%S -d @0
1970/01/01-08:00:00
user@ubuntu:~$ date +%Y/%m/%d-%H:%M:%S -d @100000
1970/01/02-11:46:40
user@ubuntu:~$ date +%Y/%m/%d-%H:%M:%S -d @1000000000
2001/09/09-09:46:40
cal 指令 cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。'阳历'又名'太阳历',系以地球绕行太阳一周为一年,为西方各国所通用,故又名'西历'。
命令格式: cal 参数 [年份]
**功能:**用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999),如有两个参数,则表示月份和年份
常用选项:
• -3 显示系统前一个月,当前月,下一个月的月历
• -j 显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)
• -y 显示当前年份的日历
举例:
user@ubuntu:~$ cal December 2024
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
user@ubuntu:~$ cal 2004
2004 January February March
...
user@ubuntu:~$ cal -3
November 2024 December 2024 January 2025
...
find 指令 • Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作。
• Linux 下 find 命令提供了相当多的查找条件,功能很强大。由于 find 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
• 即使系统中含有网络文件系统 ( NFS),find 命令在该文件系统中同样有效,只你具有相应的权限。
• 在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很⻓的时间 (这里是指 30G 字节以上的文件系统)。
语法: find pathname -options
**功能:**用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
常用选项
• -name 按照文件名查找文件
• 其他选项需要在查,这个命令其实比较复杂
user@ubuntu:~$ find ~ -name myfile.txt
/home/user/dir/myfile.txt
/home/user/new_a/a/path1/myfile.txt
/home/user/myfile.txt
which 指令 user@ubuntu:~$ which ls
/usr/bin/ls
user@ubuntu:~$ which pwd
/usr/bin/pwd
whereis 指令 **功能:**用于找到程序的源、二进制文件或手册
举例:
user@ubuntu:~$ whereis ls
ls : /usr/bin/ls /usr/share/man/man1/ls.1.gz
user@ubuntu:~$ whereis libc.so
libc.so: /usr/lib/x86_64-linux-gnu/libc.so
alias 指令 user@ubuntu:~/mydir$ alias hello='ls -a -l -n'
user@ubuntu:~/mydir$ hello
...
grep 指令 **语法:**grep [选项] 搜寻字符串 文件
**功能:**在文件中搜索字符串,将找到的行打印出来
常用选项:
• -i:忽略大小写的不同,所以大小写视为相同
• -n:顺便输出行号
• -v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行
举例:
user@ubuntu:~$ cat myfile.txt
abcd
ABCD
hello linux
1234
小志是我
user@ubuntu:~$ grep "abcd" myfile.txt
abcd
user@ubuntu:~$ grep -i "abcd" myfile.txt
abcd
ABCD
user@ubuntu:~$ grep -n "abcd" myfile.txt
1:abcd
user@ubuntu:~$ grep -ni "abcd" myfile.txt
1:abcd
2:ABCD
user@ubuntu:~$ grep -vn "abcd" myfile.txt
2:ABCD
3:hello
4:linux
5:1234
6:小志是我
user@ubuntu:~$ grep -vin "abcd" myfile.txt
3:hello
4:linux
5:1234
6:小志是我
zip/unzip 指令 语法: zip 压缩文件.zip 目录或文件
**功能:**将目录或文件压缩成 zip 格式
常用选项
• -r:递归处理,将指定目录下的所有文件和子目录一并处理
举例
将 test2 目录压缩:zip test2.zip test2/*
解压到 tmp 目录:unzip test2.zip -d /tmp
user@ubuntu:~$ tree ..
...
user@ubuntu:~$ zip -r dir.zip dir
adding: dir / (stored 0%)
...
user@ubuntu:~$ unzip dir.zip -d ./new_a
Archive: dir.zip
creating: ./new_a/dir/
...
user@ubuntu:~$ tree ..
...
关于 rzsz 该工具用于 Windows 机器与远程 Linux 机器之间传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去。
sudo yum/apt install -y lrzsz
Windows 和 Linux 互传文件
tar 指令(重要) 打包/解包,不打开它,直接看内容
语法: tar [-cxtzjvf] 文件与目录 ....
参数:
• -c:建立一个压缩文件的参数指令 (create 的意思);
• -x:解开一个压缩文件的参数指令!
• -t:查看 tarfile 里面的文件!
• -z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
• -j:是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
• -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
• -f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
• -C:解压到指定目录
案例:
user@ubuntu:~$ tree ..
...
范例一:将整个 ./a/mydir 目录下的文件全部打包成为 ./a/mydir.tar
root@ubuntu:~# tar -cvf ./a/mydir.tar ./a
root@ubuntu:~# tar -zcvf ./a/mydir.tar.gz ./a
root@ubuntu:~# tar -jcvf ./a/mydir.tar.bz2 ./a
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file 〜
如果加 j 参数,则以 .tar.bz2 来作为附档名啊〜
上述指令在执行的时候,会显示一个警告讯息:
『tar: Removing leading / from member names`』那是关于绝对路径的特殊设定。
范例二:查阅上述 ./new_a/dir.tar.gz 文件内有哪些文件?
root@ubuntu:~# tar -ztvf ./a/mydir.tar.gz
drwxrwxrwx root/root 02024-12-2311:13./a/-rw-r--r-- root/root 102402024-12-2309:56./a/mydir.tar drwxr-xr-x root/root 02024-12-0212:19./a/mydir/ drwxr-xr-x root/root 02024-12-0212:19./a/mydir/c/-rw-r--r-- root/root 2372024-12-0212:08./a/mydir/c/newfile3.txt ...
由于我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的!
范例三:将 mydir.tar.gz 文件解压缩在 ./a/path1 底下
cd ./a/path1
root@ubuntu:~/a/path1# tar -zxvf /root/a/mydir.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,我先将工作目录变换到 ./a/path1 底下,并且解开 /root/a/mydir.tar.gz ,则解开的目录会在 ./new_a/a 呢!另外,如果您进入 ./a/path1 则会发现,该目录下的文件属性与 ./a 可能会有所不同喔!
范例四:在 ./path1/path2 底下,我只想要将 ./mydir.tar.gz 内的 mydir/c 解开而已
root@ubuntu:~/a# tree ..
...
root@ubuntu:~/a# cd path1/path2
root@ubuntu:~/a/path1/path2# tar -zxvf /root/a/mydir.tar.gz ./mydir/c
我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,就可以透过这个方式来下达!注意到!etc.tar.gz 内的根⽬录 / 是被拿掉了!
范例五:将 ./mydir 内的所有文件备份下来,并且保存其权限!
root@ubuntu:~/a/path1# tar zxvpf ../mydir.tar.gz ./mydir
// 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!
范例六:在 /root/a 当中,比 2005/06/01 新的文件才备份
root@ubuntu:~/a# tar -N "2023/06/01" -zcvf a.tar.gz /root/a
范例七:我要备份 /root/a,但不要 ./mydir
root@ubuntu:~/a# tar --exclude ./mydir -zcvf a2.tar.gz ../a
范例八:将 ./mydir/c 打包后直接解开在 ./path1 底下,而不产生文件!
root@ubuntu:~/a# tree ..
...
root@ubuntu:~/a/path1# tar -cvf -../mydir/c | tar -xvf -
这个动作有点像是 cp -r ./mydir/c ./path1 dan 依旧是有其有用途的!
要注意的地方在于输出档变成 - 而输入档也变成 - ,又有一个 | 存在 这分别代表 standard output, standard input 与管线命令!
bc 指令
uname ‒r 指令 语法: uname [选项]
**功能:**uname 用来获取电脑和操作系统的相关信息。
**补充说明:**uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
• -a 或‒all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
重要的几个热键 [Tab], [ctrl]-c, [ctrl]-d • [Tab] 按键—具有『命令补全』和『档案补齐』的功能
• [Ctrl]-c 按键—让当前的程序『停掉』
• [Ctrl]-d 按键—通常代表着:『键盘输入结束 (End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代 exit
关机 语法: shutdown [选项]
常见选项:
• -h:将系统的服务停掉后,立即关机。
• -r:在将系统的服务停掉之后就重新启动
• -t sec:-t 后面加秒数,亦即『过几秒后关机』的意思
以下命令作为扩展 • 安装和登录命令 :login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
• 文件处理命令 :file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
• 系统管理相关命令 :df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
• 网络操作命令 :ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup;
• 系统安全相关命令 :passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
• 其它命令 :tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
shell 命令以及运行原理 Linux 严格意义上说的是一个操作系统,我们称之为'核心(kernel)',但我们一般用户,不能直接使用 kernel。而是通过 kernel 的'外壳'程序,也就是所谓的 shell,来与 kernel 沟通。如何理解?为什么不能直接使用 kernel?
从技术角度,Shell 的最简单定义:命令行解释器(command Interpreter)主要包含:
• 将使用者的命令翻译给核心(kernel)处理。
• 同时,将核⼼的处理结果翻译给使用者。
对比 windows GUI ,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符。或者运行起来一个应用程序)。
shell 对于 Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过 shell 解析给用户。
• 帮助理解:如果说你是一个闷骚且害羞的程序员,那 shell 就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的 MM 小花。你看上了小花,但是有不好意思直接表⽩,那就让你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的 bash。
Linux 权限的概念
Linux 下有两种用户:超级用户(root)、普通用户。 • 超级用户:可以再 linux 系统下做任何事情,不受限制
• 普通用户:在 linux 下做有限的事情。
• 超级用户的命令提示符是'#',普通用户的命令提示符是'$'。
命令: su [用户名]
**功能:**切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。要从普通用户 user 切换到 root 用户则使用 su root(root 可以省略),此时系统会提示输入 root 用户的口令。
Linux 权限管理
1. 文件访问者的分类(人) • 文件和文件目录的所有者:u—User(中国平民 法律问题)
• 文件和文件目录的所有者所在的组的用户:g—Group(不多说)
• 其它用户:o—Others(外国人)
2. 文件类型和访问权限(事物属性) • 文件类型:
◦ d:文件夹
◦ -:普通文件
◦ l:软链接(类似 Windows 的快捷方式)
◦ b:块设备文件(例如硬盘、光驱等)
◦ p:管道文件
◦ c:字符设备文件(例如屏幕等串口设备)
◦ s:套接口文件
• 基本权限:
◦ 读(r/4):Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
◦ 写(w/2):Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
◦ 执行(x/1):execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
◦ '—'表示不具有该项权限
文件权限值的表示方法
文件访问权限的相关设置方法
1. chmod **功能:**设置文件的访问权限
**格式:**chmod [参数] 权限 文件名
常用选项:
• R -> 递归修改目录文件的权限
• 说明:只有文件的拥有者和 root 才可以改变文件的权限
chmod 命令权限值的格式:
• 用户表示符+/-=权限字符
◦ +:向权限范围增加权限代号所表示的权限
◦ -:向权限范围取消权限代号所表示的权限
◦ =:向权限范围赋予权限代号所表示的权限
◦ 用户符号:
◦ u:拥有者
◦ g:拥有者同组用
◦ o:其它用户
◦ a:所有用户
◦ 实例:
▪ chmod u+w /home/abc.txt
▪ chmod o-x /home/abc.txt
▪ chmod a=x /home/abc.txt
• 三位 8 进制数字
◦ 实例:
▪ chmod 664 /home/abc.txt
▪ chmod 640 /home/abc.txt
2. chown **功能:**修改文件的拥有者
**格式:**chown [参数] 用户名 文件名
实例:
• chown user1 f1
• chown -R user1 filegroup1
3. chgrp **功能:**修改文件或目录的所属组
**格式:**chgrp [参数] 用户组名 文件名
常用选项:
-R 递归修改文件或目录的所属组
实例:
4. umask 功能:
• 查看或修改文件掩码
• 新建文件夹默认权限=0666
• 新建目录默认权限=0777
• 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:mask & ~umask
**格式:**umask 权限值
**说明:**将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。
实例:
• umask 755
• umask //查看
• umask 044//设置
file 指令 **功能说明:**辨识文件类型。
**语法:**file [选项] 文件或目录…
常用选项:
• -c:详细显示指令执行过程,便于排错或分析程序执行的情形。
• -z:尝试去解读压缩文件的内容。
使用 sudo 分配权限
(1)修改/etc/sudoers 文件分配文件
**格式:**接受权限的用户登陆的主机 =(执行命令的用户)命令
(2)使用 sudo 调用授权的命令
$ sudo-u root /usr/sbin/useradd u2
目录的权限 • 可执行权限:如果目录没有可执行权限,则无法 cd 到目录中.
• 可读权限:如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容.
• 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件.
于是,问题来了~~换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限.
这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?我们用下面的过程印证一下.
root@ubuntu:/home/user# chmod 0777 /home/
root@ubuntu:/home/user# ls /home/ -ld
drwxrwxrwx 3 root root 4096 Dec 2115:31 /home/
root@ubuntu:/home/user# touch /home/root.c
root@ubuntu:/home/user# ls -l /home/
total 4
-rw-r--r-- 1 root root 0 Dec 2222:19 root.c
drwxr-x--- 5 user user 4096 Dec 2217:43 user
root@ubuntu:/home/user# su user
user@ubuntu:~$ rm /home/root.c
rm : remove write-protected regular empty file'/home/root.c' ? y
user@ubuntu:~$ exit
exit
为了解决这个不科学的问题,Linux 引入了粘滞位的概念.
关于权限的总结 • 目录的可执行权限是表示你可否在目录下执行命令。
• 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目,即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
• 而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限
• 所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。
粘滞位[选学] user@ubuntu:/root$ chmod +t /home/
user@ubuntu:/root$ ls -ld /home/
drwxrwxrwt. 3 root root 40969 月 1916:00 /home/
user@ubuntu:/root$ su - litao
user@ubuntu:/root$ rm /home/abc.c
rm :是否删除有写保护的普通空文件 "/home/abc.c" ?y
rm : 无法删除"/home/abc.c" : 不允许的操作
当一个目录被设置为"粘滞位"(用 chmod +t),则该目录下的文件只能由
超级管理员删除
该目录的所有者删除
该文件的所有者删除
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online