目录

实用的 shell 命令

在 Linux 中代表用户主目录

  • 对一般用户,~ 表示 /home/<用户名>
  • 对于root用户,~ 表示 /root
1
2
3
4
# 相当于 cd ~
cd
cd ~
pwd -P

cd

此命令代表改变目录。它在终端中改变工作目录来执行复制、移动、读、写等。

1
2
3
4
5
# 改变工作目录为用户的家目录
cd
cd ~
# 表示从当前目录切换到(当前工作目录的)父目录。
cd ..

ls

此命令是列出目录内容(List Directory Contents),可能是文件也可能是文件夹。

ls -l (long listing fashing)命令表示以详情模式列出文件夹的内容。

ls -a 命令列出文件夹里的所有内容,包括以 . 开头的隐藏文件。

1
2
3
4
5
6
7
文件属性 文件数 拥有者 所属的group 文件大小 建档日期 文件名  
drwx------ 2 Guest users 1024 Nov 21 21:05 Mail  
-rwx--x--x 1 root root 89080 Nov 7 22:41 tar*  
-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*  
lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip  
-rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh*  
-rwsr-x--- 1 root bin 9853 Aug 15 5:46 su*
  • 第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。
    • 第一个小格是特殊表示格,表示目录或连结文件等等,
      • d表示目录,例如drwx——;
      • l表示连结文件,如lrwxrwxrwx;
      • 如果是以一横“-”表示,则表示这是文件。
    • 其余剩下的格子就以每3格为一个单位。因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是:
    • rwx(Owner)r-x(Group)r-x(Other)   ​ 这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。
  • 第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。  
  • 第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。  
  • 第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。  
  • 第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。  
  • 第六个栏位,表示创建日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。  
  • 第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。

颜色特征:

  • 蓝色–>目录
  • 绿色–>可执行文件
  • 红色–>压缩文件
  • 浅蓝色–>链接文件
  • 灰色–>其他文件

mkdir

mkdir(Make directory)命令在命名路径下创建新的目录。如果目录已存在,则返回一个错误信息:cannot create folder, folder already exists.

1
mkdir -p /opt/apps/demo

目录只能在用户拥有写权限的目录下才能创建。在linux中,文件、文件夹、驱动、命令、脚本都视为文件。

touch

新建一个不存在的文件,或用来修改文件时间戳。

df du

  • df读取的是超级块的内容
  • du是将所有文件对象大小加起来
1
2
3
4
5
6
7
8
# 查看磁盘空间占用情况
df -h
# 当前目录下文件夹大小情况
cd /
du -h -x --max-depth=1

