#超级用户权限$普通用户datecaldffreeexit系统程序安装目录/usr/bin
家目录~
| ~ | 家目录 |
|---|---|
| / | 根目录 |
| /bin | 系统启动和运行必须的二进制程序 |
| /boot | Linux内核、初始RAM磁盘映像和启动加载程序 |
| /dev | 设备节点,内核在此目录维护所有设备的列表 |
| /etc | 系统层面的配置文件,包含一系列的shell脚本(/etc/crontab,定义自动运行的任务)(/etc/passwd,用户账号列表) |
| /lib | 核心系统程序所使用的共享库文件(Windows中的动态链接库) |
| /media | 可移动介质的挂载点 |
| /mnt | 早些linux系统中的可移动介质的挂载点 |
| /opt | 安装可选软件 |
| /proc | 一个由Linu系统维护的虚拟文件系统 |
| /sbin | 为超级用户保留的系统二进制文件 |
| /usr | 普通用户所需要的所有程序和文件 |
| /usr/bin | 系统安装的可执行程序 |
| /usr/lib | /usr/bin中程序的共享库 |
| /usr/local | 通常由源码编译的程序回安装在/usr/local/bin下 |
| 选项 | 长选项 | 描述 |
|---|---|---|
| -a | –all | 列出所有文件(包括隐藏文件) |
| -l | 以长格式显示结果 | |
| -t | 按照修改时间排序 | |
| -h | –human-readable | 当以长格式列出时,以人们可读的方式展示 |
| -d | –directory | 可以看到目录的详细信息 |
| -r | –reverse | 以相反的顺序显示结果,ls通常是按字母升序排列 |
| -S | 按文件大小来排序 | |
| -F | –classify | 如果名字是目录名则会加上一个‘/’字符 |
打印文件内容的简单描述
页面调度器类程序
less filename
| 命令 | 行为 |
|---|---|
| PageUp、b | 向上翻滚一页 |
| PageDown、space | 向下翻滚一页 |
| UpArrow | 向上一行 |
| DownArrow | 向下一行 |
| q | 退出 |
| h | 显示帮助屏幕 |
| G | 移动到最后一行 |
| g | 移动到第一行 |
| /charates | 向前查找指定的字符串 |
| n | 向前查找下一个出现的字符串(之前指定的) |
| 通配符 | 描述 |
|---|---|
| ? | 匹配一个字符 |
| * | 匹配多个字符(0个或者多个) |
| [characters] | 匹配任意一个属于字符集中的字符 |
| [!characters] | 匹配任意一个不属于字符集中的字符 |
| [[:class:]] | 匹配任意一个属于字符类中的字符 |
| 字符类 | 描述 |
|---|---|
| [:alnum:] | 字母或数字 |
| [:alpha:] | 字母 |
| [:digit:] | 数字 |
| [:lower:] | 小写 |
| [:upper:] | 大写 |
以ls命令为例
ls *所有文件ls g*以g开头的所有文件ls g???以g开头后面紧跟三个字符的文件ls [abc]*以a或b或c开头的文件ls abs[0-9][0-9][0-9]以abc开头后面紧跟三个数字的文件[[:alpha:]]*以字母开头的所有文件[![digit]]*不是以数字开头的所有文件*[[:lower:]123]以小写字母或1或2或3结尾的文件cp file dir将文件复制到dir中
-a复制其所有权和权限-i重写已存在文件前,提示用户确认-u仅复制目标目录中不存在的文件-r递归复制目录以及目录中的内容,目录复制时使用-v显示过程-i重写已存在文件前,提示用户确认-u仅移动目标目录中不存在的文件-v显示过程-i删除已存在文件前,提示用户确认-r递归删除-v显示过程-f忽视不存在的文件,覆盖-iln file link创建硬链接ln -s file link创建软连接which显示一个可执行程序的位置help显示shell内建命令的帮助文档--help显示用法信息man显示程序手册页alias name='string'type namealias foo='cd /etc;ls;cat passwd'unalias fools -l /usr > ls_output.txt> ls_output.txt删除其中的内容,因为每次重定向都是从头写入ls -l /usr >> ls_output.txt每次重定向,续写标准输入、输出和错误, shell 内部分别将其称为文件描述符 0、 1 和 2
ls -l /bin/123 2> ls_output.txt文件描述符 “2”,紧挨着放在重定向操作符之前,来执行重定向标准错误到文件 ls-error.txt任务
ls -l /usr/bin > ls_output.txt 2>&1或者
ls -l /usr/bin &> ls_output.txt两个重定向。首先重定向标准输出到文件 ls-output.txt,然后重定向文件描述符 2(标准错误)到文件描述符 1(标准输出)使用表示法 2>&1。 顺序不能错
ls -l /usr/bin 2> /dev/null系统通过重定向输出结果到一个叫做 “/dev/null” 的特殊文件,为我们提供了解决问题的方法。这个文件是系统设备,叫做位存储桶,它可以接受输入,并且对输入不做任何处理。
cat file显示文本内容,一般用于显示简短文本cat movie.jpeg.0* >movie.jpeg,将分散的多个文本连结起来(一般都是顺序的文件,所以也会按顺序连结)cat不带参数表示从键盘的输入作为输入源,以Ctrl+d作为结束cat > cat_input.txt,将键盘的输入写入cat_input.txt中,以Ctrl+d作为结束,一般用于创建简短文件cat < test.txt将test.txt作为输入源,与cat test.txt一样的效果ls -l /usr/lib | less,将ls的输入作为less的输入进行展示ls /bin /usr/bin | sort | less,将ls的输出作为sort的输入,进行排序后的输入作为less的输入进行展示uniq 从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行
uniq 命令经常和 sort 命令结合在一起使用
ls /bin /usr/bin | sort | uniq | less,从 sort 命令的输出结果中,来删除任何重复行
如果我们想看到重复的数据列表,让 uniq 命令带上 “-d” 选项
ls /bin /usr/bin | sort | uniq -d| less
wc text.txt打印的结果分别是:行数-单词数-字节数wc text.txt -l只打印行数-n num指定打印行数tail通过加入-f可以查看实时文件,当文件更新时自动更新显示ls /usr/bin | tee ouput.txt | grep zip,将ls的输出先进行保存后再进行grep过滤处理(用于调试,将中间结果保存)echo hello打印hello
echo *shell处理的时候会将*展开后的内容打印处理
echo +通配符展示指定文件
~展开当前用户目录~+用户名展开制定用户目录花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。
花括号表达式本身可能包含一个由逗号分开的字符串列表,或者一个整数区间,或者单个的字符的区间
echo front_{1,2,3}_back
front_1_back front_2_back front_3_back
echo front_{1..5}_back
front_1_back front_2_back front_3_back front_4_back front_5_back
批量创建文件夹mkdir {2020..2023}-0{0..9} {2020..2023}-{10..12}
2020-01 2020-07 2021-01 2021-07 2022-01 2022-07 2023-01 2023-07
2020-02 2020-08 2021-02 2021-08 2022-02 2022-08 2023-02 2023-08
2020-03 2020-09 2021-03 2021-09 2022-03 2022-09 2023-03 2023-09
2020-04 2020-10 2021-04 2021-10 2022-04 2022-10 2023-04 2023-10
2020-05 2020-11 2021-05 2021-11 2022-05 2022-11 2023-05 2023-11
2020-06 2020-12 2021-06 2021-12 2022-06 2022-12 2023-06 2023-12
echo $USER用户名展开
pinrtenv查看可展开的变量
将命令作为参数展开
echo $(ls -l /usr/bin)
查看过滤后的文件的属性
file $(ls /usr/bin/* | grep zip)
如果你把文本放在双引号中,shell 使用的特殊字符,都失去它们的特殊含义,被当作普通字符来看待。有几个例外:$,\ (反斜杠),和 ‘(倒引号)
单词分割、路径名展开、波浪线展开和花括号展开都将失效
echo this is a test
this is a test
echo "this is a test"
this is a test
然而参数展开、算术展开和命令替换仍然执行
echo "$USER $((2+2))"
lux 4
禁止所有的展开
echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/lux/test.txt a b foo 4 lux
echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt {a,b} foo 4 lux
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
\转译字符,可以消除特殊字符的含义,但是在单引号中转译字符也没用
clear清空屏幕history历史命令| 快捷键 | 描述 |
|---|---|
| Ctrl+a | 移动光标到行首 |
| Ctrl+e | 移动光标到行尾 |
| Alt+f | 向前移动一个字 |
| Alt+b | 向后移动一个字 |
| 快捷键 | 描述 |
|---|---|
| Ctrl+k | 剪切光标到行尾 |
| Ctrl+u | 剪切光标到行首 |
| Ctrl+y | 粘贴到光标处 |
history查找历史命令
history | grep /usr/bin查找历史命令中与/esr/bin相关的命令
2051 file $(ls /usr/bin* | grep zip)2052 ls /usr/bin*2053 file $(ls /usr/bin* | grep x)2054 file $(ls /usr/bin* | grep zip)2069 history | gerp /usr/bin2070 history | grep /usr/bin2071 ls /usr/bin*2072 history | grep /usr/bin
! 2052即可执行对应的命令
id显示用户身份号chmod更改文件模式umask设置默认的文件权限su以另一个身份来运行shellsudo以另一个用户的身份来执行命令chown更改文件所有者chgrp更改文件组所有权ls -l test.txt
-rw-rw-r-- 1 lux lux 6 2月 20 10:55 test.txt
前10个字符解析
第一个:
| 符号 | 意义 |
|---|---|
| - | 普通文件 |
| d | 一个目录 |
| l | 一个符号链接 |
| c | 一个字符设备文件 |
| b | 一个块设备文件 |
剩余9个(文件模式):
代表着文件所有者、文件组所有者和其他人的读、写和执行权限
可以用rwx来表示,刚好三位可以用八进制表示:
7->rwx 1->x 2->w 4->r
所以之前用的chmod 777 test.txt就是将所有者、文件组所有者和其他人组的权限都设置为可读写执行
u代表文件所有者
g代表文件所属组
o代表其他所有者
chmod u+x test.txt 给文件所有者添加可执行权限
chmod u-x test.txt 给文件所有者删除可执行权限
以此类推
umask 022pstopjobsbgfgkillkillallshutdown…未完待续
上一篇:Netty学习笔记1
下一篇:java的remove方法