Linux基础命令与常用命令汇总
基础命令
0 快捷键
打开终端: Ctrl+Alt+T
终端内复制/粘贴:Ctrl+Shift+C Ctrl+Shift+V
自动补全命令:Tab
超级权限文件管理系统:sudo nautilus
查看 ip:ip addr show
或ifconfig
重启计算机:reboot
1 文件系统命令
ls命令
命令格式:ls
意义:ls是 list 的缩写,即列表的意思,用于列出目录下的文件。
ls -a # 列出文件下所有的文件,包括以“.“开头的隐藏文件,..代表存在着父目录。
ls -l # 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等。
ls -F # 在每一个文件的末尾加上一个字符说明该文件的类型。
# "@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。
ls -s # 在每个文件的后面打印出文件的大小。size(大小)
ls -t # 按时间进行文件的排序。Time(时间)
ls -A # 列出除了"."和".."以外的文件。
ls -R # 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现。
ls -L # 列出文件的链接名。Link(链接)
ls -S # 以文件的大小进行排序
除此之外,ls
命令也可以用来统计文件或文件夹数量:
# 查看当前目录下的文件数量(不包含子目录中的文件)
ls -l|grep "^-"| wc -l
# 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录
ls -lR|grep "^-"| wc -l
# 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R
ls -l|grep "^d"| wc -l
# 查询当前路径下的指定前缀名的目录下的所有文件数量
# 例如:统计所有以“20161124”开头的目录下的全部文件数量
ls -lR 20161124*/|grep "^-"| wc -l
统计完数量应该也想查看一下目录的占用空间以及每个子目录的大小:
du -sh # 查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -sh * # 查看当前目录下各个文件及子目录占用空间大小
Linux下文件的一些文件颜色的含义:
绿 色---->代表可执行文件
红 色---->代表压缩文件
灰 色---->代表其它的一些文件
深蓝色---->代表目录
浅蓝色----->代表链接文件
cd命令
命令格式:cd 路径
意义:cd是change directory 的缩写;cd命令后面跟一个路径,用于切换当前用户所在的路径,其中路径可以是绝对路径也可以是相对路径。
示例:
cd /system/bin # 表示切换到/system/bin路径下。
cd logs # 表示切换到当前文件夹logs路径下。
cd / # 表示切换到根目录。
cd ../ # 表示切换到上一层路径。
cd ../.. # 返回上两级目录
cd # 表示切换到主目录或 cd ~
cd - # 返回上次所在的目录
此外可以用 pwd
命令查看当前路径。
如果需要经常查看/media/hrain/固态2
里的内容,一种优雅的方式是输入:
export CDPATH=/media/hrain/固态2
这样,系统在当前路径下找不到目录时会到/media/hrain/固态2
路径下寻找。
mkdir命令
命令格式: mkdir 文件夹
意义:mkdir是make directory 的缩写。用于创建文件夹。创建文件夹前需保证当前用户对当前路径有修改的权限。
示例:
mkdir /data/path # 在/data路径下创建path文件夹。
mkdir Projects/HRain Test/BFish # 同时创建两个
mkdir -p a/b/c # 参数 -p用于创建多级文件夹
# 这句命令表示在当前路径下创建文件夹a, 而a文件夹包含子文件夹b,b文件夹下又包含子文件夹c。
cp命令
命令格式: cp 文件 目标文件
或者cp -r 文件夹 目标文件夹
意义:cp是 copy 的缩写。用于复制文件或文件夹。
示例:
cp /data/logs /data/local/tmp/logs # 复制/data路径下的logs到/data/local/tmp路径下。
cp 1.sh /sdcard/ # 复制当前路径下的1.sh到/sdcard下。
mv命令
命令格式: mv 文件/文件夹 目标文件夹
意义:mv是 move 的缩写。用于移动文件或文件夹。
示例:
mv ~/sdxx HRain/ # 移动主目录下的sdxx到当前文件夹下的路径HRain下。
mv file1 file2 file3 -t ~/Projects/HRain/ # 将多个文件移动到主目录/Projects/HRain下
mv *.py directory # 将所有 .py 文件移动到目录
find命令
命令格式: find 目录 -name 目标文件/文件夹
意义:搜索文件或文件夹。
示例:
find / -name file1 #从 '/' 开始进入根文件系统搜索文件和目录
find /home/user1 -name \*.bin # 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 # 搜索在过去100天内未被使用过的执行文件
此外,搜索文件还有locate
、whereis
、which
命令:
locate \*.ps # 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt # 显示一个二进制文件、源码或man的位置
which halt # 显示一个二进制文件或可执行文件的完整路径
rm命令
命令格式: rm 文件
或 rm -r 文件夹
意义:rm是 remove 的缩写。用于删除文件或文件夹,常用参数-r -f
,-r
表示删除目录,也可以用于删除文件,-f
表示强制删除,不需要确认。同样的,删除文件前需保证当前用户对当前路径有修改的权限。
示例:
rm -r path # 删除path。
rm test.txt # 删除test.txt。
一种千万不可敲的命令(会删掉整个系统):rm -rf /*
cat命令
命令格式: cat 文件
意义:cat是concatenate 的缩写。表示读取文件内容及拼接文件。
示例:
cat /sys/devices/system/cpu/online # 读取 /sys/devices/system/cpu/路径下online文件内容。
cat test.txt # 读取当前路径下test.txt文件内容。
2 解包/打包/解压/压缩
ZIP
Zip可能是目前使用得最多的文档压缩格式。它最大的优点就是可以在不同的操作系统平台,比如Linux, Windows以及MacOS上使用。缺点是压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。
压缩一个目录:zip -r archive_name.zip directory_to_compress
解压一个zip文档:unzip archive_name.zip
TAR
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,但仅仅只是一个打包工具,并不负责压缩。
打包一个目录:tar -cvf archive_name.tar directory_to_compress
解包一个文档:tar -xvf archive_name.tar.gz
上面这个解包命令将会将文档解开在当前目录下面。当然,也可以设置解包的路径:
tar -xvf archive_name.tar -C /tmp/extract_here/
此外,tar.gz 格式在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率;tar.bz2 格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。
下面是常见压缩包格式的解包与打包:
格式 | 解压/解包 | 压缩/打包 |
---|---|---|
.tar | tar xvf FileName.tar |
tar cvf FileName.tar DirName |
.gz | gunzip FileName.gz |
gzip FileName |
.tar.gz | tar zxvf FileName.tar.gz |
tar zcvf FileName.tar.gz DirName |
.bz | bzip2 -d FileName.bz |
null |
.tar.bz | tar jxvf FileName.tar.bz |
null |
.bz2 | bzip2 -d FileName.bz2 |
bzip2 -z FileName |
.tar.bz2 | tar jxvf FileName.tar.bz2 |
tar jcvf FileName.tar.bz2 DirName |
.Z | uncompress FileName.Z |
compress FileName |
.tar.Z | tar Zxvf FileName.tar.Z |
tar Zcvf FileName.tar.Z DirName |
.tgz | tar zxvf FileName.tgz |
null |
.tar.tgz | tar zxvf FileName.tar.tgz |
tar zcvf FileName.tar.tgz FileName |
.zip | unzip FileName.zip |
zip FileName.zip DirName |
.rar | rar a FileName.rar |
rar e FileName.rar |
.lha | lha -e FileName.lha |
lha -a FileName.lha FileName |
3 线程进程命令
kill命令
命令格式:kill PID码
意义:结束当前进程
示例:
先通过输入命令 ps au
查看进程,找到需要终止进程的PID再通过 kill PID
即可,如我这里想要终止的进程是 vim test.py
,查到的PID是3163,我们可以输入 kill 3163
结束这个程序,如果结束不了,可以通过 kill -9 PID
码强制结束,即 kill -9 3163
。
常用命令一:shell
待补充
常用命令二:git
安装与配置
# 安装
sudo apt install git
git --version # 查看版本
# 配置用户名和邮箱
git config --global user.name "填写自己的用户名"
git config --global user.email "填写自己的邮箱"
git config --list # 查看是否正确配置
然后需要创建一个 ssh key,这个实际上就是一个将你的电脑和 github 账号联系在一起的密钥,这样以后就可以十分方便的通过 git 上传你的代码。获取密钥的方法如下:
cd ~/.ssh # 第一次配置会显示没有那个文件或目录,这是正常现象
ssh-keygen -t rsa -C "你的邮箱地址" # 然后连续按三下回车
cd ~/.ssh
gedit id_rsa.pub # 打开创建的秘钥文件
复制id_rsa.pub
里面的内容,然后登录你的github来添加这个密钥。登录github后找到SSH and GPG keys这个选项(在Settings里面),然后点击网页右上角的New SSH key进行添加。具体细节如下图:
点击New SSH keys后界面如下图所示,这里的Title是让你给你的密钥起一个名字,随便起一个就行,然后把你刚刚复制的密钥填写在下边的大框里,点击 Add SSH keys 即可。
下载仓库
当我们想要从github上面拉取代码时,就需要使用clone操作,现在我们看看怎么进行clone,其实很简单,只需要输入 git clone 地址
,示例如下(建议新开一个终端):
git clone git@github.com:HRain1016/Faster-RCNN-tf.git
会下载到终端中当前文件夹下。
此外,建议使用仓库的 SSH 地址,不然上传的时候每次都需要 github 用户名与账号。
上传本地仓库
- 首先在 github 新建一个仓库,例如 test 。注意最好不要创建README。
- 在本地创建同名文件夹 test 。
mkdir test
cd test
然后在 test 文件夹添加一个 hello.txt 。
- 上传到远程仓库。
git init # 初始化仓库
git add . # 将test文件夹下所有文件添加到暂存区,git add hello.txt 只添加hello.txt
git commit -m "first commit" # 提交到仓库,后面是提交说明
# 将本地仓库链接到远程仓库,一个本地项目可以同时拥有好几个远程仓库,主要的称为 origin,注意使用 SSH 地址
git remote add origin git@github.com:HRain1016/test.git
git push -u origin master # 推送到仓库,origin表示远程仓库,master表示本地仓库。
如果git远程地址配错了,再次配置提示以下错误:
fatal: 远程 origin 已经存在
此时只需要将远程配置删除,重新添加网址并推送即可。
git remote rm origin
如果出现:
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 ‘git pull …’)。
提示:详见 ‘git push –help’ 中的 ‘Note about fast-forwards’ 小节。
可以强行更新:
git push -u origin +master -f # 慎用,强行将本地分支覆盖远程分支
更新本地仓库
一般使用 pull 指令:
git pull origin master # 从远程服务器获取更新,与本地合并
也可以使用 fetch:
git fetch origin master # 从远程的 origin 仓库的 master 分支下载代码到本地
git log -p master.. origin/master # 比较本地仓库和远程仓库的区别
git merge origin/master # 把远程下载下来的代码合并到本地仓库
以上 fetch 的三行代码,等同于 pull 的一行代码。
常用命令三:vim
通常用命令行打开文本文件,比如用命令:gedit、more、cat、vim、less
;
打开其他格式文件时,比如pdf、jpg、mp3格式文件,可以使用 xdg-open
。