目录切换 cd
# 切换到根目录
cd /
# 切换到根目录的usr目录
cd /usr
# 返回上一级目录
cd ..
cd ../
# 切换到home目录
cd ~
# 切换到上次访问的目录
cd -
目录查看 ls [-a]
# 查看当前目录下的所有目录和文件
ls
# 查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -a
# 列表查看当前目录下的所有目录和文件
ls -l
# 查看指定目录下的所有目录和文件
ls /dir
创建目录 mkdir
# 当前目录创建名为mydir的目录
mkdir mydir
# 指定目录usr下创建名为mydir的目录
mkdir /usr/mydir
# 使用-p参数创建多级目录
mkdir -p father/son/grandson
删除目录 rm
# 删除名为mydir的目录,需要加'-f'参数
rm -f mydir
# 忽略提示删除
rm -rf mydir
复制目录
# 复制目录需加'-r'参数,表示递归复制。将father目录复制到family目录
cp -r father family
删除目录
# 删除目录也需要加'-r'参数,删除mydir这个目录
rm -r mydir
搜索目录
# find 目录 参数 文件名称
# 查找/usr/temp下以'a'开头的文件或目录
find /usr/temp -name 'a*'
查看当前所在目录
pwd
创建文件
# 创建名为test的文件
touch test
# 创建一个名为file.txt的文件
touch test.txt
复制文件
# 复制test的文件到mydir目录中
cp test /home/mydir
删除文件
# 删除test文件
rm test
# 忽略提示删除test文件
rm -f test
移动文件
# 将test文件移动到mydir目录下
mv test mydir
重命名文件
# 将test改名为myfile
mv test myfile
# 将后缀为.txt改名为以 .c 为后缀的文件,'.'需要加'\'
rename 's/\.txt/\.c/' *.txt
查看文件
# 查看test文件
cat test
# 查看test文件,-n显示行号
cat -n test
# 百分比显示查看文件
more test
# 翻页查看
less test
# 查看文件的第一行,-n接行数
tail -n 1 test
查看文件的类型
# Linux中根据内容识别类型,而不是后缀,无内容为空文件
file test.txt
编辑文件
# 使用vim编辑器编辑文件
vim test.txt
打印文件内容
cat filename
变更文件所有者
#切换到 lilei 用户,然后在 /home/lilei 目录新建一个文件,命名为 test
su - lilei
pwd
touch test
# 显示文件大小,并以普通人类能看懂的方式呈现
ls -alh test
# 变更文件test所有者为zhangsan
sudo chowm zhangsan test
修改文件权限
# r w x(读、写、执行) -> r*2^2 + w*2^1 + x*2^0
# 666->读、写、不执行
# 777->读、写、执行
# 修改为读写,不具有执行权限 rw-rw-rw=666
chmod 666 file
查看当前用户
who am i
创建用户
# 创建一个叫lilei的用户
sudo adduser lilei
删除用户
# 删除用户及其工作目录
sudo deluser lilei --remove-home
切换登录用户
# 切换到root用户,原来路径
su
# 切换到root用户,root路径
su -
# 切换到用户lilei
su -l lilei
用户权限
# sudo授予用户root权限
su -l lilei
sudo ls
为用户添加密码
# 为用户lilei添加密码
passwd lilei
修改用户密码
# 修改root用户密码
passwd
# 修改用户lilei密码
passwd lilei
# 锁定用户lilei不能更改密码
# -l 参数来锁定
passwd -l lilei
# 清除lilei用户密码
# 清除一个用户的密码 用参数-d
passwd -d lilei
# 查询用户lilei密码状态
passwd -s lilei
新建用户组
# 新建用户组test
groupadd test
查看用户组
# groups命令查看lilei所在用户组
groups lilei
# 查看用户及分组
cat /etc/passwd
# 查看现有用户组
cat /etc/groups
修改用户组
# 修改用户组名group1为group2
groupmod -n group1 group2
设置某个用户所在组
# -g|--gid,修改用户的gid,该组一定存在
usermod -g 用户组 用户名
# 把用户添加进入某个组
# -a|--append,把用户追加到某些组中,仅与-G选项一起使用
# -G|--groups,把用户追加到某些组中,仅与-a选项一起使用
usemod -a -G 用户组 用户名
# 使用 usermod 命令可以为用户添加用户组
groups lilei
# 将lilei添加到sudo用户组
sudo usermod -G sudo lilei
删除用户组
# 使用groupdel删除用户组
# root用户或具有sudo权限的用户执行
sudo groupdel group_name
压缩包文件格式
Windows: *.zip
,*.7z
Linux: *.zip
,*.7z
, **.rar
,*.gz
,*.xz
,*.bz2
,*.tar
等等
zip
压缩文件
# 使用zip打包文件夹test
# -r为递归打包包含子目录的全部内容,-q为安静模式,-o表示输出文件
cd /home/test
zip -r -q -o test.zip /home/mydir
# -e参数加密压缩
zip -r -e -o test.zip /home/mydir
unzip
解压缩文件
# 解压到当前目录
unzip test.zip
# -q安静模式,解压到指定目录
unzip -q test.zip -d mydir
# 不解压只查看压缩包的内容
unzip -l test.zip
# 解压中文压缩包
unzip -O GBK 中文压缩文件.zip
tar
打包工具
tar压缩
# 打包test文件
# -P:保留绝对路径
# -c:创建一个tar包
# -f:指定创建文件名
cd /home/test
tar -P -cf test.tar /home/mydir
tar解压
# 解包一个文件(-x参数)到指定路径的已存在目录(-C参数)
mkdir mydir
tar -xf test.tar -C mydir
# -t参数,只查看不解包
tar -tf test.tar
# 解压*.tar.gz文件,-z参数
tar -xzf test.tar.gz
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
查看PATH环境变量内容
echo $PATH
添加自定义路径到"PATH"环境变量,如果使用的环境的Shell 是 Bash,则配置文件为 .bashrc
# 查看当前系统已安装的 Shell
cat /etc/shells
添加环境变量
# 使用下面命令直接添加内容到 `.bashrc` 中
# > 以覆盖的方式重定向到一个文件中
# >> 将标准输出以追加的方式重定向到一个文件中
echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
修改和删除环境变量
# ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
mypath=$PATH
echo $mypath
mypath=${mypath%/home/lilei/mybin}
# 或者使用通配符,*表示任意多个字符
mypath=${mypath%*/mybin}
# 删除一个环境变量
unset mypath
使环境变量立即生效
cd /home/lilei
source .bashrc
# 或者 source 别名 .
. ./.bashrc
相关命令whereis
,which
,find
和locate
# 寻找find所在路径
whereis find
# 寻找ping程序的位置
which ping
# 寻找/etc/下名为interfaces的文件或目录,(sudo增加访问权限)
sudo find /etc/ -name interfaces
# 查找/etc下所有以sh开头的文件
locate /etc/sh
# 查找/usr/share/下所有jpg文件
locate /usr/share/*.jpg
查看磁盘和目录容量
# 查看磁盘容量
df
# '-h'参数,以人类可读格式展示
df-h
# 查看目录容量
du
# '-h'参数,以人类可读格式展示
du -h
# '-d'参数,查看目录的深度
# 1级目录
du -h -d 0 ~
# 2级目录
du -h -d 1 ~
查看内存使用情况
free -h
磁盘分区情况
fdisk
创建虚拟磁盘
# 使用 dd 命令创建虚拟镜像文件
# if:输入文件
# of:输出文件
# bs:指定块大小
# count:指定块数量
# 从/dev/zero设备创建一个容量为256M的空文件
dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img
# 使用mkfs命令格式化磁盘
sudo mkfs.exit virtual.img
# 使用mount命令挂载磁盘到目录树
# mount [options] [source] [directory]
sudo mount
mount -o loop -t ext4 virtual.img /mnt
# 查看硬盘分区表信息
sudo fdisk -l
# 使用fdisk为磁盘分区
sudo fdisk virtual.img
# 使用 losetup 命令建立镜像与回环设备的关联
sudo losetup /dev/loop0 virtual.img
# 使用 mkfs 格式化各分区
# 先安装kpartx工具
sudo apt-get install kpartx
sudo kpartx -av /dev/loop0
# 格式化,我们将其全部格式化为 ext4
sudo mkfs.ext4 -q /dev/mapper/loop0p1
sudo mkfs.ext4 -q /dev/mapper/loop0p5
sudo mkfs.ext4 -q /dev/mapper/loop0p6
# 格式化完成后在 /media 目录下新建四个空目录用于挂载虚拟磁盘
mkdir -p /media/virtualdisk_{1..3}
# 挂载磁盘分区
sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1
sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2
sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3
# 查看
df -h
help
,man
,info
命令
# 简要帮助信息
ls --help
# 更为详细的帮助信息
man ls
# 完整帮助信息
info ls
添加计划
# 启动crontab
sudo cron -f &
crontab -e
# 可选择vim添加命令
# * * * * * command
# 分 时 日 月 周 命令
# 第1列为分:用*或者*/1表示
# 第5列为周:0~6,0表示星期天
# 每分钟执行date命令
*/1 * * * * date >> root/date.txt
# 每周三、周日的2 : 30重启apache。
30 2 * * 3,0 service httpd restart
# 在/home/mydir目录下每分钟创建一个以年月日时分秒为名字的空白文件
*/1 * * * * touch /home/mydir/$(date + \%Y\%m\%d\%H\%M\%S)
查看计划
crontab -l
监测计划
ps aux | grep cron
删除计划
crontab -r
顺序执行 ;
sudo apt-get update;sudo apt-get install some-tool
选择性执行&&
,前面命令执行结果返回0则执行后面的
which cowsay>/dev/null && cowsay -f head-in ohch~
||
前面命令执行结果不为0才执行后面的
which cowsay>/dev/null || echo "cowsay has not been install"
cut命令
# 打印 /etc/passwd 文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录
cut /etc/passwd -d ':' -f 1,6
# 打印/etc/passwd文件中每一行的前N个字符
# 前五个(包含第五个)
cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
cut /etc/passwd -c 5-
# 第五个
cut /etc/passwd -c 5
# 2 到 5 之间的(包含第五个)
cut /etc/passwd -c 2-5
grep命令,在文本中查找匹配字符串
# 搜索/home/shiyanlou目录下所有包含"shiyanlou"的文本文件
# 并显示出现在文本中的行号
# -r:递归搜索子目录
# -n:打印匹配项行号
# -I:忽略二进制文件
grep -rnI "shiyanlou" ~
# 查找指定ssh服务进程
ps -ef | grep sshd
wc命令,计数工具
# 显示/etc/passwd中的行数
wc -l /etc/passwd
# 单词数
wc -w /etc/passwd
# 字节数
wc -c /etc/passwd
# 字符数
wc -m /etc/passwd
# 最长行字节数
wc -L /etc/passwd
sort排序命令
# 默认为字典排序
cat /etc/passwd | sort
# 按特定字段排序
# -t参数,指定分割符为':'
# -k参数:字段号,指定对哪个字段进行排序
cat /etc/passwd | sort -t ':' -k 3
uniq去重命令
uniq
查看系统关键信息
top
所有进程信息
ps aux
查看占用CPU最多的进程
ps aux --sort=-%cpu | head
进程相关性
pstree
# -u:同时列出每个 process 的所属账户名称
# -p:同时列出每个 process 的 PID
pstree -up
结束进程
# 使用 9 这个信号强制结束 gedit 进程
# kill pid-> pid:进程号
kill -9 1608
软件安装
# 安装w3m(命令行简易网页浏览器)
sudo apt-get install w3m -y
# 重新安装w3m
sudo apt-get --reinstall install w3m -y
软件升级
# 更新软件源
sudo apt-get update
# 升级没有依赖问题的软件包
sudo apt-get upgrade
# 升级并解决依赖关系
sudo apt-get dist-update
软件卸载
# 卸载w3m
sudo apt-get remove w3m
软件搜索
# 搜索w3m
sudo apt-get search w3m
使用dbkg本地安装deb软件包
# 使用dpkg安装
sudo dpkg -i emacs24_24.5+16ubuntu1.1_amd64.deb
# 解决本地安装包的依赖关系
sudo apt-get update
sudo apt-get -f install -y
查看已安装软件包的安装目录
sudo dpkg -L emacs24
# 日志一般存放在 /var/log
ll /var/log
# 查看日志
sudo cat /var/log/apt/history.log
# 删除日志
sudo rm /var/log/apt/history.log
系统基本信息
uname
CPU详细信息
lscpu
内存使用情况
free
系统实时进程状态
top
网络接口信息
ipconfig
网络连接相关信息
netstat
磁盘分区信息
fdisk
磁盘使用情况
# '-h'参数,以人类可读形式
df -h
系统主机名等信息
hostnamectl
关机
# 立刻关机
shutdown -h now
# 5分钟后关机
shutdown -h 5
# 立刻关机
poweroff
重启
# 立刻重启
shutdown -r now
# 5分钟后重启
shutdown -r 5
# 立刻重启
reboot
清屏
# ctrl + l
登录服务器
# 用户名@服务器IP地址或主机名
ssh username@server_ip_address
# '-p'参数指定端口号
ssh -p 2222 [email protected]
查看服务器信息,如果用的是NVIDIA的GPU
nvidia-smi
使用xshell软件ssh,上传本地文件到服务器
# 选择本地文件上传到服务器
rz
# 如果没有则安装lrzsz
yum -y install lrzsz
# 检查是否安装成功
rpm -qa lrzsz
cmd打开本地命令行
将本地文件上传到Linux
# 选择本地文件上传到服务器
# 远程主机用户名@ip:需要上传到主机的路径
scp /User/pc/Desktop/test.png root@192.169.1.1:/root
# 上传本地文件夹
scp -r /Users/pc/Desktop/test root@192.168.1.1:/root
将服务器上的文件传输到本地
# scp 远程主机用户名@ip:服务器上存放文件的路径 下载到本地的文件路径
scp root@192.168.1.1:/root/test.png /user/pc/Desktop
# 传输服务器的文件夹
scp -r root@192.168.1.1:/root/test /Users/mac/Desktop
cmd打开本地命令行
将本地文件/文件夹上传到Linux
# 1、建立sftp连接,sftp 用户名@服务器IP地址
sftp username@ip
# 2、查看本地路径
lpwd
# 显示远端路径
pwd
# 3、本地上传文件到服务器
# put 本地文件路径 目的主机路径
put D:/text.txt /home/test/
# 将本地的D:/目录下面的text.txt文件上传到远程服务器的/home/test目录下
sftp> lcd D:/
sftp> cd /home/test
sftp> put text.txt
下载服务器文件/文件夹到本地
# 建立sftp连接,sftp 用户名@服务器IP地址
sftp username@ip
# 将远程服务器的/home/test目录下面的log文件夹下载到本地服务器的D:/test目录下
# get 远程路径/文件名 本地路径
sftp> cd /home/test
sftp> lcd D:/test
sftp> get -r log
复制:ctrl + shift + c
粘贴:ctrl + shift + v
中断运行程序:Ctrl + c
退出当前shell命令行,如果是切换过来的用户,则执行这个命令回退到原用户:Ctrl + d
1、下载cmake包,输入指令解压缩
sudo tar -zxvf cmake-3.8.2.tar.gz
2、进入解压缩的后的文件夹
sudo ./bootstrap
sudo make
sudo make install
3、查看是否安装成功
cmake --version
1、新建目录hello, 依次创建文件main.c, CMakeLists.txt, build目录
2、main.c文件代码如下
#include
int main(void){
printf("Hello\n");
return 0;
}
3、CMakeLists.txt 文件代码如下
CMAKE_MINIMUM_REQUIRED(VERSION 3.8) #cmake最低版本需求,不加入此行会受到警告信息
PROJECT(HELLO) #项目名称
AUX_SOURCE_DIRECTORY(. SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST
ADD_EXECUTABLE(hello ${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)
4、进入build目录
cmake ..
make
./hello
Anaconda软件
查看当前已有环境
conda info -e
创建环境
conda create -n name python=3.5
激活环境
# 激活环境
source activate name
# 或者
activate name
查看已有库和安装新库
# 查看已有库和安装新库
conda list
conda install numpy
退出当前环境
conda deactivate
删除已创建的环境
# name可以通过conda info e-查看
conda remove -n name
cmake-3.8.2.tar.gz
2、进入解压缩的后的文件夹
```shell
sudo ./bootstrap
sudo make
sudo make install
3、查看是否安装成功
cmake --version
1、新建目录hello, 依次创建文件main.c, CMakeLists.txt, build目录
2、main.c文件代码如下
#include
int main(void){
printf("Hello\n");
return 0;
}
3、CMakeLists.txt 文件代码如下
CMAKE_MINIMUM_REQUIRED(VERSION 3.8) #cmake最低版本需求,不加入此行会受到警告信息
PROJECT(HELLO) #项目名称
AUX_SOURCE_DIRECTORY(. SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST
ADD_EXECUTABLE(hello ${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)
4、进入build目录
cmake ..
make
./hello
Anaconda软件
查看当前已有环境
conda info -e
创建环境
conda create -n name python=3.5
激活环境
# 激活环境
source activate name
# 或者
activate name
查看已有库和安装新库
# 查看已有库和安装新库
conda list
conda install numpy
退出当前环境
conda deactivate
删除已创建的环境
# name可以通过conda info e-查看
conda remove -n name