Linux命令行基础
操作系统小知识
现代操作系统通常都有一个使用绘图设备的图形用户界面(GUI),并附加如鼠标或触控版等有别于减半的输入设备。旧的OS或性能导向的服务器通常不会有如此亲切的接口,而是以命令行界面(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的壳,其功能为接受并处理用户指令(例如按下一个按钮,或在命令提示列上键入指令)
shell入门
一切都是文件
在Linux系统中,一切都是文件。对于Linux来说,文件只是比特和字节流。Linux并不关心这些二进制和字节最终组成了什么格式;相反,在Linux上运行的程序才关心它们组成的格式。
文件名的最大长度
Linux(和�Unix)文件名最多可以长达255个字符。事实上,将文件名的长度控制在80个字符以内比较好,因为大部分显示终端都是这个宽度,文件名能在一行显示完,不用换行。
文件名区分大小写
与Windows和Mac OS不同,Linux对于文件名是区分大小写的。区分大小写也意味着必须准确输入命令和文件名。例如,如果要运行rm命令来删除文件,就不要输入RM,Rm或者rM,只能输入rm。
命名时不要使用的特殊字符
在Linux中能够安全使用的字符:数字,字母(大写字母和小写字母),圆点(.),以及下划线(_)。键盘上的有些其他字符也可以正常使用;有些虽然能够使用,但实际情况则比较复杂,因为shell对它们的解释方法可能各不相同;而还有一些则根本不能使用。
如果你愿意,也可以在文件名中使用空格,如books to buy.txt,但是必须得让shell知道这些空格是文件名的一部分。shell通常是将空格作为参数之间的分隔符。试图直接删除books to buy.txt会让shell产生误解,它尝试先删除名为books的文件,然后删除名为to的文件,最后删除名为buy.txt的文件。最终的结果是你不能删除books to buy.txt这个文件,反而可能无意间删除那些原本不想删除的文件。
符号 | 使用方法 |
---|---|
/ | 绝对不能使用。不能被转义 |
\ | 必须转义。避免使用 |
- | 不能作为文件名或者目录名的开始 |
[ ] | 必须转义。避免使用 |
{ } | 必须转义。避免使用 |
* | 必须转义。避免使用 |
? | 必须转义。避免使用 |
' | 必须转义。避免使用 |
" | 必须转义。避免使用 |
通配符及其含义
通配符 | 含义 |
---|---|
* | 匹配0或多个任意字符 |
? | 匹配单个字符 |
[ ] | 可以匹配一组单个字符(例如,[12]) ,或者是匹配用连字符("-")指定的某一范围内的字符(例如,[1-3]) |
基本命令
命令 | 作用 |
---|---|
ls | 列出文件和文件夹 |
ls music(也可写其他文件名) | 列出其他文件名的内容 |
ls ~/videos/*.wmv | 使用通配符列出文件夹的内容 |
ls -R | 查看多个子目录的内容 |
ls -l | 以单独一列显示内容 |
ls -m | 用逗号分隔的列表显示内容 |
ls -a | 查看隐藏的文件和文件夹 |
ls -F | 显示文件的类型 |
ls -l | 显示权限、所有者等详细信息 |
ls -r | 以相反的顺序显示列表内容 |
ls -X | 按文件的拓展名排序 |
ls -t | 按日期和时间排序 |
ls -S | 按文件的大小进行排序 |
ls -h | 用K,M和G显示文件大小 |
pwd(print working directory) | 显示当前目录的路径 |
cd | 切换到不同的目录 |
cd ~ | 切换到home目录 |
cd - | 切换到以前的目录 |
touch | 将文件时间修改为当前时间,若文件不存在,它将会使用你指定的文件名来生成一个空文件 |
mkdir | 创建新的目录 |
mkdir -p | 创建新目录和任何必要的子目录 |
cp | 复制文件 |
cp * | 使用通配符复制文件 |
cp -v | 复制文件时显示执行过程 |
cp -i | 防止复制时覆盖重要的文件 |
cp -R | 复制目录 |
cp -a | 复制文件到其他目录以作为完整备份 |
mv | 移动和重命名文件 |
rm | 删除文件 |
rm * | 使用通配符一次删除多个文件 |
rm -v | 删除文件时显示执行过程 |
rm -i | 防止删除重要文件 |
rmdir | 删除空目录 |
rm -Rf | 删除文件和非空的目录 |
参考资料
[操作系统-维基百科]https://zh.wikipedia.org/wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F)
图书《Linux命令速查手册》 作者 : Scott Granneman