# 查看 / 占用空间
du -sh /* | sort -nr
1
2
3
# 是否删除掉的文件仍然被进程占用而没有进行实际删除
lsof | grep deleted
# 重启进程即可

alias

用来设置指令的别名

1
2
3
4
5
6
# 打印已经设置的命令别名
alias -p
# 设置别名
alias ll='ls -l --color=auto'
# 删除一个别名
unalias ll

查看系统版本

1
2
3
# CentOS Linux release 7.2.1511 (Core)
cat /etc/redhat-release
cat /etc/os-release

查看内核版本

1
2
uname -a
cat /proc/version
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 查看系统位数
getconf LONG_BIT
echo $HOSTTYPE
# 查看 CPU 的详细信息
cat /proc/cpuinfo
# 查看 CPU 名称
grep "model name" /proc/cpuinfo | cut -f2 -d:
# 查看核心数量
grep 'core id' /proc/cpuinfo | sort -u | wc -l
# 查看内存
free -h
cat /proc/meminfo

# 查看进程的详细信息
ps <pid>
ps -ef|grep nginx

cp – copy files

“copy”复制,此命令把文件从一个地方复制到另外一个地方。

1
2
# -r(recursive),copy directories recursively(递归复制目录)
cp -r source_file target_file

rm

移除命令。可以用来删除文件和目录。

1
2
# 删除文件夹必须带上 -rf -r表示recursive,-f表示force
rm -rf folder

tar

解压tgz文件(使用tar打完包后再以gzip命令压缩的文件)

  • -c Create a new archive containing the specified items. The long option form is –create.
  • -x : 从 tar 包中把文件提取出来
  • -z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解
  • -v : Produce verbose output. 显示详细信息
  • -f : 后面必须跟上要处理的文件名
1
2
3
4
5
tar czvf folder1.tar.gz folder1
tar zxvf folder1.tar.gz

# 查看压缩文件类容
tar -tf folder1.tar.gz

安装好 zsh 和 oh-my-zsh 后,打开文件 code ~/.zshrc plugins=(git z extract pyenv) extract 插件 文件解压用 x 全搞定。z 强大的目录自动跳转命令

history

此命令记录历史记录。它显示在终端中所执行过的所有命令的历史。

kill

1
kill -9 <pid>
1
2
3
4
5
6
# 覆盖内容
echo hello world!>a.txt
# 追加内容
echo hi >>a.txt

mkdir -p /opt/app/logs

文件操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cat a.txt
# 输出文件最后一小部分内容
tail a.txt
head -5 a.txt

cp -R test1 test1-bak
# 重命名与移动
mv a.txt /home/
mv test1 test2
#删除文件
rm a.txt
rm -rf #删除非空目录
rmdir # 只能删除空文件夹

ip

1
2
3
4
5
6
# ip 查看
ip addr
# 网络配置 yum install NetworkManager-tui
# 通过文本工具nmtui修改网络配置(RHEL7/CentOS7默认安装,前提需要开启NetworkManager.service才可以使用)
#  systemctl restart network
nmtui

网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活。默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态。

1
2
systemctl status NetworkManager.service
nmcli dev status

CentOS 查看和修改 PATH 环境变量

1
echo $PATH

export 命令

1
2
# 以添加mongodb server为列,通过echo $PATH查看配置结果
export PATH=/usr/local/mongodb/bin:$PATH

生效方法:立即生效 有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置 用户局限:仅对当前用户

修改 .bashrc 文件

1
2
3
vi ~/.bashrc 
#在最后一行添上:
export PATH=/usr/local/mongodb/bin:$PATH

生效方法

  • 关闭当前终端窗口,重新打开一个新终端窗口就能生效
  • 输入“source ~/.bashrc”命令,立即生效

有效期限:永久有效 用户局限:仅对当前用户

修改 profile 文件

1
2
3
vi /etc/profile
# /export PATH //找到设置PATH的行,追加
export PATH=/usr/local/mongodb/bin:$PATH

生效方法:系统重启 有效期限:永久有效 用户局限:对所有用户

修改environment文件

1
2
vi /etc/environment
# 在 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 中追加 ":/usr/local/mongodb/bin"

生效方法:系统重启 有效期限:永久有效 用户局限:对所有用户

nohup

nohup 指定命令在终端关闭后依然运行。

/dev/null(或称空设备)在类Unix系统中是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF[1]。

在程序员行话,尤其是 Unix 行话中,/dev/null 被称为比特桶或者黑洞。

1
nohup /test.sh 1>/dev/null 2>&1 &

这样命令启动起来的 test.sh 会一直在后台运行直到被 kill。

& 用于后台执行程序,但是关闭当前 session 程序也会结束,配合 nohup 就不会结束

2>/dev/null 意思就是把错误输出到“黑洞”

>/dev/null 2>&1 默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”

2>&1 >/dev/null 意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕

文件描述符 Linux系统预留可三个文件描述符:

  • 0 标准输入(stdin)
  • 1 标准输出(stdout)
  • 2 标准错误(stderr)

重定向 重定向的符号有两个:

  • > 先清空文件,然后再写入内容
  • >> 将重定向的内容追加到现有文件的尾部。

md5sum

md5sum 是计算和检验MD5信息签名。MD5 checksum 使用匹配验证文件的完整性。

1
md5sum filename.txt

uptime

此命令是用来查询linux系统负载的。系统平均负载(load averages)被定义在特定时间间隔内运行队列中的平均进程数。

如果一个进程满足以下条件,则其就会位于运行队列中:

  • 它没有在等待I/O操作的结果
  • 它没有主动进入等待状态(也就是没有调用’wait')
  • 没有被停止(例如:等待终止)