一切皆文件
系统架构 Architect
/:根目录
/home:用户目录;自己的东西,放在自己的家目录中
/bin:二进制/可执行文件目录
/sbin:系统管理员专用的二进制/可执行文件目录;s:system
/usr/bin:用户安装的软件/可执行文件目录;usr:user
/usr/sbin:超级用户安装的软件/可执行文件目录;s:super
/etc:配置文件目录
命令格式
command [-options] [parameter]
. 区分大小写!!!
. 选项以-开头;参数不需要;[]表示可选的;选项一定在参数前面
查看命令帮助
command --help
man command
. man是manual/手册
别名
. 使用alias可以查看常用命令的别名/简写
$ alias
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias node='winpty node.exe'
操作小贴士
. 命令补全:输入开头部分字母,按tab自动补全
. 历史命令:利用↑、↓方向键选择历史命令
. CTRL+c返回命令状态
. 更多使用,请查看帮助
. Found a swap file by the name "xxxxxx.swp":文件操作不当,如强行关闭terminal,会有一个后缀为.swp的隐藏文件存在。利用ls -a查看并删除对应的隐藏文件
pwd 输出/查看当前绝对目录
cd 更改/切换工作目录
mkdir 创建目录
rmdir 删除工作目录
pwd
. Print Working Directory
. 输出/查看当前绝对目录
. 使用最多;没有之一
$ pwd
/d/gl/C
cd
. Change Directory
. 更改/切换工作目录
cd . 切换到当前目录
cd .. 切换到上级目录
cd - 在最近两次工作目录之间切换
cd ~ 切换到家目录/用户主目录
$ cd ~/Desktop/:切换到用户主目录下某个文件夹
mkdir
. make directory
. 创建工作目录;不允许同名
-p 嵌套创建
$ mkdir -p a/b/c/d
rmdir
. Remove
. 删除工作目录,要求非空
-r 强制删除目录,不管是否为空
ls 显示文件列表
touch 创建文件
rm 删除文件
cp 复制文件
mv 移动文件
cat 查看文件内容
ls
-l long:长文件信息/显示详细信息
-a all:所有文件,包括隐藏文件/文件夹[以.开始]
-h 更加直观的显示文件大小
-R recursion递归显示
. 显示当前或指定目录文件列表
. 选项可以组合使用,如-l -h可以简化为-lh;注意先后顺序
. 配合通配符更加高效
* 任意个数的字符
? 任意一个字符
[abc] 匹配abc中任意一个字符
[a-b] -表示范围;匹配a到b中任意一个字符
$ ls *3.txt//显示以3结束的所有txt文件
$ ls *3.*//显示以3结束的所有文件,类型不限
$ ls ?2?.txt//文件名中间是2,长度为3的txt文件
$ ls ?[123]?.txt//文件名中间是1或2或3,长度为3的txt文件
$ ls ?[1-9]*.txt//文件名第2位是1-9某个数字的所有txt文件
touch file_name
. 新建文件:文件不存在,则创建;文件存在,修改最近访问时间
. 也可以使用 vim 直接创建并打开编辑
. Linux系统中,文件的后缀名不是很关键;部分版本会要求确定的后缀,否则无法识别,如.c文件
. 鸿蒙系统的碰一碰
rm file_name
. Remove
. 删除文件,不能恢复哦!!!
[]删库跑路
$ rm -rf /*
-f 强制删除,不给任何提示,即使不存在也会执行删除操作[简单粗暴型]
cp src dest
. 拷贝copy源文件/目录到目标位置
. 需要2个参数;第一个参数src为源文件,第二个参数dest为目标文件
. 通常会带上相应的目录;如果复制时不想改文件名字,只需指定目标目录
. 复制文件并不能改变文件的权限属性
-i information,如果有同名文件,则给出提示
-r 递归复制目录以及其中的内容,相当于整体复制文件夹
$ cp 123.txt ../b/321.txt:拷贝到上级目录下的b目录,并更改名字
$ cp 123.txt ../b:拷贝到上级目录下的b目录,不更改名字
$ cp -r ./b a/c:拷贝当前目录下目录b的内容到a目录里的c目录下;如果c目录不存在,则创建;如果c存在,则拷贝到c目录下
mv src dest
. 移动move源文件src到目标位置[文件];通常会带上相应的目录
. 移动文件的同时可以更改文件名
. 也可以重命名目录/文件
-i information,如果有同名文件,则给出提示
$ mv b/112.txt .:移动b目录的112.txt到当前目录
$ mv b/122.txt 221.txt:移动b目录的122.txt到当前目录并改名221.txt
$ mv -i 112.txt 114.txt:带上-i参数避免同名覆盖
$ mv b bb:目录改名
$ mv a.txt b.txt:文件改名
cat file_name
. concatenate/catch
. 查看文件内容、创建文件、追加内容等
-n 显示行号,包括空行
-b 仅非空行显示行号
$ cat 121.txt:显示文件121.txt内容
tree 树型显示
more 显示更多
grep 过滤
echo 输出
>/>> 重定向
| 多级过滤
tree
. 树型显示当前或某个工作目录
. 如果不支持,请根据提示安装:sudo apt install tree
-d 只显示目录
more file_name
. 内容较多时分页显示
. 配合以下热键控制显示效果
. 选项同man
. git shell不支持more
. 类似的还有 less,并不完全加载,而是看到哪里加载到哪里;适合动态查看大文件,如:追小说
. 更多查看文件方法,请查阅 headtail
space 每按一次显示下一屏
enter 每按一次显示下一行
b 每按一次回滚一页
f 每按一次前滚一页
q 退出
grep
. 以高亮的形式显示文件中含有特定内容的行;相当于查找/搜索
-n 匹配行并显示行号
-v 排除内容,即:不包括指定内容的行,相当于取反搜索
-i 忽略大小写
^a 以a开头的行
a$ 以a结束的行
$ grep as 112.txt:搜索文件中包含as的行
$ grep -vn as 112.txt:搜索文件中的不包括as的行并显示行号
$ grep -n ^as 112.txt:搜索文件中以as开头的行并显示行号
$ grep -n as$ 112.txt:搜索文件中以as结束的行并显示行号
echo msg
. 在终端输出内容
. 原样输出,不会计算
. 多空格只会保留一个,所以输出字符串时,请使用""
-e escape;在串中使用转义符
$ echo 5*5
$ echo -e "123\t234\t45"
$ echo $//查看系统变量
$ echo $USER//查看系统用户变量
>/>>
. 重定向,重新指定结果去向
. 将原本在终端显示的结果追加或覆盖到指定文件中,用于保存结果
. 如果文件不存在,则创建;可以不用空格分隔;相比touch创建文件,更加方便、直接
$ echo hi,there > 221.txt:覆盖文件内容
$ echo hi,there >> 221.txt:追加文件内容
$ ls -lh > 112.txt:将查看的结果放到文件中
$ tree >> 112.txt:将查看的结果追加到文件中
|
. 管道
. 将一个命令的输出,作为另一个命令的输入,相当于多级过滤
. 通常配合more和grep命令使用
$ ls -lha ~ | grep cc:在显示主目录的结果中查找包含cc的行
$ ls -lha ~ | more:分屏显示主目录结果
[] 查看IP地址
概述
. 安全考虑,针对不同的用户,文件有不同的权限
. 对于用户:文件所有者、组用户、其它用户
. 对于文件:读/打开、写/修改[不代表删除。用户对文件所在目录有写的权限才可以删除]、运行/执行文件[前提是该文件是可执行文件]
. 对于目录:读/查看/打开、写/删除/修改、执行/目录切换
目录 拥有者权限/权重 U 组权限/权重 G 其它用户权限/权重 O
- | d | l r w x r w x r w x
d:目录 4 2 1 4 2 1 4 2 1
查看权限
使用 ll 或 ls -l 查看文件详细信息
. 0:目录
. 1-3:拥有者权限:创建者;通常称 U:user
. 4-6:组权限:组里的用户;通常称 G:group
. 7-9:其它用户权限;通常称 O:other
. 10:硬链接数:访问的方式有多少种;如果是文件夹,指的是子文件夹的个数
. 11:拥有者名称/文件属主:修改所有者,请使用 chown 命令
. 12:组名称/文件属组:修改组,请使用 chgrp 命令
. 13:文件大小;目录显示为0
. 14:文件创建/最后一次访问时间
. 15:文件/目录名称:普通文件:白色;可执行文件:绿色;文件夹:蓝色
[]查看某个目录下的文件信息并分析每个数据项的含义
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rwxrwxr-x  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
修改权限 chmod
方式1:直接使用权限
chmod [ugoa][-+=][rwx] file
- 减少权限
+ 增加权限,之前没有
= 赋予权限;没有体现的就是-
u 所有者
g 用户组
o 其它用户
a 所有用户[默认]
. 权限变更时;文件图标/颜色有相应的变化
. 复制文件并不能改变文件的权限属性
[]修改a.out的权限[7、14、21、28]
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rwxrwxr-x  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
cnplaman@pla:~/Desktop$ chmod g-rwx a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rwx---r-x  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
cnplaman@pla:~/Desktop$ chmod o+w a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rwx---rwx  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
cnplaman@pla:~/Desktop$ chmod u=r-- a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-r-----rwx  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
cnplaman@pla:~/Desktop$ chmod o=rw a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-r-----rw-  1 bt bt 15960 12月 25 09:58 a.out
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
方式2. 使用权限对应的权重组合进行修改
chmod [421] file
1 001 --r
2 010 -w-
3 011 -wr
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx
. 省略了对ugoa的引用
. 常用组合:777、700、644
[]接上例
cnplaman@pla:~/Desktop$ chmod 777 a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rwxrwxrwx  1 bt bt 15960 12月 25 09:58 a.out*
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
cnplaman@pla:~/Desktop$ chmod 644 a.out
cnplaman@pla:~/Desktop$ ll
total 28
drwxr-xr-x  2 bt bt  4096 12月 25 10:00 ./
drwxr-x--- 14 bt bt  4096 12月 25 09:58 ../
-rw-r--r--  1 bt bt 15960 12月 25 09:58 a.out
-rw-rw-r--  1 bt bt    75 12月 25 09:57 demo.c
修改所有者 chown
chown [owner]:[group] file
. 更改文件的属主
. 可以同时修改文件的属组
. root或拥有sudo权限的用户才可以执行
[]修改a.out的属主
cnplaman@pla:~/Desktop$ chown plaman a.out 
chown: changing ownership of 'a.out': Operation not permitted
cnplaman@pla:~/Desktop$ sudo chown plaman a.out
...
-rwxrwxr-x  1 plaman   cnplaman 16000 12月 25 14:36 a.out*
...
cnplaman@pla:~/Desktop$ sudo chown bt:bt a.out
...
-rwxrwxr-x  1 bt       bt       16000 12月 25 15:21 a.out*