文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。
资料仅供学习交流使用。
作者:Aliven888
shell : 是一个程序,他在用户和操作系统提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的shell把命令转化成指令代码发送给操作系统。
Shell提供了很多高级特性,使得用户和操作系统之间的交互变得简单而高效。
绝对路径 : 是从linux根目录“/” 开始的路径。例如:/home/work。
相对路径 : 从当前目录下开始的路径。例如:work/test/。
. : 表示当前目录。例如: ./test 表示当前目录下test目录
.. : 表示前一级目录。例如: ../test 表示与当前目录同一级的test的目录。
pwd : 显示当前所在的位置,即当前的工作目录。
格式:
pwd
举例:
pwd : 显示当前的工作目录。
cd : 指令表示切换文件夹(跳到指定的文件下)
格式:
cd + 空格 + 路径
举例:
cd ~ : 切换到主目录,比如是user用户,则切到 /user下。
cd /test : 切换到目录test下。
cd test :切换到当前目录下的test目录下。
cd / : 切换到跟目录。
cd .. : 切换到当前目录的上一级。
cd ../.. :切换到当前目录的上二级(上上级)目录。
cd 'test project' : 切换到名称为 test project 的文件夹中(名称中带空格)。
注意:
在shell中, “..”表示当前目录的上一级,“.”则表示当前目录。而“~”表示用户主目录,这个符号通常在键盘 Esc 按键的下方。
ls : 打印列出当前目录下的所有文件(不包含子文件夹中的内容)
格式:
ls + 空格 + [option] + [目录/路径]
举例:
ls : 列出当前目录下的所有文件(带后缀)以及文件夹名。
ls A* : 列出当前目录下以字母 A 开头的所有文件(带后缀)以及文件夹。
ls -l *.txt : 列出当前目录下后缀名是 txt 的所有文件。
ls -F : 列出当前目录下所有文件以及文件夹,并在文件夹后面添加 /, 而文件依旧显示文件名(带后缀)。可以用于区分文件与文件夹。
ls -l : 查看当前目录下的文件以及文件的属性(包含文件的可读写属性,编辑时间,内存大小,编辑用户等信息),可以简写为 ll 指令。
ls -a /home : 显示home目录下的所有文件(带后缀)以及文件夹,包含隐藏的文件。
注意:
ls 的指令是可以合并使用的,比如ls –la , ls –aF 等,功能是叠加的。
option可选参数如下:
-A 列出所有文件,包含隐藏文件
-l 列表形式,包含文件的绝大部分属性
-F 显示当前目录下的文件以及文件夹(目录),并在文件夹(目录)后添加 “/”
-R 递归显示
--help 此命令的帮助
dir : 列出当前目录下的所有文件(带后缀)以及文件夹。
格式:
dir
举例:
dir : 列出当前目录下的所有文件(带后缀)以及文件夹。
vdir : 列出当前目录下所有文件以及文件夹的属性信息,相当于ls -l 。
格式:
vdir
举例:
vdir : 列出当前目录下所有文件以及文件夹的属性信息。
cat : 用于查看文件的内容(通常是一个文本文件);文件的内容会一次性的显示出来,文件内容比较多时,不便于阅读。其还有一个作用就是用于文件内容合并(拷贝)。
格式:
cat + 空格 + [option] + 文件名(带后缀) //打开文件
cat + 空格 + 文件1 + 空格 + 文件2 + 空格 + > + 空格 + 文件3 //先清空文件3,然后把文件1/2的内容依次拷贝进去。
cat + 空格 + 文件1 + 空格 + 文件2 + 空格 + >> + 空格 + 文件3 //不会清空文件3,直接把文件1/2的内容依次拷贝到文件3已有内容的后面。
option可选参数如下:
-n 显示文本内容的行号。
举例:
cat text.txt : 查看文件text.txt的内容。
cat -n text.txt : 查看文件text.txt的内容,并在每一行前显示行号。
more : 用于查看文本文件的内容,和cat相比,more会一页一页的显示,并在当前页的最后一行显示百分比,表示当前阅读的进度。
格式:
more + 空格 +文件名(带后缀)
按键操作:
Enter键 :向下滚动一行。
空格键:向下滚动一页。
Q键:表示退出more指令。
举例:
more text.cpp : 用于查看text.cpp文本文件的内容。
less : 用于查看文本文件内容,和more相比功能更强大;在more指令的基础上添加了可编辑功能。
格式:
less + 空格 + 文件名(带后缀)
按键操作:
空格键:向下翻页。
B 键:向上翻页。
↑↓←→键 : 光标向上,下,左,右移动。
Q 键:退出less指令。
举例:
less text.cpp : 用于查看text.cpp文本文件的内容。
head : 显示文件的头几行内容。默认显示前10行。
格式:
head + 空格 + [option] + 空格 + 文件名(带后缀)
option可选参数如下:
-num : 显示文本内容的行号。
举例:
head -20 text.txt : 显示text.txt文件的前20行文本内容,
tail : 显示文件的后几行内容。默认显示前10行。
格式:
tail + 空格 + [option] + 空格 + 文件名(带后缀)
option可选参数如下:
-num : 显示文本内容的行号。
举例:
tail -20 text.txt : 显示text.txt文件的后20行文本内容。
mkdir : 在当前目录下创建文件夹,一次可以创建1个或者多个。
格式:
mkdir + 空格 + 文件夹名 [ + 空格 + 文件夹名 … ]
举例:
mkdir test1 test2 : 在当前目录下创建test1 和test2文件夹。
mkdir 'test project' : 在当前目录下创建名字为test test的文件夹(文件夹名称中带有空格)。
mkdir test/test1 : 在当前目录下的子级目录test下创建test1文件夹(注意 :此时子级目录test必须是存在的,否则该指令执行失败)。
mkdir -p test/test1 : 在当前目录下的子级目录test下创建test1文件夹(注意 :此时如果子级目录test不存在的,否则该指令会先依次创建子级目录test,然后再创建test1)。
rmdir : 该指令用于删除目录(文件夹)。当前目录(文件夹)必须为空才可以使用该指令删除。
格式:
rmdir + 空格 + [目录(文件夹名)]
举例:
rmdir test : 删除文件夹test。
注意:
1、目录(文件夹)为执行该指令会失败,因此使用该指令时,需要先清除该目录下的所有文件以及文件夹。因为rmdir的这一局限性,导致该指令很少被用,反而功能更强大的rm(下面有介绍)很受欢迎。
touch : 在当前目录下创建一个或者多个文件。
格式:
touch + 空格 + 文件夹名 [ + 空格 + 文件夹名 … ]
举例:
touch text1.txt text2.txt :创建文件text1.txt 和 text2.txt。
touch 'text name.txt' : 创建名称为 text name.txt 文件(名称中带空格)。
rm : 用于删除一个或者多个文件(包含目标路径下的全部文件及文件夹,是一种递归删除)。
格式:
rm + 空格 + [option] + 空格 + [文件/文件夹名 … ]
举例:
rm text.txt : 删除当前目录下的text.txt文件。
rm *.txt : 删除当前目录下以“.txt”为后缀名的全部文件。
rm -i text.txt : 删除当前目录下的text.txt文件,在删除前,系统会询问用户是否执行删除操作,如果回答“y”表示确认删除;“n”则表示跳过该文件。
rm -r test/ : 遍历删除当前目录下子级目录test下的全部文件和文件夹。
注意:
1、通过该指令被删除的文件将永远的从系统中消失,而不会被放在几个被称为“回收站”的临时目录下。
2、使用rm指令时应该格外小心些,特别是以root权限操作时。因为文件彻底删除的特性,往往会导致一些惨痛的教训。
vi/vim : 编辑文本文件。
格式:
vi/vim + 空格 + 文件
编辑操作:
i 键 : 表示在当前光标前面插入。
a 键 :在当前光标后面进行插入。
o 键 :另起一行进行插入。
A (shift + a) : 在当前行尾插入。
I (shift + i) : 在当前行首插入。
O (shift + o) : 在当前行上面插入一行进行内容插入。
Page Up & Page Down : 键可以上下翻页。
Esc键 : 退出当前编辑模式。
:x : 删除当前字符。
:dd : 删除当前行。
:u : 恢复前一步操作。
:p : 复制之前删除的行。
:wq: 退出当前编辑并保存。
:q!: 退出当前编辑,不保存本次编辑内容。
:set nu : 显示行号。
:set nonu : 取消显示行号。
gg : 调到文件首行。
G(Shift + g) : 调到文件的最后一行。
nG : 调到第 n 行
:n : 调到第 n 行。
:$ : 移至尾行。
:0 : 移至首行。
h : 左移一个字符。
j : 下移一个字符。
k : 上移一个字符。
l : 右移一个字符。
H(shift + h) : 移至屏幕上端。
M(shift + m) : 移至屏幕中央。
L(shift + l) : 移至屏幕下端。
//删除指令
x : 删除光标所在处的字符。
nx : 删除光标所在处后面的 n 行。
dd : 删除光标所在的行。
ndd : 删除光标所在行后面的 n 行。
:m,nd : 删除指定范围的行(eg:1,4d - 删除1,2,3,4这四行)。
dG : 删除光标所在行到末尾行的内容。
D : 删除当前行光标位置到行尾的内容。
举例:
vi/vim file.txt : 编辑当前路径下file.txt文件。
vi/vim /bin/file.txt : 编辑当前自己下路径下file.txt文件。
grep : 有时候我们并不需要查文件的全内容,此时就可以根据该指令包含查询信息的一行或者多行。
格式:
grep + 空格 + [option] + 空格 + 查询信息(条件) + 文件
举例:
grep 1111 text.txt : 在文件中查询包含“1111”文本的一行或者多行。
mv : 用于移动文件或者文件夹。重名时将会覆盖目标路径下的原有文件。所以 mv 指令也可以称为重命名指令。
格式:
mv + 空格 + 文件/文件夹 + 空格 + 目录
option 可选参数如下:
-v : 显示移动/重命名过程。
举例:
mv file.txt bin/ : 将当前目录下的file.txt文件移动到bin目录下。
mv test/ bin/ : 将当前目录下的test文件夹移动到bin目录下。
注意:
1、 如果目标目录下有同名的文件或者文件夹,将会被迁移进来的文件或者文件夹覆盖。
cp : 用来赋值文件或者文件夹。默认情况下cp命令会跳过文件夹(目录),此时就可以使用-r指令实现递归拷贝,将文件夹以及其目录下的内容一起拷贝到目标路径下。
格式:
cp + 空格 + [option] + 空格 + 文件/文件夹 + 空格 + 目录
option 可选参数如下:
-a : 是指archive的意思,也说是指复制所有的目录
-d : 若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f : 强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i : 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l : 建立硬连接(hard link)的连接文件,而非复制文件本身
-p : 与文件的属性一起复制,而非使用默认属性
-r : 递归复制,用于目录的复制操作
-R :包含当前目录一起拷贝到目标文件夹中去。
-s : 复制成符号连接文件(symbolic link),即“快捷方式”文件
-u : 若目标文件比源文件旧,更新目标文件。
-v : 显示拷贝过程。
举例:
//普通拷贝复制
cp file.txt bin/ : 拷贝复制文件file.txt到目录bin下。
cp -i file.txt bin/ : 考本文件file.txt到目录bin下,在真正执行拷贝前,系统会先询问,“y”表示覆盖,“n”表示跳过该文件。
cp -r test/ bin/ : 递归拷贝test文件夹下的内容到bin目录下。
cp * /home : 把当前目录下的所有为隐藏文件都拷贝到home目录下。
cp -rf /usr /root :将 /usr 文件夹复制到 /root 文件夹下(会形成: /root/usr 文件夹)。
cp -rf /usr/** /root :将 /usr 文件夹下的全部文件复制到 /root文件夹下。 (会形成: /root/usr文件夹下的内容)
//强制拷贝覆盖、替换文件(如果目标路径有重名的,强制覆盖)
\cp src dest : 前面增加 反斜杠“\” , 表示强制覆盖文件。
\cp Hello.java World.java : 将 Hello.java 文件强制替换到 World.java下。 (相当于: World.java 删除,Hello.java 文件复制过来,改名 World.java)
\cp -rf /usr /root : 将 /usr 文件夹复制到 /root 文件夹下,遇到相同,会强制覆盖掉!
\cp -rf /usr/** /root :将 /usr 文件夹下的全部文件复制到 /root 文件夹下,遇到相同,会强制覆盖掉!
chmod : 用于改变一个文件的权限,该指令使用“用户组+/-权限”的表达方式来增加或者删除对应的权限。
格式:
chmod + 空格 + 用户组+/-权限 + 空格 + 文件
用户组:
u : 文件属主
g : 文件属组
o : 其他人
a : 所有人
权限:
r : 读取,对应数字 4
w : 写入,对应数字 2
x : 执行,对应数字 1
比如 6(4 + 2)表示读 + 写权限
7(4 + 2 + 1)表示读 + 写 + 执行权限
注意事项:
1、用户还可以通过“用户组=权限”的规则直接设置文件的权限。例如:chmod ug=rw, a=r file.txt 表示赋予属主(u)和数组(g)的读写权限和所有人(a)的读取权限。
举例:
chmod u+x file.txt : 增加了属主对文件file.txt的执行权限。
chmod o=u file.txt : 直接将属主的权限赋值给其他人,赋值后,两者的权限相同。
解读文件权限:
“-” 开头的表示文件,“d” 开头的表示文件夹(目录)
.
“rw-rw-r- -” 这九个字符每三个是一对:
前三个“rw-” 表示 拥有者 的权限
中间三个 “rw-” 表示用户组权限
后面三个 “r- -” 表示其他用户权限
password : 修改用户密码。
格式:
password + [option] + 用户名
option 可选参数如下:
-S :查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
-l :暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;
-u :解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
--stdin :可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
-n 天数 :设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
-x 天数 :设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
-w 天数 :设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
-i 日期 :设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。
su root : 切换用户到root(从root用户切换到其他用户下,不需要密码,但是由其他用户切到root下,必须要root账户的密码)。
svn checkout svn路径 : 下载svn中的代码到当前路(目录)径下(该过程需要录入svn代码)。
df : 查看磁盘使用情况(详细参见:截图1:df 指令)。df 命令会收集当前已经挂载的全部文件系统的一些重要的统计数据。显示的信息有 : 文件系统名、1K-blocks、已用、可用、已用%、挂载点等信息。
clear : 清屏(清除当前指令操作窗口的历史记录)。