基础命令
1.shell窗口(终端)
1.1 我们先从Hello world! 开始
$ echo Hello world!
将会把Hello,打印在终端屏幕上。
1.2查看一个文件
$ cat file1
- 查看一个文件
- 也可以一下看多个文件
1.3 标准输入输出
- Ctrl + d 终止一个没有输入命令行
- Ctrl + c 终止一个命令无论有输入还是没有输入
1.4 基础命令
1.4.1 ls
$ ls -a -l -h
- a是看隐藏文件
- l是变成列表形式
- h是更好的看大小
1.4.2 cp
$ cp file1 file2
$ cp file1 file2 dir
- 复制一个或多个文件到某一个地方去
1.4.3 mv
$ mv file1 file2
$ mv file1 file2 dir
- 移动一个或多个文件到某一个地方去
1.4.4 touch
touch file
- 创建一个文件(如果已有文件则会更新该文件)
1.4.5 rm
$ rm file -r -f
- 删除文件
- r 是彻底删除 用来删除有文件的文件夹
- f 是强制删除
1.4.6 echo
$ echo Hello again!
- 是一个标准的输出
1.4.7 cd
cd file
- 进入该文件夹,更改你当前的工作目录
1.4.8 mkdir和rmdir
- -p 递归创建
- -v 显示创建完成
$ mkdir file1
$ mkdir file1/file2/file3 -vp
$ rmdir file2
- 高级
- 创建多个分支结构的文件夹,并且用tree查看
$ mkdir -vp shiyanlou/{lib/,bin/,doc/{info,product}}
$ tree shiyanlou/
- 创建一个空文件夹
- 删除一个空文件夹
2.1 shell 通配符
- *是一个或多个任意字符
- ?是一个任意字符
- 要想打一个真正的 * 号,需要‘ * ’,用单引号,来引起来
2.2 中间命令
2.2.1 grep
- 就是查看文件中匹配的行
$ grep root /etc/passwd
- 查看passwd中有root的行
- 重要参数
- -i 忽略大小写 -v 是匹配反转
- 在grep 中 .* 表示匹配多个字符 . 表示匹配一个字符 [相当于正则表达式]
2.2.2 查看文件less
$ grep ei /etc/passwd | less
- b 上一屏
- 空格 下一屏
- q 退出
2.2.3 pwd
- 查看当前目录
2.2.4 diff
- 比较文件的不同
$ diff file1 file2
2.2.5 file命令
- 查看文件格式 可以一下查看多个
$ file file
2.2.6 find 和locate 命令
- 在两个命令中如果你想用通配符,必须用一对单引号来包围住星号
- -name 是通过文件的名字来寻找的
- -print 是打印出来
$ find dir -name file -print
$ locate /etc/sh
- locate是通过索引查找不常用
- locate 搜索/etc中以sh开头的文件
2.2.7 head和tail 命令
$ head file
$ tail file
- -n 设置显示行数
- +n 从第几行开始显示
2.2.8 sort 命令
$ sort file -r -n
- -r 是反转
- -n 是排序那些按照数字开头的文件
2.3 更改密码
$ passwd
2.4 dot文件
- 以点开头的文件就是dot文件 (隐藏文件)
- ls -a 可以查看隐藏文件
2.5 环境变量和shell变量
- shell变量
- 上边分别是赋值和打印 打印的时候一定要有 $
$ shell1=‘Hello shell!’
$ echo $shell1
- shell 变量针对当前的shell程序,而环境变量可以被所有的Linux的进程使用
- 如果想使一个shell变量变成环境变量就要
$ export shell1
2.6 命令路径
- 查看路径 不同路径使用:分离
$ echo $PATH
- 临时添加一个路径 关闭之后就非常恢复到以前的时候了
$ PATH=dir:$PATH
- 将路径加入到最前面
$ PATH=$PATH:dir
- 将路径加入到最后面
2.7 特殊字符
字符 | 名称 | 用途 |
---|---|---|
* | 星号 | 通用字符 |
. | 句点 | 当前目录 |
! | 感叹号 | 历时命令,逻辑非运算符 |
| | 管道 | 命令管道 |
/ | 斜线 | 目录分隔符 |
\ | 反斜线 | 常量,宏 |
$ | 美元符号 | 变量符号,行尾 |
‘ | 单引号 | 字符串常量 |
` | 反引号 | 命令替换 |
“ | 双引号 | 半字符串常量 |
^ | 脱字符 | 逻辑非运算符,行头 |
~ | 波浪字符 | 逻辑非运算符,目录快捷方式 |
# | 井号 | 注释,预处理,替换 |
[ ] | 方括号 | 范围 |
{ } | 大括号 | 声明块,范围 |
_ | 下划线 | 空格的简易替代 |
- 注解 控制键,我们通常用^表示,如^C代表CTRL-C
2.8 命令行编辑
按键 | 操作 |
---|---|
CTRL-B | 左移光标 |
CTRL-F | 右移光标 |
CTRL-P | 查看上一条命令(等于上移光标) |
CTRL-N | 查看下一条命令(等于下移光标) |
CTRL-A | 移动光标至行首 |
CTRL-E | 移动光标至行尾 |
CTRL-W | 删除前一个词 |
CTRL-U | 删除至行首 |
CTRL-K | 删除至行尾 |
CTRL-Y | 粘贴已删除的文本 |
2.9 文本编辑器
- 如果你想要一个万能的,在哪里都可以用的请试试Emacs
- 如果你想要一个快捷高效的,请试试vim
2.10 获取在线帮助
- man 手册
$ ls man
- 利用搜索引擎
2.11 shell 的输入输出
- shell 的输出默认是在终端,你可以使用重定向字符 > :
$ command > file
- 这个会先清空文件,如果想要防止被清理可以使用-C
- 重定向追加
$ command >> file
- 使用两个 >> 符号就可以了
- 使用管道命令将输出指向另一个命令
$ head /proc/cpuinfo | tr a-z A-Z
2.12 标准错误输出
- 在重定向中 > 是重定向标准输出的 2> 是重定向标准错误输出的
$ ls /asdfklajsdlf > f
- 这样将会在你的终端屏幕上报错
$ ls /aksdlfja;f 2> f
- 这样将会把你的错误信息,重定向到你的f文件中
2.13 标准输入重定向(了解)
- 基本上不常用 ,因为没有<符号,我们的
$ head < /proc/cpuinfo
2.14 后台进程
- 你想在终端解压一个文件,但是你还不想等待,你就需要把解压的进程分配到后台了
$ gunzip file.gz &
- CTRL+L 清空屏幕
- CTRL+U 清空当行
2.15 用户权限
- 使用ls -l 查看
- 除第一位,
- 前三位代表这用户的权限 u
- 中间是组的权限 g
- 最后是其他人的权限 o
- 每一位的意义
- r 文件可读
- w 文件可写
- x 文件可执行
- - 无
2.16.1 更该文件权限
- 给其他用户和组内的人加上可读的权限
$ chmod go+r file
2.16.2 软链接(符号链接)
- 相当于Windows中的快捷方式
2.16.3 创建一个软链接
- 使用ln -s来创建一个软链接
$ ln -s target linkname
- ! 运行这个命令时请反复确认target 和 linknam这两个参数的位置是否一样
- target 是要指向的目标路径,linkname 是符号链接的名称
- 注意: target的路径一定要是绝对路径
- 注意: 不要忘记-s -s 是创建软链接用的,没有-s就是创建硬链接
2.17 归档和压缩文件
2.17.1 gzip命令
- 压缩 gzip file
- 解压 gunziip file.gz
- 注意他只能压缩单个文件
2.17.2 tar命令
- 压缩文件
$ tar cvf archive.tar file1 file2 …
- 解压文件
$ tar xvf archive.tar
- 压缩是cvf,解压是xvf
2.17.3 压缩归档文件 (.tar.gz)
- 先gunzip解压一次,再tar解压一次而已
$ gunzip file.tar.gz
$ tar xvf file.tar
2.18 linux目录结构基础
- /bin 目录中放的是可执行文件,包括大部分基础命令(ls、cp),和一些shell脚本
- /dev 设备文件
- /etc 重要的系统配置文件(如用户密码,启动文件,设备,网络等等)
- /home 用户个人文件
- /lib可执行程序使用的各种代码库
- /proc 是一个伪文件系统,它只存在内存当中,而不占用外存空间。(我也不太清楚)
- /sys 类似于proc目录,里面是设备和系统的信息
- /sbin root用户的可执行文件
- /tmp 无关紧要的临时文件
- /usr 存放这许多linux的系统文件
- /var 是程序运行时信息存放的地方(如系统日志,用户信息,缓存)
2.18.1 root目录下的其他目录
- /boot 存放内核加载文件,在linux第一次启动时才出现,并且而后不会更改了
- /media 加载可移除设备,比如可移动硬盘
- opt 存放第三方软件
2.18.3 内核位置
- linux 系统的内核通常在/valiumz 或者 /boot/vmlinuz 中
2.20 以超级用户的身份运行命令
- su 命令 输入密码就能启动 root 命令行,但是有几个缺点
- 必须输入root密码
- 无法访问普通的shell环境
- 对上述命令的用户身份没有记录
- 对更改系统的命令没有记录信息
2.20.1 sudo命令
- sudo pacman -S XXXX
- 运用一次管理员身份去运行一个命令
2.20.2 /etc/sudoers
- 更改配置文件使一些用户不用输入超级用户的密码,以超级用户的权限运行命令
User_Alias ADMINS = user1,user2
ADMINS ALL = NOPASSWD:ALL
root ALL=(ALL)ALL
- 给用户组起别名
- 赋值给他们权限
- root用户能够在任何主机上执行任何命令