Linux 常用命令
文件和目录
#--------切换--------#
cd # 返回用户目录
cd ~
cd 目标目录
cd - # 返回上次所在目录
#--------查看--------#
pwd # 显示工作目录
ls # 查看目录中的文件(目录)
ls -a # 查看目录中的所有文件(目录),包括隐藏的
ls -l # 显示文件和目录的详细内容
file 文件 # 查看文件的类型(二进制文件或文本文件)
#--------创建--------#
touch a.txt # 创建文本文件
mkdir 目录1 # 创建“目录1”
mkdir -p 目录1/目录2/目录3 # 创建一个目录树
#--------删除--------#
rm -f 文件 # 删除文件
rm -rf 目录 # 删除目录和其中的文件
#--------移动--------#
mv 目录1(文件) 目录2 # 将目录1(文件)的内容移动到目录2中
#--------拷贝--------#
cp 文件1 文件2 # 将文件1复制为文件2
cp -a 目录1 目录2 # 将目录1及其下面的文件复制到目录2中
cp -r `ls ./ | grep -v 排除目录 | xargs` 目标目录 # 将“源目录”中除了“排除目录/文件”之外的文件/目录拷贝到“目标目录”,注意先cd到源目录,方便用 grep -v 排除目录 | xargs
#--------计数--------#
ls -l | grep "^-"| wc -l # 查看某个文件夹下文件的个数。
ls -lR | grep "^-"| wc -l # 查看某个文件夹下文件的个数,包括子文件夹下的文件个数。
ls -l | grep "^d"| wc -l # 查看某个文件夹下文件夹的个数。
ls -lR | grep "^d"| wc -l # 查看某个文件夹下文件夹的个数,包括子文件夹下的文件夹个数。
ls -l | wc -l # 查看文件夹下所有的文件和文件夹。也就是统计ls -l命令所输出的行数。
#--------链接--------#
ln -s 文件(目录) lnk # 创建一个指向文件(目录)的软链接lnk
ln 文件(目录) lnk # 创建一个指向文件(目录)的物理链接lnk
#--------搜索--------#
find 搜索目录 -name 文件名(目录名) # 在“搜索目录”查找“文件名”(可以使用正则表达式)
locate 文件名 # 全局搜索
grep 内容 目录/文件 # 在“目录/文件” 中符合“内容”的文件/文本行
grep -r 内容 目录 # 在“目录”中及其子目录中递归查找包含“内容”的文件
grep -v 内容 文件 # 在“文件中”查找不包含“内容”的所有行
#--------压缩--------#
bzip2 文件 # 将“文件”压缩为“文件.bz2”,并删除“文件”
bunzip2 文件.bz2 # "文件.bz2"解压为“文件”,并删除"文件.bz2"
gzip 文件 # 将“文件”压缩为“文件.gz”,并删除“文件”
gunzip 文件.gz # "文件.gz"解压为“文件”,并删除"文件.gz"
rar a 压缩文件.rar 文件(目录) # 将“文件(目录)”压缩为“压缩文件.rar”
rar x 压缩文件.rar # 解压文件
tar -cvf archive.tar 文件 # 创建一个非压缩tarball,保留了“文件”
tar -xvf archive.tar # 释放
tar -jcvf archive.tar.bz2 文件 # 创建bzip2格式的archive.tar.bz2
tar -jxvf archive.tar.bz2 # 解压bzip2格式的archive.tar.bz2
tar -zcvf archive.tar.gz 文件 # 创建gzip格式的archive.tar.gz
tar -zxvf archive.tar.gz # 解压gzip格式的archive.tar.gz
zip -r -q 文件.zip 文件 # 将“文件”(目录:-r, 不显示)压缩成zip文件
unzip 文件.zip -d 文件 # 将“文件.zip”解压到指定文件目录下(-d)
用户管理
sudo su # 切换成超级用户
adduser 用户名 # 创建“用户名”用户,有交互信息,比较容易,默认在/home目录下
adduser 用户名 --home 指定用户目录 # 最实用
useradd # 比较复杂,能够进行详细配置
passwd 当前用户名 # 修改用户密码
userdel 用户名 # 删除“用户名”用户
userdel -r 用户名 # 删除“用户名”用户,并删除对应的用户目录
sudo usermod -d /path/to/new/home -m username # 用户目录移动,要在非移动用户的账号运行这条命令
计算机管理
#--------关机重启--------#
reboot # 重启
shutdown -h now # 立即关机
#--------磁盘管理--------#
df -h [目录] # 统计对应目录在整个磁盘上的使用量,磁盘空间不足的时候用
du -h [目录或文件名] # 统计对应目录或者文件的磁盘使用量,查看某个目录或文件大小的时候用
du -h [目录或文件名] --max-depth=1 # 查看对应目录中,磁盘空间占用情况
#--------临时挂载--------#
mount 设备文件名 挂载点 # 将“设备文件名”挂载到“挂载点”
mount -t 文件系统类型 设备文件名 挂载点 # 按“文件系统类型”将设备挂在到对应的“挂载点”上,常见类型有:ext2、ext3、iso9660
umount 设备文件名或挂载点 # 设备文件卸载
umount -f 设备文件名或挂载点 # 强制卸载
#--------开机自动挂载--------#
lsblk # 查看硬盘连接情况,查看设备名
sudo mkfs -t ext4 /dev/sdb # 格式化为ext4格式
sudo blkid # 查看对应设备的UUID
sudo vim /etc/fstab # 添加UUID=xxxxx 目标挂载路径 ext4 defaults 0 1
sudo mount -a # 刷新挂载,就能看到新硬盘了
#--------内存管理--------#
free -m # 查看内存总的使用情况
top # 查看各用户进程的cpu和内存使用情况(百分比)
#--------进程管理--------#
ps -u # 以用户的格式显示进程
ps aux | grep 进程pid # 查找特定进程pid的用户
kill 进程pid # 杀死“进程pid”
实用增强工具
#--------远程拷贝--------#
scp -r folder user_name@remote_ip:remote_folder # 将folder中的内容拷贝到远程remote_folder上
#--------虚拟终端--------#
screen -S XXX # 新建一个名为XXX的screen
screen -ls # 列出已存在的screen
exit # 关闭当前screen
screen -r XXX # 重新连接XXX screen
#--------查看打开文件--------#
lsof -p XXX # pid为XXX的进程打开了哪些文件
lsof -u username # 用户名为usename的用户打开的文件
lsof filename # 显示打开文件“filename”的进程
其他
#--------输出日志--------#
LOG="log/visualization_`date +'%Y-%m-%d-%H-%M-%S'`.log"
python densenet_visualization.py |& tee $LOG
#--------显卡状态实时更新--------#
watch -n 3 nvidia-smi
#--------终端开启自动执行命令--------#
# --- 在~/.bashrc中添加命令,如下 ---
source activate torch031
cd ~/code
#--------使用别人的python环境--------#
source /disk1/scc/anaconda2/envs/torch031