#
超级用户权限$
普通用户date
cal
df
free
exit
系统程序安装目录/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
忽视不存在的文件,覆盖-i
ln file link
创建硬链接ln -s file link
创建软连接which
显示一个可执行程序的位置help
显示shell内建命令的帮助文档--help
显示用法信息man
显示程序手册页alias name='string'
type name
alias foo='cd /etc;ls;cat passwd'
unalias foo
ls -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 022
ps
top
jobs
bg
fg
kill
killall
shutdown
…未完待续
上一篇:Netty学习笔记1
下一篇:java的remove方法