Linux 命令行基础知识
什么是命令行?
要了解命令行,首先就需要知道命令行界面,命令行界面也称为CLI,与之相对的是图形用户界面 即GUI 。GUI 以图形可视化的方式显示了计算机操作用户界面,可以通过简单的鼠标操作 完成打开文件夹,创建文件,浏览网页等功能 。但是,在windows 操作系统问世前,所有的让计算机执行的命令都需要通过CLI 来完成 ,也就是说,我们现在在windows 上 日常完成的操作功能 都可以通过命令行来完成,或者更准确的说,命令行 和 图形界面 是先来后到的关系,图形界面 是为了 让用户更简单地完成 原本需要使用命令行来完成的对电脑的操作。为什么要学习命令,甚至是Linux命令?
通常,CLI 被认为 没有 GUI 那么方便用户操作。因为,用户需要去记忆一些简单到复杂的命令。但是从性能上来考虑 命令行界面要较图形用户界面节约计算机系统的资源。在熟悉基本的命令后,使用命令行速度都要较图形用户界面操作速度要快一些。另外,图形化操作方式 对单一的客户端计算机操作友好,但是如果面对的是一群客户端计算机,图形化操作方式 则力不从心,但是命令行界面提供的脚本语言以及宏可以提供自动化系统的管理能力,这一点也是命令行操作的优势。即便是windows 依然保留下了命令行的操作并且在windows系统不断升级的过程中 也加强了操作命令的功能和数量 。那么为什么要去学习Linux 命令呢?
我个人的理解有如下几点:
1:Linux 命令 要比 windows命令更优秀,这一点毋庸置疑。
2:学习好Linux 命令 为后续学习Linux 铺垫了基石。只要从事软件开发工作,Linux是一道绕不过去的坎。
3:为了酷或者引用下Linus Torvalds 本人那句话"Just for fun"。准备工作
我本人使用windows已经有20多年,从未接触过Linux 。虽然可以直接安装一个Linux操作系统 但是我个人采用了循序渐进的方法,并推荐以下两种方式:
1:在windows 系统下安装 gitbash 。
2:安装虚拟机,下载一个Linux镜像文件(推荐deepin)教程会后续提供。-
推荐书籍及相关文档
1:explainshell
explainshell 是学习Linux 基本命令的网站,使用方法简单在输入框中 输入Linux 命令 就可以进行解析。
如 输入命令:cd
通过expainshell 的解释翻译 可以知道 change the working directory 就是 cd 在Linux 命令行中的意义,即:改变工作区目录
2:鸟哥的Linux私房菜基础学习篇
这本书,暂且还没有买,当然也没看过。但是写在这里,也是提醒自己以后回顾自己的文章时, 可以不忘初心,坚持下去。
所有的东西已经准备就绪的话,就从简单的Linux 命令开始吧!
- 简单的 Linux 命令行操作
./ ../ 和 ~
/ :Linux 中 / 代表的含义时目录级别分隔符
. :Linux中 . 代表的含义是当前目录
./a.txt:Linux中 ./a 代表的含义是当前目录下 文件名为a.txt的文件
..:Linux中 .. 代表的含义是上级/父级 目录
~:Linux中 ~代表的含义是家目录 windows 家目录为:/c/Users/用户名cd
进入目录。
explainshell 解释:
change the working directory
举例:cd ~/Desktop
命令解释:进入到桌面pwd
显示当前目录。
explainshell解释:
print name of current/working directory
举例:pwd
mkdir 目录名 和 mkdir -p 目录名
mkdir
:创建目录
explainshell 解释:
make directories
mkdir 可以同时创建多个文件夹 文件夹和文件夹之间使用空格连接
举例:mkdir test1 test2 test3
命令解释:在当前目录下 创建了三个目录(文件夹)分别是 test1,test2和test3
mkdir -p
:创建目录(包含子目录)
explainshell 解释:
make directories
-p, --parents
no error if existing, make parent directories as needed
举例:mkdir -p "test/test1/test2"
命令解释:在当前目录下创建test目录 test目录下创建 test1 目录 test1 目录下创建test2目录 这里面的 "" 书写是非必须的 但是建议添加 因为,如果在路径中出现一些非法字符 如 空格 则会出现和预想不一样的情况
例如:mkdir -p test/ test1/test2
注意,我在test/后面添加了一个空格,这时会出现一个情况 在当前目录下 创建了两个目录 test 和 test1 而在test1 目录下创建了子目录 test2
如果使用 双引号 :mkdir -p "test/ test1/test2"
即便在test/后面加上空格 也会成功创建test目录下包含test1,test1目录下包含test2的这种形式。ls 路径 ,ls -a 路径 ,ls -al 路径
查看路径下的文件
explainshell 解释:
ls:
list directory contents
-a, --all
do not ignore entries starting with .
-l use a long listing format
举例:ls
命令解释:查看当前路径下除了以. 开头的所有文件和文件夹
举例:ls /d/test
命令解释:查看d盘test目录下 所有的非.开头的所有文件和文件夹
举例:ls -a
命令解释:查看当前路径下 所有的文件和文件夹 (包括.开头的所有文件及文件夹)
举例:ls -l
命令解释:查看当前路径下 所有的非.开头的文件和文件夹详细信息
详细信息的两种格式分别为:
drwxr-xr-x 1 user 197609 0 10月 28 00:05 test/
或者为
-rw-r--r-- 1 user 197609 19 10月 28 18:21 test.txt
我对上述的信息了解程度仅仅在以下几个方面:
1:d开头的表示这是一个文件夹 -开头的则表示这是一个文件
2:d 和 - 后面表示的是当前用户的权限 为 r(读) w(写) x(可执行)
在后面的逐渐学习中,我会对此部分知识点有所补充
echo 和 touch
echo 的具体解释:有道echo解释(实在不知道怎么解释,例子写的比较清楚)
explainshell 解释 :
display a line of text
举例:echo "我爱中国"
返回结果我爱中国
举例:echo "我爱中国" > test.txt
命令解释:创建文件 test.txt 并且将 "我爱中国" 写入到 test.txt中
举例:echo "我是一个中国人" >> test.txt
命令解释:将"我是一个中国人" 追加到 test.txt 文件中
touch
创建文件并改变文件的更新时间
explainshell 解释:
change file timestamps
举例:touch test.txt
命令解释:创建test.txt文件如果 test.txt文件已存在 则改变其最后一次修改的时间
查看最后一次修改的时间可以通过命令ls -l
来进行查看cp 源路径 目标路径 ,cp -r 源路径 目标路径
cp
复制文件或目录
explainshell 解释:
copy files and directories
举例:
依次执行下列命令
mkdir test1 test2
cd test1
echo "1" > test1.txt
cd ../
cp test1/test1.txt test2/test2.txt
执行下列命令后,会在test2 目录下 看到创建的test2.txt文件 并且 文件内容与test1相同为 "1"
举例:
依次执行下列命令
mkdir test1
cd test1
echo "1" > test1.txt
cd ../
cp -r test1 test2
示例中的 -r命令的含义为:
explainshell: cp -r
-R, -r, --recursive
copy directories recursively
即 递归 涉及到目录(文件夹)的操作都需要进行递归
执行示例中的操作完毕后,返回到 test1的同级目录 会看到 test2目录
test2目录下 有和test1 目录下相同的文件 tes1.txt
- mv 源路径 目标路径
重命名(移动节点)
explainshell 解释:
move (rename) files
依次执行下列命令
mkdir test1 test2
cd test1
echo "1" > test1.txt
cd ../
mv test1/test1.txt test2/test2.txt
执行示例中的操作完毕后,相当于 将test1目录下的test1.txt 剪切到 test2文件夹 并重命名为 test2.txt
rm
rm 为 删除操作(remove)
explainshell 解释:
remove files or directories
具体操作有:
1:rm 文件路径 (删除文件)
2:rm -f 文件路径(强制删除文件)
3:rm -r 目录路径(删除目录)
4:rm -rf 目录路径(强制删除目录)
举例:rm test.txt
命令解释:删除当前目录下的test.txt文件
举例:rm -f test.txt
命令解释:
explainshell:rm -f
-f, --force
ignore nonexistent files, never prompt
f 代表 force 强制的含义 即强制删除 test.txt文件
举例:rm -r test
命令解释:-r 上文已经有所解释 为 递归 该命令的含义为:删除test目录及目录下所有文件
如果 被删除的目录下有其他文件 执行rm -r
会出现提示 ,但是 我在执行此条语句时 则没有出现 任何提示。
举例:rm -rf test
命令解释:强制删除test目录及目录下所有的文件tree 查看目录结构
windows 下 不支持tree操作, 如果需要windows支持tree操作则需要下载 一个插件
tree插件 建议安装在 C:\GnuWin32 下 然后将C:\GnuWin32\bin 添加到 windows系统环境变量的path 下
如果 安装了gitbash 可以直接依次运行命令:
touch ~/.bashrc
echo 'export PATH="$PATH:/c/GnuWin32/bin/"' > ~/.bashrc
tree 命令
举例:
依次执行下列命令
mkdir test
cd test
mkdir -p "test1/test2"
mkdir -p "test3/test4"
cd test1/test2
echo "1" > test2.txt
cd ../../
tree
执行 tree命令后 可以观察到所在当前的目录 test 目录下的 目录结构为:
.
|-- test1
| `-- test2
| `-- test2.txt
`-- test3
`-- test4
- cat
查看文件内容
explainshell 解释:
concatenate files and print on the standard output
举例:cat Hello.java
该命令会将文件中的内容打印并显示
$ cat Hello.java
public class Hello{
public static void main(String[]args){
System.out.println("Hello World");
}
}
- df -kh , du -sh ,du -h
df -kh
查看磁盘的占用情况
explainshell 解释:
report file system disk space usage
-k like --block-size=1K
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)du -sh, du-h
du -sh :
查看当前目录大小
du -h
查看各文件大小
explainshell 解释:
estimate file space usage
-s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)