The interactive command line, also known as the shell, is a prominent mechanism used extensively by a wide range of software professionals (engineers, system administrators, data scientists, etc.). Shell customizations can therefore provide insight into the tasks they repeatedly perform, how well the standard environment supports those tasks, and ways in which the environment could be productively extended or modified. To characterize the patterns and complexities of command-line customization, we mined the collective knowledge of command-line users by analyzing more than 2.2 million shell alias definitions found on GitHub. Shell aliases allow command-line users to customize their environment by defining arbitrarily complex command substitutions. Using inductive coding methods, we found three types of aliases that each enable a number of customization practices: Shortcuts (for nicknaming commands, abbreviating subcommands, and bookmarking locations), Modifications (for substituting commands, overriding defaults, colorizing output, and elevating privilege), and Scripts (for transforming data and chaining subcommands). We conjecture that identifying common customization practices can point to particular usability issues within command-line programs, and that a deeper understanding of these practices can support researchers and tool developers in designing better user experiences. In addition to our analysis, we provide an extensive reproducibility package in the form of a curated dataset together with well-documented computational notebooks enabling further knowledge discovery and a basis for learning approaches to improve command-line workflows.
翻译:互动指挥线(也称为空壳)是广泛各类软件专业人员(工程师、系统管理员、数据科学家等)广泛使用的一个突出机制。 因此,壳牌定制能够提供对其反复执行的任务的洞察力,标准环境支持这些任务的程度,以及环境可以有效扩展或修改的方式。 为描述指令线定制的模式和复杂性,我们通过分析在 GitHub 上发现的220万个贝贝别定义来挖掘指挥线用户的集体知识。 Shell 别名允许指令线用户通过任意地定义复杂的命令替换来定制环境。我们使用缩影编码方法,发现了三种别名,每种别名都能够带来若干定制做法:捷径(指刻命名命令、缩略出子命令和书签位置)、修改(指替换命令、压倒默认、调输出和提升特权)以及Scripitt(用于改变数据和链条子指令替换)。我们预测,共同的定制做法可以指向特定用户的精度,在更深入的服务器上,我们可以提供更深入的计算方法,在更深入的计算模型中,我们可以提供更精确地理解我们更精确的学习工具式的学习方法。